dubbele LIMIT op een query?
Ik wil graag een LIMIT van max 50 op mijn query zetten, maar ik heb er al een limit op staan.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
SELECT *
FROM $table
WHERE van = '".$_SESSION['UID']."'
ORDER BY datum DESC
LIMIT $start, $berichten_per_pagina";
?>
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?
Mvg,
Erik
Je kunt toch simpel weg die LIMIT ... veranderden if...else...
Code (php)
Of begrijp ik je verkeerd...
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
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.
Volgens mij kan dat niet meer in SQL.
Je begrijpt me indd niet goed.
$start = 0;
$berichten_per_pagina = 5;
Dit betekend dat er 5 berichten per pagina komen....
maar ik wil wel weer een max van 10 pagina's hebben.
Hoe doe ik dat ;)
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?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
?>
// 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:
voor je query betekend dat 5 vanaf 46, dus 46, 47, 48, 49, 50
In jouw geval geeft dit:
voor je query betekend dat 5 vanaf 46, dus 46, 47, 48, 49, 50
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.
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.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Ik heb het nu zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
$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";
?>
$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 :(
Gewijzigd op 01/01/1970 01:00:00 door Erik Rijk
Ik zie zo geen fout, maar ik heb het hier getest met een query, en het werkt mooi..
op pagina 2 is start 5;
op pagina 3 is start 10;
enz enz.
Maar ik bedoel op het moment dat je pagina 11 aanroept, (dan zou start als het goed is naar 46 terug moeten worden gezet)
als ik naar pagina 11 ga, is $start gewoon 50.
en als je naar pagina 12 gaat?
55 :'(
if(start * berichtenperpagina <= 50)
//weergeven
else
stoppen?
Edit:
Ik moet beter lezen
Gewijzigd op 01/01/1970 01:00:00 door Steff an
Steffan schreef op 17.10.2006 20:23:
kan je niet iets van
if(start * berichtenperpagina <= 50)
//weergeven
else
stoppen?
if(start * berichtenperpagina <= 50)
//weergeven
else
stoppen?
Edit:
Ik moet beter lezen
Ik sprak Erik net al, het werkt wel alleen hij heeft nu nog teveel pagina's staan waar je uit kan kiezen, zal die dus nog even af moeten vangen. (in de url krijg je wel 55 enzo te zien, maar die geeft die dan niet weer in het script, omdat in het script $start wel verkleind wordt naar 46.
Het was al opgelost ( nog 1 kleine dingetje ).
mijn count query telt alle berichten, maar ik wil er een limit van 50 hebben.
als ik 60 berichten heb, telt de query er ook 60....
Hoe zet ik een limit op een count query?
Ik ben aan het knutselen geweest maar snap er weinig van :/
$totaal_sent = "SELECT COUNT(PID) AS totaal FROM $table WHERE van = ".$_SESSION['UID']." ORDER BY PID DESC LIMIT 0,50";
$sent = mysql_fetch_array($totaal_sent_res);
Hij retourneert 'totaal' in 1 record, dus hij blijft altijd onder de limiet van 50.
Dat snap ik niet jan.
Ik heb nu 60 records in de database. Deze query laat ook zien dat ik er 60 heb, maar ik wil er maar maximaal 50 zien.
Als ik er 14 heb wil ik er 14 zien
als ik er 51 heb wil ik er 50 zien.
duidelijk?
Mvg,
Erik
Als je SELECT COUNT(PID) AS totaal doet, krijg je 1 record terug met daarin de variabele $row['totaal'] die de waarde 60 heeft. Je denkfout is dat je denkt dat je LIMIT met het getal 60 te maken heeft. Maar je query heeft maar 1 resultaat, dus blijft hij altijd onder de 50.