Gästebuch --> Blätterfunktion

  • geschlossen

  • mortician
  • 2029 Aufrufe 8 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Gästebuch --> Blätterfunktion

    Hi
    Ich habe mal eine Frage.
    Undzwar habe ich vor eine Blätterfunktion in mein Gästebuch einzubauen.
    Ich weiss das ich dafuer LIMIT in Mysql einsetzen muss.
    Doch wie genau ich es dann mit den einzelnen Seiten mache, weiss ich noch nicht.
    Wäre echt cool, wenn ihr helfen könntet.
    Nun zum Inhalt der *.php Datei, welche die Mysql Datenbank ausgibt.

    PHP-Quellcode

    1. ..... CSS Formular etc.....
    2. <?php
    3. require('config.php');
    4. $vb = mysql_connect($host,$user,$pw);
    5. mysql_select_db("k1k0",$vb);
    6. $result = mysql_query("SELECT * FROM gaestebuch_tempel ORDER BY datum DESC",$vb);
    7. $v = mysql_num_rows($result);
    8. for ($i=0; $i<mysql_num_rows($result); $i++) {
    9. $gaestebuch[$i]=mysql_fetch_object($result);
    10. }
    11. for ($i=0; $i<mysql_num_rows($result); $i++, $v--) {
    12. require('inc/smilies.php');
    13. $gaestebuch[$i]->eingabe = str_replace($search, $replace, $gaestebuch[$i]->eingabe);
    14. $border = "border-top:1px ridge black; border-left:1px ridge black; border-right:1px ridge black";
    15. echo "<table style=\"$border\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"<?php echo $bgtable; ?>\" align=\"center\">",
    16. "<tr bgcolor=\"$bgtable_tr1\" width=\"440\">",
    17. "<td width=\"146\" align=\"left\">",
    18. "<font class=\"gbtr1\">&nbsp#";
    19. echo $v;
    20. echo "</font>",
    21. "</td>",
    22. "<td width=\"146\" align=\"left\">",
    23. "<font class=\"gbtr1\">",
    24. substr($gaestebuch[$i]->datum,8,2),
    25. ".",
    26. substr($gaestebuch[$i]->datum,5,2),
    27. ".",
    28. substr($gaestebuch[$i]->datum,0,4),
    29. "</font>",
    30. "</td>",
    31. "<td width=\"148\" align=\"right\">",
    32. "<font class=\"gbtr1\"><b>",
    33. $gaestebuch[$i]->betreff,
    34. "</b></font>",
    35. "</td>",
    36. "</tr>",
    37. "</table>",
    38. "<table style=\"border:1px ridge black\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"$bgtable\" align=\"center\">",
    39. "<tr>",
    40. "<td width=\"119\" style=\"border-right:1px ridge black\">",
    41. "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr height=\"3\"></tr><tr><td width=\"8\"></td><td><font class=\"gb\"><b>",
    42. $gaestebuch[$i]->name,
    43. "</b></font></td></tr>",
    44. "<tr><td></td><td><font class=\"gb\">",
    45. substr($gaestebuch[$i]->datum,10),
    46. "</font></td></tr>",
    47. "<tr><td></td><td><font class=\"gb\">Browser: ",
    48. $gaestebuch[$i]->browser,
    49. "</font></td></tr>",
    50. "<tr><td></td><td>";
    51. if ($gaestebuch[$i]->email) {
    52. $email = $gaestebuch[$i]->email;
    53. echo "<a href=\"javascript:void(0)\" onmouseover=\"kastl_her('$email')\" onmouseout=\"kastl_weg()\">",
    54. "<img src=\"images/email.gif\" border=\"0\"></a>";
    55. echo " ";
    56. }
    57. if ($gaestebuch[$i]->homepage) {
    58. if ($gaestebuch[$i]->homepage == "http://") {
    59. echo "";
    60. } else {
    61. $homepage = $gaestebuch[$i]->homepage;
    62. echo "<a href=\"$homepage\" target=\"_blank\"><img src=\"images/homepage.gif\" border=\"0\"></a>";
    63. echo " ";
    64. }
    65. }
    66. if ($gaestebuch[$i]->icq) {
    67. $icq_nummer = $gaestebuch[$i]->icq;
    68. echo "<a href=\"http://wwp.icq.com/",
    69. $icq_nummer,
    70. "\" target=\"_blank\">",
    71. "<img src=\"http://web.icq.com/whitepages/online?icq=$icq_nummer&img=11\" border=\"0\">";
    72. echo " ";
    73. }
    74. echo "</tr>",
    75. "</table>",
    76. "</td>",
    77. "<td width=\"5\"></td>",
    78. "<td width=\"315\">",
    79. "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr height=\"3\"></tr><tr><td width=\"8\"></td></tr></table>",
    80. "<font class=\"gb\">",
    81. $gaestebuch[$i]->eingabe,
    82. "</font></td>",
    83. "</tr>",
    84. "</table>",
    85. "<br>";
    86. }
    87. mysql_close($vb);
    88. ?>
    89. </body>
    90. </html>
    Alles anzeigen


    mfg mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Also ich weiss jetzt nicht genau was deine Frage ist.

    Was du alles machen musst:

    1. Am besten eine $_GET-Variable mit der aktuellen Seite anlegen. Falls der Wert nicht gesetzt ist (auf der ersten Seite), den Wert auf page=1 setzen.
    2. Mit mysql_num_rows oder "select count(*) from table" Anzahl Rows bestimmen.
    3. Eine Anzahl rows festlegen (bsp. 10).
    4. Herausfinden wieviele Seite es gibt.
    5. Limit zusammensetzen

    Hier der ganze Code. Ich habe noch die Möglichkeit eingebaut, den Wert von page auf "all" zu setzen, dann wird alles ohne limitierung ausgeführt.

    $query ist einfach das auszuführende SQL-Kommando, an das ich das "LIMIT" setze, das ja zwingend an den Schluss muss.

    PHP-Quellcode

    1. //Anhand MySQL-Resultsets $res die Anzahl rows herasufinden, alternativ kann man auch mit "select * from <table>" arbeiten.
    2. $rows = mysql_num_rows($res);
    3. $size = 10; //Anzahl Einträge pro Seite
    4. $mod = $rows % $size; //Modulo (%) gibt den Rest einer Division zurück
    5. $rows = $rows - $mod; //Um ohne Rest teilen zu können, wird der Rest abgezogen
    6. $num = $rows / $size; //Nun haben wir die Anzahl Seiten
    7. //Falls es einen Rest gegeben hat müssen wir die Anzahl Seiten erhöhen, da diese "unfertige" Seite nunmal auch angezeigt werden muss.
    8. if ($mod > 0) {
    9. $num++;
    10. }
    11. //GET-Wert holen (meist in der URL)
    12. $page = $_GET['page'];
    13. if ($page == '') {
    14. $page = 1;
    15. }
    16. //Wenn Page auf "all" gesetzt bleibt das Query gleich (ist nicht nötig so zu coden, ist aber sicher übersichtlich)
    17. if ($page == 'all') {
    18. $query = $query;
    19. }
    20. else {
    21. //Dies wird verwendet um den ersten Record der ausgegeben werden soll herauszufinden
    22. $startval = $page * $size;
    23. $startval = $startval - $size;
    24. //Schliesslich wird das LIMIT angehängt. Das Query kann so ausgeführt werden.
    25. $query = $query." limit $startval,$size";
    26. }
    Alles anzeigen
    [SIZE=1]"There's no right, there's no wrong, there's only popular opinion." Jeffrey Goines (Brad Pitt) in Twelve Monkeys[/SIZE]

    [SIZE=1]$ killall chico[/SIZE]
  • Hi!
    Danke erstmal für die Antwort.
    Könntest vllt einen Tacken erklaeren, was du damit erreichts?!
    Ist dann auch eine Navigation dA?
    Wenn man zb auf Seite 2 will?!
    Du hast ja Kommentare dabei geschrieben, trotzdem wuerde ich gern wissen was du damit erreichts.
    BIn dir jedenfalls schon mal sehr dankbar, dass du mir geholfen hast.
    mfg mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Also ich versuche das mal verständlich zu machen.

    Du hast eine Seite die du mit dynamischen Einträge füllst (ist ja egal was). Nun wenn du insgesamt sehr viele EInträge hast willst du das ganz auf verschiedene Seiten packen.

    wenn nun also jemand auf dein index.php kommt (oder wo auch immer du das brauchst), dann leitest du ihn direkt auf die erste Seite um, setzt also den wert von $page auf 1.

    Wenn du den Benutzer nun auf die zweite Seite bringen willst, dann machst du unten einen Link (den du ja auch dynamsich erzeugen kannst) in der form:
    <a href="index.php?page=2">Seite 2</a>

    Dieses page=2 in der URL ist eine sogenannte GET-Variable die du mit $_GET['page'] wieder auslesen kannst.

    Mein Code ist also ohne Navigation, sondern nur das Handwerkszeug dahinter.

    Falls ich sonst noch helfen kann meldest du dich nochmals...
    [SIZE=1]"There's no right, there's no wrong, there's only popular opinion." Jeffrey Goines (Brad Pitt) in Twelve Monkeys[/SIZE]

    [SIZE=1]$ killall chico[/SIZE]
  • Hi!
    Ok das habe ich verstanden.
    Nur ich meinte den Code an sich.
    Ob du vllt erklaeren koenntest, was mit in den einzelnen Schritten macht / erreicht.
    Du hast ja "und dafuer dank ich dir" Kommentare dazu geschrieben.
    Trotz dessem wuerde ich gerne wissen, was die einzelnen Zeilen bewirken, wenn ud verstehst was ich meine.
    Wäre dir dafür 1000 Mal Dankbar.
    Ty, mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Ich hoffe du hast verstanden dass der ganze orange Text oben Kommentare sind, und dort wird wirklich erklärt was der Code macht.

    Ansonst würde ich dir copy&paste empfehlen, und einfach mal selbst ausprobieren.

    Falls du zu einem speziellen Ausdruck Fragen hast, bin ich gerne bereit weiterzuhelfen.

    auf php.net findest du eignetlich alles was ich hier verwendet habe...

    -purx
    [SIZE=1]"There's no right, there's no wrong, there's only popular opinion." Jeffrey Goines (Brad Pitt) in Twelve Monkeys[/SIZE]

    [SIZE=1]$ killall chico[/SIZE]
  • das Limit kannst du auch einfach hier einfügen:

    PHP-Quellcode

    1. $anzahl=10; // Einträge pro Seite
    2. if(!isset($startanzahl)) { $startanzahl=0; } //beginnen mit dem Xten Eintrag (am Anfang 0)
    3. $result = mysql_query("SELECT * FROM gaestebuch_tempel ORDER BY datum DESC limit $startanzahl,$anzahl",$vb);
    4. $nextpage=$startanzahl+$anzahl;
    5. $previouspage=$startanzahl-$anzahl;
    6. ...
    7. ...
    8. deine Ausgabe...
    9. ...
    10. // Blättern....
    11. echo "<a href=dieseseite.php?startanzahl=$nextpage>nächste Seite</a>&nbsp;";
    12. if($previouspage <= 0) { echo "&nbsp;"; } else {
    13. { echo "<a href=dieseseite.php?startanzahl=$previouspage>vorherige Seite</a>"; }
    Alles anzeigen


    ne begrenzung für die letzte Seite muss man natürlich dann auch noch machen, damit beim letzten eintrag der Link für die nächste Seite nicht mehr angezeigt wird.
    (wie bei der ersten Seite... < 0 existiert nicht mehr)
    mein PC . . meine Blackliste . . Download mit FlashFXP
    [SIZE="2"]im moment NICHT aktiv, PN's werden warscheinlich nicht gelesen^^[/SIZE]
  • Hi!
    @ woodoooman und vorallem purx:
    Dickes Danke!
    Echt, denke ihr habt mir geholfen.
    Habe diese Codes noch nicht probiert.
    Denke aber (denke auch da kann ich euch vertrauen), dass die Codes funzen.
    Versuch es nachher.
    Wenn ich bei manchen Sachen Probleme hab , gooogle ich.
    Danke euch ^^
    @ mod: kann closed werden.

    Gruß mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]