login  Naam:   Wachtwoord: 
Registreer je!
 Forum

verdelen van query resultaten over meerdere pagina's (Opgelost)

Offline fsasfsas - 03/10/2008 12:08
Avatar van fsasfsasNieuw lid Na het volgen van de tutorial
Pagina-navigatie met PHP en MySQL
werkt alles prima, zolang ik de hele tabel uit mysql selecteer
ofwel zoals in de tutorial staat
$offset = $huidige_pagina * $items_per_pagina;
$res2 = mysql_query("SELECT * FROM tabel ORDER BY id DESC LIMIT ". $offset.",".$items_per_pagina) or die("res2:". mysql_error());

Ik wil echter niet de hele table maar slechts een deel er van, dus met WHERE. Als ik dit echter toevoeg aan de query gaat de eerste pagina wel goed, maar zodra ik ga navigeren wordt er (voer als ik het begrijp) een nieuwe query naar de database gezonden en dat gaat niet goed de hele tabel wordt weer geselecteerd ipv alleen de rijen die voldoen aan de WHERE
Ik weet niet of ik het probleem duidelijk uitleg?

Ik ben een php-beginner dus weet niet op welke manier ik dit op moet lossen en zou graag hulp hebben.



6 antwoorden

Gesponsorde links
Offline Kr4nKz1n - 03/10/2008 12:51 (laatste wijziging 03/10/2008 12:51)
Avatar van Kr4nKz1n Onbekend
  1. $iPage = Value(2) ? Value(2) - 1 : 0;
  2. $iBegin = 20 * $iPage;
  3. $sPages = "";
  4. for($iPages = 1; $iPages <= ceil($qCountGuestbook / 20); $iPages++)
  5. {
  6. $sPages .= ($iPages == ($iPage+1)) ? " <b>".$iPages."</b> ":" <a href=\"/index/".$iPages."\" title=\"Pagina: ".$iPages."\">".$iPages."</a> ";
  7. }


Gekopieerd uit een oud systeem van mij. Hij kan iets netter miss. maar het werkt.

Value(2) is de huidige pagina.
$qCountGuestbook = totaal aantal berichten
20 is het aantal berichten per pagina

LIMIT ".$iBegin.",20
Offline fsasfsas - 03/10/2008 16:34
Avatar van fsasfsas Nieuw lid Ik begrijp niet zo goed hoe ik jouw code in moet bouwen (sorry...)

Zover ik kan zien (maar ik weet er niet zo veel van) is het deel achter LIMIT hetzelfde als de code die jij gebruikt (andere namen maar dat maakt niet uit). De query zelf is dus niet anders. Blijf ik dan niet hetzelfde probleem houden (namelijk dat het uitgaat van de hele database en niet van de selectie?

Offline marten - 03/10/2008 16:35
Avatar van marten Beheerder http://www.site...P_en_MySQL

Bekijk deze tutorial maar eens. Dan kom je er wel uit.
Offline fsasfsas - 03/10/2008 16:57 (laatste wijziging 03/10/2008 17:33)
Avatar van fsasfsas Nieuw lid Dag marten

Mijn code is juist gebaseerd op die tutorial...
En dat werkt prima, zolang ik de hele database neem. Als ik echter met WHERE ga werken, neemt ie voor de eertste pagina de goede selectie maar zodra ik ga navigeren gaat de volgende query mis.

Ik heb de hele tutorial vrijwel letterlijk overgenomen, op wat variabelennamen na.

Ik heb dit deel (uit de tutorial)
  1. $offset = $huidige_pagina * $items_per_pagina;
  2. $res2 = mysql_query("SELECT * FROM tabel ORDER BY id DESC LIMIT ".
  3. $offset.",".$items_per_pagina)
  4. or die("res2:". mysql_error());


gewijzigd in

  1. $result = mysql_query("SELECT * FROM zegels WHERE keyw LIKE '%$zoekinput%' OR zegelnr LIKE '%$zoekinput%' ORDER BY land, zegelnr LIMIT ".$offset.",".$items_per_pagina)
  2. or die("result:". mysql_error());


Nogmaals, zolang ik de WHERE weglaat gaat het prima, maar als die er in komt gaat het mis.

Offline marten - 03/10/2008 16:59
Avatar van marten Beheerder Zet je variabelen eens buiten de quotes

  1. LIKE '%" .$zoekinput. "%'
Offline fsasfsas - 03/10/2008 17:35
Avatar van fsasfsas Nieuw lid Dag marten

Ik heb het inmiddels gevonden! Het probleem was niet de query en ook niet de navigatie, maar inderdaad de zoekterm.
Ik heb deze nu als extra variabele meegegeven in de navigatie en nu werkt het wel

met heel veel dank voor het meedenken!

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.372s