[PHP/MySQL] volgende en vorige id uit database..

Pagina: 1
Acties:
  • 139 views sinds 30-01-2008
  • Reageer

  • Quibus
  • Registratie: November 2000
  • Laatst online: 12-09 20:25
Ik heb een tabel met allemaal berichten:
[nieuwstabel]
id | datum | titel | bericht

Ik heb een PHP script gemaakt dat één bericht uit deze tabel laat zien (WHERE id=&id). Onder dit bericht heb ik een link vorige voor het vorige bericht, en een link volgende voor het volgende bericht. Deze heb ik gemaakt doormiddel van:
PHP:
1
2
3
4
5
<?
$id = $id+1;
//of
$id = $id-1;
?>

(tevens checkte het script of $id-1=0 en $id+1<=$maximale_id)

Dit leek prachtig te werken, maaaar als ik dus een rij uit de tabel verwijder, waardoor ook een id weg is geeft hij dus uit de database $id=0 (Ik bedoel dus als ik bericht met id 5 verwijder en van id=4 naar bericht 5 ga, dan geeft php $id=0 trug). Is er een functie in PHP/MySQL die kijkt wat de volgende/vorige rij uit de tabel is, waardoor ik de goede $id uit de database kan halen? Volgens mij is de manier hoe ik het nu uit de database haal zowieso nogal omslachtig.

Ik hoop dat jullie mijn vraag begrijpen maar ik heb het volste vertrouwen daarin ;)

Verwijderd

ik zou even de volgende functies bekijken:

next(); en prev();

Hier moet het wel mee lukken.

succes

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

van SELECT Syntax:
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments. If two arguments are given, the first specifies the offset of the first row to return, the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):
mysql> select * from table LIMIT 5,10; # Retrieve rows 6-15

If one argument is given, it indicates the maximum number of rows to return:
mysql> select * from table LIMIT 5; # Retrieve first 5 rows

In other words, LIMIT n is equivalent to LIMIT 0,n.
Als je de offset en de # of rows to return goed instelt ben je klaar ...

  • Quibus
  • Registratie: November 2000
  • Laatst online: 12-09 20:25
Ja maar ik wil dus maar een bericht uit de db halen. En als de gebruiker eventueel wilt, naar het volgende bericht gaan dmv de link volgende (of natuurlijk naar het vorige door op de link vorige te klikken)
PHP:
1
2
3
4
5
6
<?
$query = "SELECT * FROM $nieuws_tabel WHERE id = $id"; 
$resultaat = mysql_query($query) or die ('Kan query niet uitvoeren');
 // Haal de waarde van $id uit de database 
list ($id, $datum, $titel, $bericht) = mysql_fetch_row($resultaat);
?>


Hierdoor kan ik dus niet door een array "bladeren" met next() enz.
Op zaterdag 26 januari 2002 21:33 schreef TheRookie het volgende:
...
Dit heb ik dus niet nodig aangezien ik maar één bericht uit de database haal.
Moet ik dit soms met een while loop ofzo doen. Zoiets van
PHP:
1
2
3
4
5
6
7
8
9
10
<?
if(!$result){
$id++;
function haalvolgende/vorigeberichtuitdb()
  { 
  //mysql gedoe hier
  return $result;
  }
}
?>

Dit verhoogt echter de waarde van $id alleen maar. Moet ik dan 2 waardes meegeven, met de link zodat PHP weet of ik een vorig bericht of een volgend bericht wil laten zien en dan 2 while loops? Volgens mij is dit allemaal te omslachtig. Of moet ik dit anders aanpakken, en het hele script anders schrijven?

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Probeer eens de volgende query:

SELECT * FROM $nieuws_tabel WHERE id > $id LIMIT 1

Zo krijg je de eerste entry met een id groter dan $id

  • Quibus
  • Registratie: November 2000
  • Laatst online: 12-09 20:25
Op zaterdag 26 januari 2002 23:09 schreef SWfreak het volgende:
Probeer eens de volgende query:

SELECT * FROM $nieuws_tabel WHERE id > $id LIMIT 1

Zo krijg je de eerste entry met een id groter dan $id
|:( dat ik daar nog niet aan gedacht heb. Het zal nu wel lukken, thnx
Pagina: 1