vorige volgende id selecteren

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.260
Hallo,

Ik probeer de volgende rij uit tabel te halen met:

HTML:
<a href="test.php?id='.$id.'">volgende</a>


PHP:
 $id = $_GET['id'];
	    $id = ($id+1);


$query_nieuws = ("SELECT *
 FROM `test` WHERE id = '$id' ORDER BY id DESC LIMIT 1
   ");

Maar nu komt het ook voor dat een id er niet meer is bijv. id 1 , 2 , 4 (id 3 bestaat niet meer),
en wat als het de laatste of eerste id betreft.
Er moet ook nog een vorige komen
HTML:
<a href="test.php?id='.$id.'">vorige</a>

iemand de oplossing?
 
Je zou kunnen bekijken wat de eerstvolgende beschikbare ID is met een query.
Ik neem aan dat je weet op welke id je momenteel zit?

PHP:
<?
$querynext = mysql_query("SELECT id FROM test WHERE id > '".mysql_real_escape_string($_GET['id'])."' ORDER BY id LIMIT 0,1"); //mysql_real_escape_string altijd gebruiken voor de veiligheid
$datanext = mysql_fetch_assoc($querynext);

$queryprev = mysql_query("SELECT id FROM test WHERE id < '".mysql_real_escape_string($_GET['id'])."' ORDER BY id DESC LIMIT 0,1"); //mysql_real_escape_string altijd gebruiken voor de veiligheid
$dataprev = mysql_fetch_assoc($queryprev);

?>
<a href="test.php?id='.$datanext['id'].'">volgende</a>
<a href="test.php?id='.$dataprev['id'].'">vorige</a>

Ik heb het niet getest, dus kan niet met 100% zekerheid zeggen dat hij foutloos is, maar dit zou je wel op de goede weg kunnen helpen.
 
@Nitroserve:
- Waarom oude functies gebruiken van mysql_query etc?
- Waarom <? gebruiken?

Een moie query die je kan gebruiken is:
Code:
	select * from foo
where (
        id = IFNULL((select min(id) from foo where id > 4),0)
        or id = IFNULL((select max(id) from foo where id < 4),0)
      )
 
Mysqli is inderdaad beter.
<? Zou geen problemen moeten geven, uiteraard kan <?php ook.

Het was slechts een voorbeeld om de TS op weg te helpen, uiteraard kan het anders/beter(?), er zijn meer wegen die naar Rome leiden.
Ik denk dat mijn queries makkelijker te begrijpen zijn en kunnen direct aangepast worden naar de eigen situatie.

Ik denk dat de TS nu genoeg duwtjes in de goede richting heeft om zijn uitdaging op te lossen.
 
Laatst bewerkt:
Bedankt voor jullie reacties,


Aan id kom ik altijd via nieuws.php?id=16 enz.

Ik heb het omgezet naar Mysql Improved
PHP:
$query_nieuws_next = ("SELECT * FROM `$tabelnaam` WHERE id > '".($_GET['id'])."' ORDER BY id LIMIT 0,1"); //mysql_real_escape_string altijd gebruiken voor de veiligheid
$datanext = $mysqli->query($query_nieuws_next);
 
$query_nieuws_prev  = ("SELECT * FROM `$tabelnaam` WHERE id < '".($_GET['id'])."' ORDER BY id DESC LIMIT 0,1"); //mysql_real_escape_string altijd gebruiken voor de veiligheid
$dataprev = $mysqli->query($query_nieuws_prev);

mysql_real_escape_string heb ik er ff uitgelaten i.v.m foutmeldingen


Code:
<a href="nieuws.php?id=<?= $datanext['id'] ?>">volgende</a>
<a href="nieuws.php?id=<?= $dataprev['id']?>">vorige</a>



PHP:
$content = $row['content'];
	$title = $row['title'];

Hoe kom ik nou aan output met 2x een query?
echo content en title
 
Hier heb je geen twee queries voor nodig, dit kan ook in 1 enkele query zoals ik liet zien.
 
De 2 queries die ik beschreef zijn alleen maar om de volgende en vorige te berekenen.
De content en title van de huidige pagina, daar kan je de reeds bestaande query voor gebruiken.
 
Of mijn query...
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan