Anzahl der Datensätze pro Seite

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anzahl der Datensätze pro Seite

    Hi Leute, brauche wieder mal eure Hilfe.

    Und zwar, möchte ich mein Gästebuch so umfunktionieren,
    dass es mir Pro Seite 10 Datensätze pro Seite
    erstellt. Es soll unter den Einträgen auch eine Navigation
    mit "Nächste" oder "Vorherige" Seite angezeigt werden.

    Dazu habe ich mir mal ein kleines Tutorial angeschaut, eigentlich
    verstehe ich zwar einigermaßen, was da so passiert, aber wirklich
    weiss ich nicht so recht, wie wo genau was ich nun in mein Script einbauen
    soll, so dass es auch funktioniert.

    Ich hoffe Ihr könnt mir etwas dabei helfen.

    Hier mal das wesentliche meines Gästebuchscripts:

    PHP-Code:
    <?PHP
    // SQL-Abfrage
    include("connect2db.inc.php");
    $query mysql_query("SELECT entry_id, name, datum FROM guestbook ORDER BY entry_id DESC");
    $result mysql_fetch_array($query) or die(mysql_error());
    // Überprüfung, ob SQL-Ergebnis nicht leer ist:
    if (mysql_num_rows($query) > 0)
    {
    $Meldung "";
    }
    else
    {
    $Meldung "Fehler bei der Abfrage oder keine Daten";
    }
    // Wenn Fehler besteht, dann gib Fehlermeldung aus:
    if ($Meldung != '')
    {
    printf"%s"$Meldung);
    }
    // Ansonsten gib gewünschte Daten aus Usertabelle
    else
    {
    printf"<div align=center>\n");
    printf"<table border=0>\n");
    printf"<tr align=\"center\" valign=\"middle\" class=\"Stil4\">\n");
    printf"<th>Beitrag anschauen</th>\n");
    printf"<th> Datum </th>\n");
    printf"<th align=\"center\">Von</th>\n");
    printf"</tr>\n");
    printf"</table>\n");
    printf"<hr color=\"black\" size=\"1\">");
            
    $i 0;
    while (
    $i mysql_NumRows($query))
    {
    // Auslesen der Daten aus der User-Tabelle:
    $Datum    mysql_Result($query$i"datum");
    $Name    mysql_Result($query$i"name");
    $id    mysql_Result($query$i"entry_id");
         
    printf"<table border=0 background=\"/image/gb_entry_bg.gif\">\n");
    printf"<tr align=\"left\" valign=\"middle\" class=\"Stil2\">\n");
    printf"<td align=\"center\" valign=\"middle\"><a href=\"index.php?open=gaestebuch/gb_entry&id=$id\">Eintrag anschauen</a></td>\n");
    printf"<td align=\"center\">%s</td>\n"$Datum);
    printf"<td>%s</td>\n"$Name);
    printf"</tr>");
    $i++;
    }
    printf"</table>\n");
    printf"<hr color=\"black\" size=\"1\">");
    }
    ?>
    --- nd hier das Tutor:-----

    PHP-Code:

    <?PHP
    $db 
    mysql_connect ($sqlhost,$username,$passwort);
    mysql_select_db ($database);
    sql "SELECT * FROM table";
    $result mysql_query($sql,$db);
    $number mysql_num_rows($result);


    // jetzt daraus die Anzahl der Seiten:


    $seiten=floor($number/$proseite);


    //Dem Script müssen wir dann noch beim Aufruf übergeben, welche Seite angezeigt werden soll:
    //welche Seite angezeigt werden soll:

    <A HREF="guestbook.php?page=1"

    // damit haben wir in der Variable $page die Seitenzahl, 
    // die angezeigt werden soll.

    // Ermitteln wir nun die Werte für LIMIT:

    $start=$page $proseite;
    $sql="SELECT * FROM table LIMIT $start,$proseite";
    $result mysql_query($sql,$db);

    // zum Anzeigen ermitteln wir noch das "Seitenende":

    $ende $start $proseite;
    if (
    $ende>$number) { $ende $number; }

    // jetzt die Ausgabe:

    echo "Zur Zeit sind $number Einträge im Gästebuch <BR> \n";
    echo 
    "Seite $page - Einträge von $start bis $ende <BR> \n";
    while (
    $row mysql_fetch_array($result)) {
    echo 
    "Eintrag von: ".$row['Name']." <BR> \n";
    echo 
    $row['Eintrag']."<BR> \n";
    }

    // zum Abschluss setzen wir unter das Ganze noch eine Liste der 
    // verfügbaren Seiten mit entsprechendem Link, sowie einen Link 
    // zur vorhergehenden bzw. zur nächsten Seite:

        
    if ($page>0) {
            
    $i=$page-1;
            echo 
    "<A HREF=\"guestbook.php?page=$i\">&lt;previous</A>";
        }
        for(
    $i=0$i<=$seiten$i++) {
            if (
    $i==$page) {
                echo 
    $i."&nbsp;";
            }
            else {
                echo 
    "<A HREF=\"guestbook.php?page=$i\">$i</A>&nbsp;";
            }
        }
        if (
    $page<$seiten) {
            
    $i=$page+1;
            echo 
    "<A HREF=\"guestbook.php?page=$i\">next&gt;</A>";
        }
    ?>
    Gruß Piumer!!!

  • #2
    und jetzt soll dir jemand den code schreiben

    Kommentar


    • #3
      code schreiben?

      ne das hab ich ja schon gemacht

      benutze einfach die forumsuche, das hatten wir erst vor kurzen und sogar auf mysql basis (die blätterfunktion)

      viel spass beim suchen

      Kommentar


      • #4
        Früher hab ich das nie gecheckt wie man Seiten macht aber ich finds nun voll easy ^^.
        Admin of RealScripts

        Kommentar


        • #5
          Suche mal bei uns in den Codeschnipseln da findest du genug Zeugs....
          U.A. auch von mir ein Tut für ne Lösung mit ner For Schleife.....

          Wenn du das denn immer noch nicht raffts
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar


          • #6
            Du kannst mit dem SQL Befehl "LIMIT $start,$proseite" die results deiner Datenbank manipulieren.
            Du musst nun einfach per link die $start übergeben die variable $proseite kannst du eigentlich auch fest machen wenn du nur 10 Einträge auf der Page haben willst dann kannst du auch 10 schreiben...

            So müsstest du das dann ändern

            PHP-Code:
            ...
            $query mysql_query("SELECT entry_id, name, datum FROM guestbook ORDER BY entry_id DESC LIMIT $start,10");
            ...
            // Die links zum navigieren... kannst du auch ausblenden wenns nicht zurück oder vor geht...
            $zuruck=$start-10;
            if (
            $zuruck<1) { $zurueck=1; }
            $vor=$start+10;
            if (
            $vor>$alleeintraege) { $vor=$start; }
            echo 
            "<a href=\"dieseseitehier.php?start=".$zurueck."\">";
            echo 
            "<a href=\"dieseseitehier.php?start=".$vor."\">";
            ... 

            Kommentar


            • #7
              ok, ok,....

              ok, ok, ich versuche das nun mal selbst, schritt für schritt!

              1. Frage: der Befehl floor ist doch zum (AUF)runden von
              Zahlen da, oder?

              Folgendes:

              PHP-Code:
              $anzahl mysql_NumRows($query); // sind bei mir 6 
                  
              $X=30// zum Test
                  
              $anzahl $anzahl+$X;
                  
              $proseite=10;
                  
              $seitenzahl=floor($anzahl/$proseite);
                      echo 
              $seitenzahl
              Ergebnis des Echos ist 3. Müsste es aber nicht 4 sein? Denn ich hätte
              ja jetzt 36 Datensätze anzuzeigen. Wenn ich aber maximal 10 auf einer Seite haben möchte, müsste er mir doch 4 Seiten erzeugen??

              Oh oh, das fängt ja wieder gut an!

              Gruß piumer

              Kommentar


              • #8
                @piumer BITTE MANUAL LESEN. Wenn du nicht weisst, was floor macht
                dann schau selbst nach Wenn du aber bei jedem Sch*** fragst,
                hat dann keiner mehr Lust dir zu helfen

                Kommentar


                • #9
                  BITTE UM HILFE

                  So, habe mich jetzt schritt für schritt selbst da durch gewurschtelt.
                  Bin auch ganz gut voran gekomen ohne Hilfe.

                  Ich habe es so gemacht, dass mir die Seitenzahlen als Link wiedergegeben werden. Doch nachdem ich dann

                  $start = $seite * $anzahl eingegeben habe, schmeisst die Schleife
                  meine Seiten von 1 bis 187 aus.

                  Dabei hat die Datenbank nur 6 Einträge und dürfte so nur 2 Seiten
                  ausspucken. Ich habe echt lange gegrübelt, ich finde den Fehler nicht.

                  Ich muss zugeben, das ganze hat meine Hirnzellen ganz schön in Wallung gebracht, falls da noch welche sind. Vielleicht habe ich wieder nur ein Black Out, deshalb hoffe ich, Ihr könnt mir einen kleinen Tip geben, was ich wieder für nen Mist gebaut habe.

                  Hier mal mein Script:

                  PHP-Code:
                  include("connect2db.inc.php");
                      
                  $proseite=5;
                      
                  $seite=0;
                      
                  $seite $_GET['nav'];    
                      
                  $start $seite $proseite;
                      
                      
                  $query mysql_query("SELECT entry_id, name, datum FROM
                   guestbook ORDER BY entry_id DESC LIMIT 
                  $start$proseite");
                      
                  $result mysql_fetch_array($query) or die(mysql_error()); 
                      
                  $anzahl mysql_NumRows($query);
                      
                  $seitenzahl=ceil($anzahl/$proseite);
                      if (
                  $seite 0) {
                              
                  $seite=0;
                          }
                      
                          if (
                  $seite $seitenzahl) {
                              
                  $seite $seitenzahl;
                          }
                  while (
                  $seite<=$seitenzahl) {
                  echo 
                  "<ahref=\"index.php?open=gbtest&nav=$zaehler\">$zaehler</a><b>";
                          
                  $zaehler++;
                          }

                  $i 0// ALT
                      
                  while ($i mysql_NumRows($query)) // ALT
                      
                  {
                          
                  // Auslesen der Daten aus der User-Tabelle:
                          
                  $Datum    mysql_Result($query$i"datum"); 
                          
                  $Name    mysql_Result($query$i"name");
                           
                  $id        mysql_Result($query$i"entry_id");
                  // usw 
                  Ich schätze, es liegt irgendwie an dem link für die Seiten, aber sicher bin ich mir jetzt nicht mehr!

                  Gruß piumer

                  Kommentar


                  • #10
                    Re: BITTE UM HILFE

                    Original geschrieben von piumer
                    PHP-Code:
                    while ($seite<=$seitenzahl) {
                    echo 
                    "<ahref=\"index.php?open=gbtest&nav=$zaehler\">$zaehler</a><b>";
                            
                    $zaehler++;
                            } 
                    du veränderst in dieser schleife keine der beiden in der bedingung verwendeten variablen ($seite und $seitenzahl) - also wann soll diese deiner meiung nach abbrechen?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Code:
                      while ($seite<=$seitenzahl) {
                      
                      echo "<ahref=\"index.php?open=gbtest&nav=$zaehler\">$zaehler</a><b>";
                      
                              $zaehler++;
                      
                              }
                      jetzt denk doch mal logisch nach :-D

                      du hast ne while schleife mit der Bedingung betroffen sind da die 2 Variablen $seite und $seitenzahl
                      erhöhen tust du aber $zaehler!
                      d.h. eigentilch dürfte die while-schleife nie aufhören weil wenn einmal $seite kleiner-gleich $seitenzahl ist, dann durchläuft er die Schleife bis ins unendliche!
                      d.h. du solltest entweder :
                      while ($zaehler <= $seitenzahl) machen
                      oder halt einfach die $seite - variable incrementen!
                      [natürlich auch deinen Link entsprechend anpassen]
                      C-Ya Toby

                      Kommentar


                      • #12
                        wenn er gesucht hat, dürft er das gefunden haben

                        http://it-development.de/forum/showt...threadid=36550

                        da sind aucc ein paar ergänzende infos drin

                        OffTopic:
                        hatte ja am anfang geschrieben, er soll suchen

                        Kommentar


                        • #13
                          Fast ok!

                          Hey, Danke, jetzt ist fast alles richtig.

                          @jochenj Ich habe gesucht und genau den Thread auch gefunden.
                          Das hat mir auch etwas den Durchblick geschafft. Aber ich glaube nicht, das es mich darauf gebracht hätte, dass die Schleife unsinnig war.

                          War gestern etwas zuviel für mich


                          Habe auch gemerkt, dass die Ermittlung der seitenzahl bei mir falsch war. Nun passt es aber.

                          Aber 100% ist es immer noch nicht. Verstehe nicht, dass mir die Schleife nicht die seite 0 erzeugt. Auch wenn ich dass echo $seite ausgebe, zeigt er nichts an, wenn 0 drinn steht. So kann ich ja nicht mehr auf die erste seite navigieren??

                          Ich grübel und suche mal noch ein wenig, aber nen Tip von euch wäre trotzdem cool!

                          Gruß, piumer

                          Kommentar


                          • #14
                            Sehe den Fehler einfach nicht???

                            Ich habe jetzt die Navigation nochmal geändert und es ist für mich einfacher zu verstehen. Aber jetzt klappt es wieder nicht, und ich verstehe einfach nicht warum.

                            Der feher muss wohl an der Tabellenerstellung liegen, denn die Navigation übergibt die richtigen Variablen für den Startwert,
                            aber es werden nicht die entsprechenden Daten angezeigt.

                            Könntet Ihr bitte bitte nochma einen Blick drauf werfen???

                            PHP-Code:
                            <?php
                            include("connect2db.inc.php");
                                
                                
                            $proseite=5;
                                if (!isset(
                            $start)) {
                                  
                            $start 0;
                                }
                                
                            // ################## Abfrage Anzahl Reihen und Ermittlung Seiten ################################
                                
                            $query mysql_query("SELECT entry_id, name, datum FROM guestbook");
                                
                            $anzahl mysql_NumRows($query) or die(mysql_error());// Ermittlung der Gesamtanzahl Datensätze
                                
                            $query1 mysql_query("SELECT entry_id, name, datum FROM guestbook ORDER BY entry_id DESC LIMIT $start, 5");
                                
                            $result mysql_fetch_array($query1);
                                
                            $anzahl1 mysql_NumRows($query1) or die(mysql_error());// Ermittlung der Gesamtanzahl Datensätze
                                // #################################################################################################################

                                // Erzeugung der Tabelle
                                    // printf( "<div align=center>\n");
                                    
                            printf"<table border=0 bgcolor=\"#006699\">\n");
                                    
                            printf"<tr align=\"center\" valign=\"middle\" class=\"Stil5\">\n");
                                        
                            printf"<th>Beitrag anschauen</th>\n");
                                        
                            printf"<th> Datum </th>\n");
                                        
                            printf"<th align=\"center\">Von</th>\n");
                                    
                            printf"</tr>\n");
                                    
                            printf"</table>\n");
                                    
                            printf"<hr color=\"black\" size=\"1\">");
                                    
                                
                            $i 0// ALT
                                
                            while ($i mysql_NumRows($query1)) // ALT
                                
                            {
                                    
                            // Auslesen der Daten aus der User-Tabelle:
                                    
                            $Datum    mysql_Result($query1$i"datum"); 
                                    
                            $Name    mysql_Result($query1$i"name");
                                     
                            $id        mysql_Result($query1$i"entry_id");
                                 
                                 
                            printf"<table border=0 background=\"/image/gb_entry_bg.gif\">\n");
                                    
                            printf"<tr align=\"left\" valign=\"middle\" class=\"Stil2\">\n");
                                        
                            printf"<td align=\"center\" valign=\"middle\"><a href=\"index.php?open=gaestebuch/gb_entry&id=$id\">Eintrag anschauen</a></td>\n");
                                        
                            printf"<td align=\"center\">%s</td>\n"$Datum);
                                        
                            printf"<td>%s</td>\n"$Name);
                                    
                            printf"</tr>");
                                    
                            $i++;
                                }
                                
                            printf"</table>\n");
                                
                            printf"<hr color=\"black\" size=\"1\">");

                                </
                            td>
                                <
                            td>&nbsp;</td>
                              </
                            tr>
                              <
                            tr>
                                <
                            td>&nbsp;</td>
                                <
                            td class="Stil4">
                                <?
                            php
                                
                            // Navigation
                                // Erste Seite & zurück
                                
                            if($start 0) {
                                      echo 
                            "&lt;a href='index.php?open=gbtest&start=0'>[erste Seite]</a><b>";
                                      
                            $back=$start-$proseite;
                                      if(
                            $back 0) {
                                    
                            $back 0;
                                      }
                                      echo 
                            "<a href=\"index.php?open=gbtest&start=$back\">[zur&uuml;ck]</a><b>";
                                }
                                
                            // Alle Seiten anzeigen
                                
                            if($anzahl>$proseite) {
                                      
                            $Seiten=intval($anzahl/$proseite);
                                          if(
                            $anzahl%$proseite) {
                                        
                            $Seiten++;
                                          }
                                }
                                for (
                            $is=1;$is<=$Seiten;$is++) {
                                      
                            $fwd=($is-1)*$proseite;
                                      echo 
                            "<a href=\"index.php?open=gbtest&start=$fwd\">$is</a><b>";
                                }
                                
                            // Letze Seite & weiter
                                
                            if($start $anzahl-$proseite) {
                                        
                            $fwd=$start+$proseite;
                                          echo 
                            "<a href=\"index.php?open=gbtest&start=$fwd\">[weiter]</a><b>";
                              
                                  
                            $fwd=$anzahl-$proseite;
                                  echo 
                            "<a href=\"index.php?open=gbtest&start=$fwd\">[letzte Seite]</a>";
                                }
                                
                            ?>
                            Danke, Gruß piumer
                            Zuletzt geändert von piumer; 23.04.2004, 15:37.

                            Kommentar


                            • #15
                              Sehe den Fehler nicht!!!

                              Ich habe eine Blätterfunktion in mein Gästebuch eingebaut, doch leider muss da noch ein kleiner Fehler sein, leider sehe ich ihn nicht.

                              Der feher muss wohl an der Tabellenerstellung liegen, denn die Navigation übergibt die richtigen Variablen für den Startwert,
                              aber es werden nicht die entsprechenden Daten angezeigt.

                              Könntet Ihr bitte bitte mal einen Blick drauf werfen???

                              PHP-Code:

                              <?php

                              include("connect2db.inc.php");

                                 
                              $proseite=5;
                                  if (!isset(
                              $start)) {
                                    
                              $start 0;

                                  }
                                  
                              $query mysql_query("SELECT entry_id, name, datum FROM
                               guestbook"
                              );

                                  
                              $anzahl mysql_NumRows($query) or die(mysql_error());
                              // Ermittlung der Gesamtanzahl Datensätze

                                  
                              $query1 mysql_query("SELECT entry_id, name, datum FROM
                               guestbook ORDER BY entry_id DESC LIMIT 
                              $start, 5");

                                  
                              $result mysql_fetch_array($query1);

                                  
                              $anzahl1 mysql_NumRows($query1) or die(mysql_error());
                              // Ermittlung der Gesamtanzahl Datensätze

                                  // Erzeugung der Tabelle
                                      
                              printf"<table border=0 bgcolor=\"#006699\">\n");
                                      
                              printf"<tr align=\"center\" valign=\"middle\"
                               class=\"Stil5\">\n"
                              );

                                          
                              printf"<th>Beitrag anschauen</th>\n");
                                          
                              printf"<th> Datum </th>\n");
                                          
                              printf"<th align=\"center\">Von</th>\n");
                                      
                              printf"</tr>\n");
                                      
                              printf"</table>\n");
                                      
                              printf"<hr color=\"black\" size=\"1\">");
                                  
                              $i 0;

                                  while (
                              $i mysql_NumRows($query1)) {

                                      
                              // Auslesen der Daten aus der User-Tabelle:
                                      
                              $Datum    mysql_Result($query1$i"datum"); 
                                      
                              $Name    mysql_Result($query1$i"name");
                                       
                              $id        mysql_Result($query1$i"entry_id");

                                   
                                   
                              printf"<table border=0
                              background=\"/image/gb_entry_bg.gif\">\n"
                              );
                                      
                              printf"<tr align=\"left\" valign=\"middle\" class=\"Stil2\">\n");
                                          
                              printf"<td align=\"center\" valign=\"middle\">
                              <a href=\"index.php?open=gaestebuch/gb_entry&id=
                              $id\"
                              >Eintrag anschauen</a></td>\n"
                              );
                                          
                              printf"<td align=\"center\">%s</td>\n"$Datum);
                                          
                              printf"<td>%s</td>\n"$Name);
                                      
                              printf"</tr>");
                                      
                              $i++;

                                  }

                                  
                              printf"</table>\n");
                                  
                              printf"<hr color=\"black\" size=\"1\">");
                                  </
                              td>
                                 <
                              td>&nbsp;</td>
                                </
                              tr>
                                <
                              tr>
                                  <
                              td>&nbsp;</td>
                                  <
                              td class="Stil4">
                                  <?
                              php

                                  
                              // Navigation
                                  // Erste Seite & zurück

                                  
                              if($start 0) {
                                        echo 
                              "&lt;a href='index.php?open=gbtest&start=0'>[erste
                               Seite]</a><b>"
                              ;
                                        
                              $back=$start-$proseite;
                                        if(
                              $back 0) {
                                      
                              $back 0;
                                        }
                                        echo 
                              "<a href=\"index.php?open=gbtest&start=$back\">[zur&uuml;ck]</a><b>";
                                  }
                                  
                              // Alle Seiten anzeigen
                                  
                              if($anzahl>$proseite) {
                                        
                              $Seiten=intval($anzahl/$proseite);
                                            if(
                              $anzahl%$proseite) {
                                          
                              $Seiten++;
                                            }
                                  }
                                 for (
                              $is=1;$is<=$Seiten;$is++) {
                                        
                              $fwd=($is-1)*$proseite;
                                        echo 
                              "<a href=\"index.php?open=gbtest&start=$fwd\">$is</a><b>";
                                  }
                                  
                              // Letze Seite & weiter
                                  
                              if($start $anzahl-$proseite) {
                                          
                              $fwd=$start+$proseite;
                                            echo 
                              "<a href=\"index.php?open=gbtest&start=$fwd\">[weiter]</a><b>";
                                    
                              $fwd=$anzahl-$proseite;
                                    echo 
                              "<a href=\"index.php?open=gbtest&start=$fwd\">[letzte 
                              Seite]</a>"
                              ;
                                  }
                                  
                              ?>
                              Danke, Gruß piumer

                              Kommentar

                              Lädt...
                              X