anoniem Geplaatst: 6 december 2003 Delen Geplaatst: 6 december 2003 Hey, ik heb een gastenboek gemaakt(nee, niet die van C!T :D ), en heb er een vorige | nummering | volgende in gebouwd. Die werkt niet helemaal. In het begin(in de index) krijg ik ze allemaal te zien en als ik op een nummer, vorige of volgende klik blijven ze ook allemaal staan. Er zit nog geen invoer of verwijder pagina bij, ik voer ze nu nog gewoon in met PHPMyAdmin omdat het nu alleen nog maar erom gaat dat het werkt. Dit is nu de code: [code:1:0a2c90bad0] <?php mysql_connect('localhost','username','pass');//maak verbinding mysql_select_db('db');//selecteer database $sql = "SELECT * FROM berichten";//maak sql query $resultaat = mysql_query($sql);//voer query uit $limiet = 10; // Stel max. aantal resultaten per pagina in $deze_pagina="index.php"; //defineer pagina-naam of gebruik $PHP_SELF $aantal = mysql_num_rows($resultaat); //tel aantal resultaten vd zoekopdracht //Begin vorige | nummering | volgende $paginas=intval($aantal/$limiet); // bereken aantal pagina's met resultaten if ($aantal%$limiet) //als aantal veelvoud is van de limiet, 1 pagina erbij op tellen { $paginas++; } if ($aantal !="0") { if (empty($_GET["offset"])) { $offset=0; } else { $offset = $_GET["offset"]; } //begin while loop om gegevens te laten zien while($record = mysql_fetch_object($resultaat)){ echo "<center>";//begin met centreren echo "<table border='1' bordercolor='green' cellpadding='1' cellspacing='1' width='80%'>";//begin tabel echo "<tr width='70%'><td width='10%'>Bericht ID: </td><td width='60%'>$record->bericht_id</td></tr>";//display bericht_id echo "<tr width='70%'><td width='10%'>Naam: </td><td width='60%'>$record->username</td></tr>";//display naam echo "<tr width='70%'><td width='10%'>Email: </td><td width='60%'><A HREF='MAILTO:$record->email'>$record->email</A></td></tr>";//display email met mailto echo "<tr width='70%'><td width='10%'>Website: </td><td width='60%'><A HREF='$record->url'>$record->url</A></td></tr>";//display website met url echo "<tr width='70%'><td width='10%'>Datum: </td><td width='60%'>$record->datum</td></tr>";//display datum echo "<tr width='70%'><td width='10%'>Bericht: </td><td width='60%' height='5%'>$record->bericht</td></tr>";//display bericht echo "</table>";//einde tabel echo "</center>";//einde centreren echo "<br>"; } //einde while loop // Hieronder wordt Vorige | nummering | Volgende gecreëerd if ($aantal > $limiet) { if ($offset!=0) // indien niet eerste pagina, druk "Vorige" af { $vorige_offset=$offset-$limiet; print "<a href=\"$deze_pagina?offset=$vorige_offset\">Vorige</a> |\n"; } for ($i=1;$i<=$paginas;$i++) // de nummering van de pagina's wordt hier afgedrukt { $nieuwe_offset=$limiet*($i-1); if ($nieuwe_offset==$offset) // indien huidige pagina, dan vet afdrukken { print "<a href=\"$deze_pagina?offset=$nieuwe_offset\"><b>$i</b></a> |\n"; } else { print "<a href=\"$deze_pagina?offset=$nieuwe_offset\">$i</a> |\n"; } } if (!(round($offset/$limiet)==$paginas-1) && $paginas!=1) //volgende afdrukken (behalve indien laatste pagina of bij maar 1 pagina) { $nieuwe_offset=$offset+$limiet; print "<a href=\"$deze_pagina?offset=$nieuwe_offset\">Volgende</a>\n"; } } } ?> [/code:1:0a2c90bad0] Kan iemand me helpen? Quote Link naar reactie
anoniem Geplaatst: 6 december 2003 Auteur Delen Geplaatst: 6 december 2003 Beetje rigoureus: "SELECT * FROM berichten" Probeer het eens met (bijvoorbeeld): "SELECT * FROM berichten LIMIT $pagnr*10, 10" LIMIT heeft twee argumenten, start en increment. Als je als start de increment met het paginanummer vermenigvuldigt, heb je steeds de juiste selectie en haal je niet meer op dan je nodig hebt. Om het totaal aantal te bepalen kun je een count opdracht doen. "SELECT count * FROM berichten" Alles even snel uit het hoofd, maar het principe klopt. Quote Link naar reactie
anoniem Geplaatst: 6 december 2003 Auteur Delen Geplaatst: 6 december 2003 Zodra ik de LIMIT invoeg krijg ik deze error: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in c:\phpdev\www\gastenboek\index.php on line 34 lijn 34:[code:1:19957788f1]while($record = mysql_fetch_object($resultaat)){[/code:1:19957788f1] Quote Link naar reactie
anoniem Geplaatst: 7 december 2003 Auteur Delen Geplaatst: 7 december 2003 Lijkt me een syntax probleem. Kijk eens of dit wel werkt: $sql = "SELECT * FROM berichten LIMIT ".($pagnr*10).",10" Je kunt de query ook even tussendoor naar scherm printen. Dan moet er zoiets uitkomen: SELECT * FROM berichten LIMIT 10,10 Quote Link naar reactie
anoniem Geplaatst: 7 december 2003 Auteur Delen Geplaatst: 7 december 2003 [edit] Ik heb wat zitten knutselen en heb nu een andere code. Er zitten een paar opties meer in. De links worden nu gemaakt maar er staan teveel links. Er staan 12 links (tot 120 querys) maar er staan maar 12 querys in de database. [code:1:53ee7d4355] <?php include "ipadres.php"; //berheerders ip adres $ip2 = $HTTP_SERVER_VARS["REMOTE_ADDR"]; // bezoekers ip adres ?> <html> <head> <link rel='stylesheet' type='text/css' href='gastenboek.css'><!--include css file--> </head> <body> <center> <table border='1' bordercolor="#743A3A"><br><!--begin form tabel--> <br> <form action="plaatsbericht.php" method="POST"><!--begin form--> <tr><td>*Naam: </td><td><input type="text" name="afzender"></td></tr> <tr><td>Email: </td><td><input type="text" name="email"></td></tr> <tr><td>Website: </td><td><input type="text" name="url" value="http://www."></td></tr> <tr><td>*Bericht: </td><td><textarea name="bericht" cols="50" rows="4"></textarea></td></tr> <tr><td><input type="submit" value="Plaats bericht!"></td> <td><center>De velden met een * zijn verplicht</center></td></tr> </form><!--einde form--> </table><!--einde form tabel--> <?php echo($ip2); ?><!--echo bezoekers ip--> </center> <hr> </body> </html> <center> <?php $db = mysql_connect("localhost", "username", "password");//maakt verbinding mysql_select_db("gastenboek");//selecteerd database $sql = mysql_query("SELECT * FROM berichten ORDER by datum DESC");//maakt sql query $number = ceil(mysql_num_rows($sql)/10); $start = (isset($_GET['start']))? $_GET['start'] : 10; $pages = mysql_num_rows($sql); $sql = mysql_query("SELECT * FROM berichten ORDER by datum DESC LIMIT $start, 10");//maakt sql query while ($record = mysql_fetch_assoc($sql)){//while lus die de gegevens laat zien echo("<table border='1' bordercolor='#743A3A'>"); echo("<tr><td width='100'>Afzender: </td><td width='300'>{$record['username']}</td></tr>"); if (strlen($record['email']) > 0) { echo("<tr><td width='100'>Email: </td><td width='300'><A HREF='mailto:{$record['email']}'>{$record['email']}</A></td></tr>"); } else { echo("<tr><td width='100'>Email: </td><td width='300'>Geen e-mail opgegeven</td></tr>"); } if (strlen($record['url']) > 0) { echo("<tr><td width='100'>Website: </td><td width='300'><A HREF='{$record['url']}'>{$record['url']}</A></td></tr>"); } else{ echo("<tr><td width='100'>Website: </td><td width='300'>Geen website opgegeven</td></tr>"); } echo ("<tr><td width='100'>Berichtdatum: </td><td>{$record['datum']}</td></tr>"); echo ("<tr><td width='100'>Bericht: </td><td width='300' height='50'>{$record['bericht']}</td></tr>"); echo("<br>"); if ($ip == $ip2){ //kijken of bezoekers ip gelijk is aan beheerders ip, zoja, echo verwijderen echo("<tr><td><A HREF='bericht_verwijderen.php?bericht_id={$record['bericht_id']}'>Verwijderen</A></td></tr></table><hr>"); } elseif ($ip3 == $ip2){ echo("<tr><td><A HREF='bericht_verwijderen.php?bericht_id={$record['bericht_id']}'>Verwijderen</A></td></tr></table><hr>"); } else { echo("</table><hr>"); } } echo("<center>Copyright by Webmasters <A HREF='http://www.computeren.tk'>.:{Computeren.tk}:.</A> 2003-2004</center>"); ?> <? if($pages > 0){ for($i = 1; $i <= $pages; $i++){ echo " <a href=\"gastenboek.php?start=".(($i-1) * 10)."\">|".$i."|</a> "; } } ?> </center> [/code:1:53ee7d4355] Ow ja, hij echoot de querys wel goed, maar het gaat nu om de nummering. Als die werkt werkt het gastenboek:D Quote Link naar reactie
anoniem Geplaatst: 7 december 2003 Auteur Delen Geplaatst: 7 december 2003 Daarvoor was die COUNT opdracht. Quote Link naar reactie
anoniem Geplaatst: 7 december 2003 Auteur Delen Geplaatst: 7 december 2003 Owkeej, maar hoe moet ik die dan in dit script gebruiken? In dat eerste lukte dat wel, maar nu weet ik het niet. :oops: Quote Link naar reactie
anoniem Geplaatst: 7 december 2003 Auteur Delen Geplaatst: 7 december 2003 Met count krijg je het totaal aantal. Dat deel je door de paginagrootte, en je hebt dan het aantal pagina's. Met een loopje produceer je dan zoveel links als er pagina's zijn. Of je maakt volgende/vorige links, adhv. het huidige paginanummer. Quote Link naar reactie
anoniem Geplaatst: 9 december 2003 Auteur Delen Geplaatst: 9 december 2003 [edit]Na nog meer kloten, is hij er weer ingekomen en werkt hij :D Alleen het laatste bericht wordt niet weergeven(bericht met id = 1) [code:1:2e06b5cfc1]<?php mysql_connect("localhost", "username", "password");//maakt verbinding mysql_select_db("gastenboek");//selecteerd database $sql = mysql_query("SELECT * FROM berichten ORDER by bericht_id DESC");//maakt sql query $berichten = mysql_num_rows($sql); include "ipadres.php"; //berheerders ip adres $ip2 = $HTTP_SERVER_VARS["REMOTE_ADDR"]; // bezoekers ip adres ?> <html> <head> <link rel='stylesheet' type='text/css' href='gastenboek.css'><!--include css file--> </head> <body> <center> <table border='1' bordercolor="#743A3A"><br><!--begin form tabel--> <br> <form action="plaatsbericht.php" method="POST"><!--begin form--> <tr><td>*Naam: </td><td><input type="text" name="afzender" value="<?PHP echo $afzender; ?>"></td></tr> <tr><td>Email: </td><td><input type="text" name="email" value="<?PHP echo $email; ?>"></td></tr> <tr><td>Website: </td><td><input type="text" name="url" value="<?PHP echo $url; ?>"></td></tr> <tr><td>*Bericht: </td><td><textarea name="bericht" cols="50" rows="4" value="<?PHP echo $bericht; ?>"></textarea></td></tr> <tr><td><input type="submit" value="Plaats bericht!"></td> <td><center>De velden met een * zijn verplicht</center></td></tr> </form><!--einde form--> </table><!--einde form tabel--> <?php echo($ip2); echo "<br>"; ?><!--echo bezoekers ip--> <?php echo "Er zijn \"$berichten\" berichten"; ?> </center> <hr> </body> </html> <center> <center> <?php $number = round(mysql_num_rows($sql)/10); $start = (isset($_GET['start']))? $_GET['start'] : 10; $sql = "SELECT * FROM berichten ORDER by bericht_id DESC LIMIT $start, 10";//maakt sql query $resultaat = mysql_query($sql); while ($record = mysql_fetch_object($resultaat)){//while lus die de gegevens laat zien echo("<table border='1' bordercolor='#743A3A'>"); echo("<tr><td width='100'>Bericht id: </td><td width='300'>$record->bericht_id</td></tr>"); echo("<tr><td width='100'>Afzender: </td><td width='300'>$record->afzender</td></tr>"); if (strlen($record['email']) > 0) { echo("<tr><td width='100'>Email: </td><td width='300'><A HREF='mailto:{$record['email']}'>$record->email</A></td></tr>"); } else { echo("<tr><td width='100'>Email: </td><td width='300'>Geen e-mail opgegeven</td></tr>"); } if (strlen($record->url) > 0) { echo("<tr><td width='100'>Website: </td><td width='300'><A HREF='{$record['url']}'>$record->url</A></td></tr>"); } else{ echo("<tr><td width='100'>Website: </td><td width='300'>Geen website opgegeven</td></tr>"); } echo ("<tr><td width='100'>Bericht: </td><td width='300' height='50'>$record->bericht</td></tr>"); echo ("<tr><td width='100'>Berichtdatum: </td><td>$record->berichtdatum</td></tr>"); echo("<br>"); if ($ip == $ip2){ //kijken of bezoekers ip gelijk is aan beheerders ip, zoja, echo verwijderen echo("<tr><td><A HREF='bericht_verwijderen.php?bericht_id=$record->bericht_id'>Verwijderen</A></td></tr></table><hr>"); } elseif ($ip3 == $ip2){ echo("<tr><td><A HREF='bericht_verwijderen.php?bericht_id=$record->bericht_id'>Verwijderen</A></td></tr></table><hr>"); } else { echo("</table><hr>"); } } echo("<center>Copyright by Webmasters <A HREF='http://www.computeren.tk'>.:{Computeren.tk}:.</A> 2003-2004</center>"); ?> <? if($number != 0){ echo " <a href=\"gastenboek.php?start=".(($i > 1) / 10)."\">| vorige 10 |</A> ";//creëer vorige link for($i = 1; $i <= $number; $i++){ echo " <a href=\"gastenboek.php?start=".(($i-1) * 10)."\">|".$i."|</a> "; } echo " <a href=\"gastenboek.php?start=".(($i > 1) * 10)."\">| volgende 10 | </A> ";//creëer volgende link } ?> </center> [/code:1:2e06b5cfc1] Quote Link naar reactie
anoniem Geplaatst: 9 december 2003 Auteur Delen Geplaatst: 9 december 2003 [quote:d5144a1290="Rens_uit_His"][edit]Na nog meer kloten, is hij er weer ingekomen en werkt hij :D Alleen het laatste bericht wordt niet weergeven(bericht met id = 1)[/quote:d5144a1290]Zonder je code echt helemaal bekeken te hebben... [b:d5144a1290]>[/b:d5144a1290] ergens vervangen door [b:d5144a1290]>=[/b:d5144a1290] ? ([url=http://nl.php.net/manual/nl/language.operators.comparison.php]Comparison Operators[/url]) Quote Link naar reactie
anoniem Geplaatst: 9 december 2003 Auteur Delen Geplaatst: 9 december 2003 Thnx, nu werkt het. Alleen is de vorige link de eerste link geworden. De volgende link is laatste link geworden. Maar jah, dat is niet erg. [edit] Ik weet al iets hoe ik een volgende link kan maken, maar daarvoor heb ik de url van de gebruiker nodig. Hoe kan ik die opvragen? bijvoorbeeld: De gebruiker zit op: http://localhost/computeren.tk/gastenboek.php?start=10. Hoe kan ik die dan opvragen? Want als ik die heb hoef ik dit maar te doen: [code:1:ebd496066d] <?php $url = hier de weburl; $nieuwe_url=$url+10; print "<a href=\"gastenboek.php?start=$nieuwe_url\">Volgende</a>\n"; } ?> [/code:1:ebd496066d] En dan werkt het :D En dan kunnen we daar trouwens ook de vorige link mee maken :D . Quote Link naar reactie
anoniem Geplaatst: 9 december 2003 Auteur Delen Geplaatst: 9 december 2003 start kun je via $_GET['start'] uitlezen. Levert in dit geval dus 10 op. Komplete url: $url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; [url]http://forum.computertotaal.nl/phpBB2/viewtopic.php?t=107707[/url] Quote Link naar reactie
anoniem Geplaatst: 9 december 2003 Auteur Delen Geplaatst: 9 december 2003 Thnx voor de hulp. Nu werkt m'n gastenboekje perfect :D. De vorige, volgende, eerste, laatste en nummers werken allemaal :D. Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen