dubbele LIMIT op een query?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Erik Rijk

Erik Rijk

17/10/2006 19:42:00
Quote Anchor link
Beste,

Ik wil graag een LIMIT van max 50 op mijn query zetten, maar ik heb er al een limit op staan.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
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
 
PHP hulp

PHP hulp

18/11/2024 18:45:23
 
Martijn B

Martijn B

17/10/2006 19:47:00
Quote Anchor link
?

Je kunt toch simpel weg die LIMIT ... veranderden if...else...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$sQuery
= 'SELECT *
FROM $table
WHERE van = '".$_SESSION['UID']."'
ORDER BY datum DESC'
;

if(...)
{

  $sQuery .= 'LIMIT $start, $berichten_per_pagina';
}

else
{
  $sQuery .= 'LIMIT 50';
}

?>


Of begrijp ik je verkeerd...
 
Han eev

Han eev

17/10/2006 19:49:00
Quote Anchor link
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
 
Robert Deiman

Robert Deiman

17/10/2006 19:49:00
Quote Anchor link
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.

Volgens mij kan dat niet meer in SQL.
 
Erik Rijk

Erik Rijk

17/10/2006 19:50:00
Quote Anchor link
@ Martijn!,

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 ;)
 
Martijn B

Martijn B

17/10/2006 19:53:00
Quote Anchor link
Voor pagina nummering moet je toch altijd het aantal records tellen als je deze nu eens afkapt op 50.

if( aantal > 50 )
aantal = 50;
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Robert Deiman

Robert Deiman

17/10/2006 19:54:00
Quote Anchor link
Met onderstaande code kan de gebruiker nooit verder komen dan bericht 50 :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>

Edit:

In jouw geval geeft dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
if($start > (50-5+1){//46
  $start=46;
  }

 ?>


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.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Erik Rijk

Erik Rijk

17/10/2006 20:04:00
Quote Anchor link
@ Robert,

Ik heb het nu zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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"
;
?>

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
 
Robert Deiman

Robert Deiman

17/10/2006 20:06:00
Quote Anchor link
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..
 
Erik Rijk

Erik Rijk

17/10/2006 20:09:00
Quote Anchor link
op pagina 1 is start 0;
op pagina 2 is start 5;
op pagina 3 is start 10;
enz enz.
 
Robert Deiman

Robert Deiman

17/10/2006 20:11:00
Quote Anchor link
Maar ik bedoel op het moment dat je pagina 11 aanroept, (dan zou start als het goed is naar 46 terug moeten worden gezet)
 
Erik Rijk

Erik Rijk

17/10/2006 20:18:00
Quote Anchor link
als ik naar pagina 11 ga, is $start gewoon 50.
 
Robert Deiman

Robert Deiman

17/10/2006 20:20:00
Quote Anchor link
en als je naar pagina 12 gaat?
 
Erik Rijk

Erik Rijk

17/10/2006 20:21:00
Quote Anchor link
55 :'(
 
Steff   an

Steff an

17/10/2006 20:23:00
Quote Anchor link
kan je niet iets van

if(start * berichtenperpagina <= 50)
//weergeven
else
stoppen?


Edit:
Ik moet beter lezen
Gewijzigd op 01/01/1970 01:00:00 door Steff an
 
Robert Deiman

Robert Deiman

17/10/2006 20:27:00
Quote Anchor link
Steffan schreef op 17.10.2006 20:23:
kan je niet iets van

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.
 
Jan Koehoorn

Jan Koehoorn

17/10/2006 21:08:00
Quote Anchor link
Ik weet niet of het al opgelost is, maar als de url meer geeft dan toegestaan zou ik gewoon iets doen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    if (isset ($_GET['start']) && $_GET['start'] > 50) {
        header ('Location: http://www.site.nl/pagina.php?start=50');
        exit ();
    }

?>
 
Erik Rijk

Erik Rijk

17/10/2006 21:14:00
Quote Anchor link
Hoi Jan,

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);
 
Jan Koehoorn

Jan Koehoorn

17/10/2006 21:20:00
Quote Anchor link
Hij retourneert 'totaal' in 1 record, dus hij blijft altijd onder de limiet van 50.
 
Erik Rijk

Erik Rijk

17/10/2006 21:37:00
Quote Anchor link
Uhm,

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
 
Jan Koehoorn

Jan Koehoorn

17/10/2006 21:39:00
Quote Anchor link
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.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.