Ik wil graag een LIMIT van max 50 op mijn query zetten, maar ik heb er al een limit op staan.
<?
SELECT *
FROM $table
WHERE van = '".$_SESSION['UID']."'
ORDER BY datum DESC
LIMIT $start, $berichten_per_pagina";
?>
Kan ik deze query nog gebruiken daarvoor?
Moet er nog een query bijkomen?
Moet de query grondig worden aangepakt?
Ik denk dat je het met 2 query's moet doen. wat je kan doen is eerst de limit uitvoeren en dan met een while het gaat uitlezen en zeggen wat wel en niet op de pagina moet staan. maar dat is wel een beetje energie verspilling. of je kan ook met php aangeven dat het id niet mer verder mag. dus de berichten_per_pagina gaan aanpassen als het boven de 50 komt
Hmm, wat je zou kunnen doen is de gebruiker "voor de gek houden".
Ervan uitgaande dat je 10 berichten per pagina's gebruikt, kan je bijvoorbeeld aangeven dat als $start > dan 41, dus dat die in dat geval over de 50 berichten gaat komen. Dat je dan $start de waarde 41 geeft. Dan kan je nooit verder terug kijken dan 50 berichten.
Met onderstaande code kan de gebruiker nooit verder komen dan bericht 50 :)
<?php
// Heb mijn uitleg een beetje verwerkt in het script en aangepast, nu moet het universeel zijn
if($start > ($max_aantal - $berichten_per_pagina +1){
$start = $max_aantal - $berichten_per_pagina +1;
}
//dan hier je query
?>
[edit]
In jouw geval geeft dit:
<?
if($start > (50-5+1){//46
$start=46;
}
?>
voor je query betekend dat 5 vanaf 46, dus 46, 47, 48, 49, 50
[/edit]
[edit]
Nog een edit
Het voordeel van deze methode is dat het gewoon blijft werken wanneer je het aantal berichten per pagina wijzigt, of wanneer je het maximum aantal berichten veranderd.
[/edit]
Ik heb het nu zo:
<?
$max = 50;
if($start > ($max - $berichten_per_pagina +1))
{
$start = $max - $berichten_per_pagina +1;
}
$page_sent = "
SELECT *
FROM $table
WHERE van = '".$_SESSION['UID']."'
ORDER BY datum DESC
LIMIT $start, $berichten_per_pagina";
?>
Tevens heb ik 75 berichten in de db om mee te testen.
Ik blijf ze gewoon allemaal zien :(
echo $start dan eens, want dan gaat er wel ergens wat mis. (echo hem eens in de regel voor je query)
Ik zie zo geen fout, maar ik heb het hier getest met een query, en het werkt mooi..