Vorige volgende naar andere artikelen

Status
Niet open voor verdere reacties.

bhofkens

Gebruiker
Lid geworden
19 jan 2008
Berichten
228
Misschien is er iemand die me kan helpen met het volgende:

Ik heb een blog gemaakt: http://www.gobv.nl/Blog-reacties&Titel=!GO feliciteert Johan en VDL

Nu wilde ik een vorige artikel en volgende artikel knopjes plaatsen maar het is zo dat de artikels in de MySQL staan en ik weet niet hoe ik het een artikel terug kan zetten of een artikel naar voren. Ik heb nog geen specifieke code. Oh ja vorige is niet het zelfde als een stap terug.
 
Laatst bewerkt:
waarschijnlijk heb je een id nummer. met select ... from ... where id=id-1 kun je dan de volgende ophalen denk ik en verder.
 
Hoe ziet je database structuur er uit?

Aan je URL te zien maak je geen gebruik van ID's
 
De structuur van het tabel is:
[SQL]
CREATE TABLE IF NOT EXISTS `blog_items` (
`item_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`Archief` varchar(255) NOT NULL,
`Titel` varchar(255) NOT NULL,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`Tekst` text NOT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
[/SQL]
 
Laatst bewerkt door een moderator:
Je voert een query uit om het item op te vragen, die geeft een item_id (Hoewel ik er zelf geen TINYINT voor zou gebruiken) terug.

Gebruik je die ID in onderstaande query dan heb je het volgende item :)
Als er geen volgende is dan krijg je geen resultaat, wat je dus kunt afvangen via PHP om dan geen link te tonen.
PHP:
$query = '
SELECT
    Titel
FROM
    blog_items
WHERE
    item_id = '. ($row['item_id'] + 1);

Een meer logische manier is zoeken op datum
PHP:
$query = '
SELECT
    Titel
FROM
    blog_items
WHERE
    date > \''. $row['date'] .'\'
LIMIT 1';
Ik haal enkel de kolom "Titel" op omdat ik vermoed dat je die voor je query gebruikt om het item op te vragen.
 
Laatst bewerkt:
Ik heb de tweede oplossing gebruikt en volgende werkt goed. Nu heb ik de volgende code gebruik voor vorige maar die werkt niet echt:

[SQL]$queryvr = mysql_query("SELECT Titel FROM blog_items WHERE date < '" . $result2['date'] . "' LIMIT 1");[/SQL]
 
In welke zin "werkt ie niet echt"? Krijg je een foutmelding?
Zo niet, probeer dit eens:
PHP:
$queryvr = mysql_query("SELECT Titel FROM blog_items WHERE date < '" . $result2['date'] . "' LIMIT 1") or die(mysql_error());
 
hij gaat niet naar de vorige maar naar de eerste item em er zit er een tussen. Er zit ook een tijd op de blog-items kan dat daar mee te maken hebben?


Volgende werkt wel perfect.
 
Laatst bewerkt:
Dat komt waarschijnlijk omdat een ORDER BY date ASC mist, in beide queries overigens :)
 
Bedankt Tha Devil.

Het werkt met deze code:

PHP:
//vorige
$queryvr = mysql_query("SELECT Titel FROM blog_items WHERE date < '" . $result2['date'] . "' ORDER BY date DESC LIMIT 1") or die(mysql_error('werkt niet'));;

volgende de ASC gebruikt bij orderen
 
Ah ja, dat moet natuurlijk wisselen :)

Overigens moet je niks meegeven aan mysql_error() (Tenzij het een resource is)
Je krijgt een melding vanaf de database terug, dus geen eigen melding :)
Code:
string mysql_error ([ resource $link_identifier = NULL ] )
Returns the error text from the last MySQL function. Errors coming back from the MySQL database backend no longer issue warnings.
http://nl.php.net/mysql_error
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan