Toon posts:

[PHP] Knop "vorige - vorige" in guestbook

Pagina: 1
Acties:

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
  
if ($start == "") {$start = "0"; $end = "10";}  
if ($start < 10) {$previous = 0;}  

else {$previous = $start - 10; $end = $end -10;}  
$next = $start + 10;  
$end = 10;  

if(!$start=="0") {$previous_messages = "<A HREF='?start=$previous&amp;end=$end' onFocus='this.blur()' TARGET=''>Vorige</A>";}  

else {$previous_messages = "Begin";}  

$mysql = "SELECT * FROM gsense_gastenboek LIMIT $start, $end";  
$results = mysql_query ($mysql);  
$array = mysql_num_rows ($results);  

if ($array < 10) {$next_messages = "Einde";}  
else {$next_messages = "<A HREF='?start=$next&amp;end=$end' onFocus='this.blur()' TARGET=''>Volgende</A>";}  
?>

Hello,

Vraagje. Heb een gastenboek, werkt prima, op één dingetje na: "volgende" is altijd een optie. Kortom, als ik een pagina heb waarbij je per pagina 10 berichten ziet en er staan 20 berichten in het boek, is er nog een mogelijkheid om naar bericht 21 t/m 30 te gaan... maar die pagina is leeg. Ziet iemand hier welke fout ik maak?

Of heeft iemand anders misschien een "previous - next" scriptje dat misschien iets minder complex is als dit?

Alvast bedankt,
Sebastard

Verwijderd

Je kan MySQL laten selecteren van $start, 10. Het zijn namelijk de 10 volgende berichten die hij dan neemt. In mijn gastenboek heb ik dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
if(!IsSet($results_per_page) or !IsSet($page_number)) {
$results_per_page = 10;
$page_number = 1;
}

$Start = ($page_number-1)*10;

//Maak query
$sql = "SELECT * FROM gastenboek ORDER BY Id DESC LIMIT $Start, 10";
?>

Dus las er geen paginanr is dan heb je de eerste pagina. Hij selecteert mijn berichtjes uit de database door middel van een id nummer wat hij automatisch zelf maakt.

Navigatie is dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
//Aantal berichten tellen
$sql2 = "SELECT * FROM gastenboek";
$sql3 = mysql_query($sql2);
$aantal = mysql_num_rows($sql3);

$path_to_script = "index.php?show=Gast2"; # het pad naar de locatie van het script

$total_pages = ceil( $aantal / $results_per_page );

if($page_number != 1){
$vorige = $page_number - 1;
echo("<center><a href=\"$path_to_script&amp;page_number=$vorige&amp;results_per_page=$results_per_page\"><< Vorige</a> |");
} elseif($page_number == 1){
echo("<center><i><< Vorige</i> |");
}

for($i = 1; $i <= $total_pages; $i++){
if($i == $page_number){
echo(" <b>[$i]</b> |");
} else {
echo(" <a href=\"$path_to_script&amp;page_number=$i&amp;results_per_page=$results_per_page\">$i</a> |");
}
}

if($page_number != $total_pages){
$volgende = $page_number + 1;
echo(" <a href=\"$path_to_script&amp;page_number=$volgende&amp;results_per_page=$results_per_page\">Volgende >></a></center>");
} elseif($page_number == $total_pages){
echo(" <i>Volgende >></i></center>");
}
?>

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 13-09 12:14
kan je het ff tussen
PHP:
1
  en
zetten (zonder spatie) ? dat leest heel wat makkelijker

Verwijderd

Topicstarter
Xan, bedankt voor je posts!! Ik heb je eerste tip even geprobeerd, maar die lukte niet... $start, 10 (die dus).

Van de tweede lap code moet ik je eerlijk bekennen dat ik er niet zoveel van snap... Het werkt in zoverre, dat hij nu wel het aantal pagina's ziet, maar de rest van de echo's gaan mis:

Warning: Supplied argument is not a valid MySQL result resource in index.php on line 16.

Kortom, het werkt nog niet helemaal. Maar, als ik eerlijk mag zijn gebruik ik ook liever mijn eigen scriptje... maar ziet iemand anders misschien waar de fout zit?

PS: http://www.g-sense.nl/gastenboek/

Verwijderd

Waar krijg jij de foutmelding dan te zien? Bij mij werkt het afgezien van een MySQL query die bovenin staat?

Verwijderd

Voor zover ik het kan zien check je hoeveel berichten er op de huidige pagina staan en als dit er minder dan 10 zijn dan laat je Einde zien. Maar als er precies 10 berichten staan werkt dit dus niet! Zoals nu, er staan 20 berichten in, dus op de laatste page staat nog wel een link naar volgende ($array is niet kleiner dan 10!)

  • zeroxcool
  • Registratie: Januari 2001
  • Laatst online: 04-09 13:39
Heb je $Start verandert in $start?

zeroxcool.net - curity.eu


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

trouwens...
PHP:
1
2
3
4
<?
$r=mysql_query("SELECT COUNT(*) FROM TABLE");
$num=mysql_result($r,0);
?>

is een heel stuk sneller en efficiënter dan
PHP:
1
2
3
4
<?
$r=mysql_query("SELECT * FROM TABLE");
$num=mysql_num_rows($r);
?>

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Op vrijdag 22 februari 2002 22:02 schreef zellufs het volgende:
Voor zover ik het kan zien check je hoeveel berichten er op de huidige pagina staan en als dit er minder dan 10 zijn dan laat je Einde zien. Maar als er precies 10 berichten staan werkt dit dus niet! Zoals nu, er staan 20 berichten in, dus op de laatste page staat nog wel een link naar volgende ($array is niet kleiner dan 10!)
Okay, dat is de oorzaak... maar weet je ook hoe ik dit zou kunnen oplossen? Ik heb me er helemaal gek op gekeken en ge-edit, maar het lukt me gewoon weg echt niet om dit voor elkaar te krijgen.

Verwijderd

Topicstarter
Op vrijdag 22 februari 2002 22:05 schreef ZeRoXcOoL het volgende:
Heb je $Start verandert in $start?
Nee, dat heb ik niet gedaan. Ik vraag me af wat dat voor invloed zou hebben als ik dat wel zou doen?

Verwijderd

ik duikel net wel een oud stukje code van mezelf op...
Heel lelijk geschreven want het is OUD, maar het wijst zichzelf uit hoop ik... :)
PHP:
1
2
3
4
5
6
7
8
<?
if($start > 0 &amp;&amp; $aantal > 10){?>
<a href="pics_admin.php?action=list&amp;start=<?=($start-10)?>">Vorige 10</a>
<?}if($start > 0 &amp;&amp; $aantal > $start+10){?> - 
<?}if($aantal > ($start + 10)){?>
<a href="pics_admin.php?action=list&amp;start=<?=($start+10)?>">Volgende 10</a>
<?}
?>
Pagina: 1