login  Naam:   Wachtwoord: 
Registreer je!
 Forum

rare output?

Offline Button - 01/11/2004 08:50 (laatste wijziging 01/11/2004 10:57)
Avatar van ButtonPHP ver gevorderde na de vorige topic die ik poste met een mysql fout ben ik tot de conclusie gekomen dat er nog heel wat fouten in zaten, dus heb ik een nieuw geschreven maar toch met een paar gelijkenissen. Nu denk in dit script denk ik dat wel alles klopt, maar toch moet ik iets "klein" over het hoofd hebben gezien de output is helemaal anders dan verwacht; hier het script:

  1. <?php
  2.  
  3. include("connect_inc.php");
  4.  
  5. if(!empty($_GET)){
  6.  
  7. $perpagina= "10";
  8.  
  9.  
  10. $pagina= $_GET["pagina"];
  11.  
  12. $eerste=($pagina-1)*$perpagina;
  13.  
  14. $tweede=($pagina * $perpagina)-1;
  15.  
  16. $result= mysql_query("SELECT * FROM nummering LIMIT $eerste,$tweede") or die(mysql_error());
  17.  
  18.  
  19. while (list($id, $naam) = mysql_fetch_row($result)){
  20. echo("$id $naam <br>");
  21.  
  22. }
  23.  
  24. }else{
  25.  
  26. $q=mysql_query("SELECT * FROM nummering");
  27. $resultaat= mysql_num_rows($q);
  28.  
  29.  
  30. if($resultaat<=10){
  31.  
  32. echo("<a href=\"ophalen.php?pagina=". 1 ."\">1</a><p>");
  33.  
  34. }else{
  35.  
  36. $perpagina= "10";
  37.  
  38. $aantalpaginas= $resultaat / $perpagina;
  39.  
  40. $aantalpaginas= ceil($aantalpaginas); //het definitieve aantal pagina's wordt hier berekend.
  41.  
  42. for($teller=1;$teller<=$aantalpaginas;$teller++){
  43.  
  44. echo("<a href=\"ophalen.php?pagina=". $teller ."\">$teller</a><p>");
  45. }
  46.  
  47.  
  48.  
  49. }
  50. }
  51. ?>


in mijn database staan 31 test berichtjes...
nu dan worden er 4 pagina's aangemaakt... wat allemaal nog klopt.
maar dan:

bij pagina 1: krijg ik testbericht 1 t.e.m. 9 (wat normaal 10 moet zijn niet? want limit begint toch al te tellen vanaf 0)
bij pagina 2: krijg ik testbericht 11 t.e.m. 29 (wat zeker niet klopt)
bij pagina 3 krijg ik testbericht 21 t.e.m. 31
bij pagina 4: krijg ik testbericht 31

hoe komt dit ? allemaal bedankt

ButtonMan

PS: ik beweer niet dat hier geen fouten in zitten hoor, maar nu is het mij gewoon te doen om die output.

7 antwoorden

Gesponsorde links
Offline bosgroen - 01/11/2004 12:17
Avatar van bosgroen Gouden medaille

PHP interesse
$perpagina= "10";
$pagina= $_GET["pagina"];
$eerste=($pagina-1)*$perpagina;
$tweede=($pagina * $perpagina)-1;


moet worden:
$perpagina= "10";
$pagina= $_GET["pagina"];
$eerste=($pagina-1)*$perpagina;
$tweede=$eerste+10;

uw fout zat dus in de berekening van $tweede; bij pagina1 krijg je ongeveer 10 berichten, bij pagina2 20 bij pagina3 zou je er dertig gekregen hebben, maar er zaten er blijkbaar niet zoveel in jouw database. de berekening van $eerste was wel goed.
Offline Thomas - 01/11/2004 12:55
Avatar van Thomas Moderator Euh, $tweede is toch het aantal items - dit moet altijd $perpagina zijn !!!
Offline Button - 01/11/2004 18:39
Avatar van Button PHP ver gevorderde @bosgroen: het werkt nog altijd niet...:'(

@FangorN: ik snap niet echt wat je bedoelt? wat moet ik aanpassen?
Offline Wijnand - 01/11/2004 18:42
Avatar van Wijnand Moderator misschien is het een idee om even te kijken hier bij de scripts onder navigatie. Daar staat zo'n berekening ook opgeschreven en die werken over het algemeen wel aardig. Dus als je het daarvan af haalt dan zou het moeten werken.
Offline Button - 01/11/2004 18:52
Avatar van Button PHP ver gevorderde mwja, maar ik zou toch graag weten wat er met mijn script fout is dus alle reacties nog welkom (toch bedankt hoor Wijnand, no offens) 
Offline Wijnand - 01/11/2004 19:01 (laatste wijziging 01/11/2004 19:01)
Avatar van Wijnand Moderator wat mij altijd helpt is achter elke zin te zetten wat het doet.'


maar goed.. nu het probleem

  1. <?php
  2. $pagina= $_GET["pagina"];
  3.  
  4. $eerste=($pagina-1)*$perpagina;
  5.  
  6. $tweede=($pagina * $perpagina)-1;
  7. ?>


dit heb jij... maar mijn eerste vraag is "waar staat hoeveel rijen je hebt" want dat getal heb je nodig. Jij hebt zeg maar 31 rijen.

dan doe je het aantal rijen / (gedeelte door) het maximale aantal. Dus 31 / 10. Dan weet je dus dat je 4 pagina's hebt.

Daarna wil je ook weten welke pagina's er allemaal weergegeven moeten worden. dat doe je door de pagina waar je op staat * de max te doen, min de max. Dus zeg maar... (2 * 10) - 10


nou ok.. nu dan krijg je dus zeg maar dit:

  1. <?php
  2. // eerst query om het totaal aantal rijen te krijgen en dat bv in $totaal gooien
  3.  
  4. $perpagina= 10;
  5. $pagina= $_GET["pagina"];
  6. $paginas=($totaal / $perpagina);
  7. $weergave=($pagina * $perpagina) - $perpagina;
  8.  
  9. $result= mysql_query("SELECT * FROM nummering LIMIT $weergave,$pagina")
  10. ?>



snap je?
Offline Button - 01/11/2004 19:04 (laatste wijziging 01/11/2004 19:06)
Avatar van Button PHP ver gevorderde het is gelukt. Dank je iedereen!!!(bosgroen, Wijnand, Fangorn)
Maar in het vooral Fangorn!!! ineens kwam het in me op wat je bedoelde. ik had "LIMIT" duidelijk verkeerd begrepen, snap ik hem goed!

dank je (allemaal)...

edit: voor de volledigheid -> @Wijnand: het aantal rijen is/wordt berekent in $resultaat toch bedankt 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.201s