riethmunk: Limitierte SELECT-Abfrage

Hi Leute,
nachdem ich eine SELECT-Abfrage der Datenbank ausgeführt habe, bekomme ich eine hohe Anzahl an Ergebnissen zurück. Die Ausgabe Limitiere ich dann auf z.B. 5. Wie kann ich es nun am sinnvollsten
erreichen mich durch die anderen Einträge in der DB auch noch durch zu blättern?
Das ganze ist natürlich in Verbindung mit PHP zu sehen!

  1. Hi riehtmunk

    nachdem ich eine SELECT-Abfrage der Datenbank ausgeführt habe, bekomme ich eine hohe Anzahl an Ergebnissen zurück. Die Ausgabe Limitiere ich dann auf z.B. 5. Wie kann ich es nun am sinnvollsten
    erreichen mich durch die anderen Einträge in der DB auch noch durch zu blättern?

    Falls du MySQL verwendest was ich jetzt einfach mal vermute kannst du
    sagen:

    LIMIT startnr, anzzeilen

    jeweils ganz am ende der Query anhängen.

    Gruss Daniela

    1. Falls du MySQL verwendest was ich jetzt einfach mal vermute kannst du
      sagen:

      LIMIT startnr, anzzeilen

      jeweils ganz am ende der Query anhängen.

      Gruss Daniela

      Ich verwende  mySQL und PHP. Das mit dem LIMIT ist schon geschehen, aber wie blättere ich am besten zu den anderen Datensätzen die durch das Limit nicht mehr angezeigt werden? Mit PHP functionen oder gibt es da was in SQL was einem die Sache erleichtert?

      1. Hi riethmunk

        Ich verwende  mySQL und PHP. Das mit dem LIMIT ist schon geschehen, aber wie blättere ich am besten zu den anderen Datensätzen die durch das Limit nicht mehr angezeigt werden? Mit PHP functionen oder gibt es da was in SQL was einem die Sache erleichtert?

        Das steht doch da

        Limit anfang, anzahl

        da wo anfang steht, packst du die anzahl der Records die du bisher insgesamt
        hattest + 1 rein.

        btw http://learn.to/quote

        Gruss Daniela

        PS. Anrede und Gruss sind auch in Folgepostings gern gesehen

        1. Sorry Daniela,
          war nicht meine Absicht hier unhöflich rüber zu kommen.

          Mit der LIMIT-Anweisung allein komme ich trotzdem nicht klar.
          Ich brauch doch noch in PHP if-Bedingungen um dann dynamisch
          (je nach Datenbankmenge) vor und zurück Blätten zu können.
          Soll nämlich für ein Gästebuch sein und ich will nicht, dass
          sich die Leute die Finger wundscrollen.

          Gruß riethmunk

          1. Hi riethmunk, wie habs ich gelernt? Ich hol mir irgend ein freies script und analysiere. und sauge mir die funktionen raus. (Mein Liebling phpBB)

            Bitte nicht schlagen für den langen Quelltext (Eigenbau). Vielleicht hilft er dir.

            Gruss ok

            <html> <head> <title>Personendaten aus db suchen</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

            </head>

            <? include("./../include/format.inc.php"); $rows_per_page=19;

            print"<body $style_bg_seite>";

            $varsel_filter[$filter]="selected"; $varsel_feldwahl[$feldwahl]="selected"; ?>

            <table <?echo $style_bg_header?> width="100%"> <form name="suche" action="<?echo $PHP_SELF ?>" method="POST">    <tr>       <td width="230">          <?echo $style_text_form ?>          Personendaten --> Filter:       </td>       <td >          <?echo $style_text_form ?>          <select name="feldwahl" size="1">             <option <? echo $varsel_feldwahl[1] ?> value="1">Nachname</option>             <option <? echo $varsel_feldwahl[2] ?> value="2">Vorname</option>          </select>          <select name="filter" size="1">             <option <? echo $varsel_filter[1] ?> value="1">Beginnt mit :</option>             <option <? echo $varsel_filter[2] ?> value="2">Textteil :</option>          </select>          <input type="text" name="suchtext" value="<?echo $suchtext?>">          <input type="submit" value="Suchen">       </td>       <td>       </td>    </tr>    <tr>       <td> <? print"$style_text_form";

            if (isset($suchtext)) {     $db=mysql_connect("localhost","root","root");

            if(!$db)     {         //Fehlermeldung     }     if(!mysql_select_db("db4all",$db))     {         //Fehlermeldung     }

            switch($feldwahl)     {         case 1:            $t_feldwahl="nachname";            break;         case 2:            $t_feldwahl="vorname";     }

            switch($filter)     {         case 1:            $var_like=$suchtext."%";            break;         case 2:            $var_like="%".$suchtext."%";     }

            //Abfrage für Gesamtanzahl der Datensätze feststellen     $anfrage="SELECT * FROM person WHERE $t_feldwahl LIKE '$var_like' ORDER by 'nachname','vorname';";     $result=mysql_query($anfrage,$db);

            if(!$result)     {         //Fehlermeldung         print "Fehler: $anfrage \n";         die;     }     // Gesamtanzahl der Datensätze feststellen     $db_rows=mysql_num_rows($result);

            //Beim ersten Aufruf ist die Variable nicht definiert     if(!isset($rows_start))     {         $rows_start=0;     }     // Falls bei einer Datensatz-Löschung alles durcheinander kommt     if($rows_start > $db_rows or $rows_start < 0)     {         $rows_start=0;     }

            if($db_rows > $rows_per_page)     {         if($rows_start > 0)         {             $next_page = $rows_start - $rows_per_page;             echo " <a href="$PHP_SELF?suchtext=$suchtext&filter=$filter&feldwahl=$feldwahl&rows_start=$next_page">Vorherige Seite</a>";         }         else         {             echo "Vorherige Seite";         }         $anfrage="SELECT * FROM person WHERE $t_feldwahl LIKE '$var_like' ORDER by 'nachname','vorname' LIMIT $rows_start,$rows_per_page;";         $result=mysql_query($anfrage,$db);

            if(!$result)         {             //Fehlermeldung             print "Fehler: $anfrage \n";             die;         }     }     else     {         echo "Vorherige Seite";     }

            if(($rows_start + $rows_per_page) < $db_rows)     {         $next_page = $rows_start + $rows_per_page;         echo " <a href="$PHP_SELF?suchtext=$suchtext&filter=$filter&feldwahl=$feldwahl&rows_start=$next_page">Nächste Seite</a>";     }     else     {         echo "Nächste Seite</a>";     }     $von=$rows_start+1; ?>       </td>       <td>          <?echo $style_text_form ?>          <?print "($von  / $db_rows)"?>       </td>       <td>       </td>    </tr> </form> </table> <?

            //Ausgabe     print "$style_text_form";

            print "<table border="0" cellpadding="0" cellspacing="1" bgcolor="#EEEEEE">\n";     $text_bg_color="#CCCCCC";     print "   <tr>\n";     print "      <td bgcolor="$text_bg_color">\n";     print "      </td>\n";     print "      <td bgcolor="$text_bg_color">$style_text_form\n";     print "         \n";     print "      </td>\n";     print "      <td bgcolor="$text_bg_color" width="150">$style_text_form \n";     print "         <b>Nachname</b>\n";     print "      </td>\n";     print "      <td bgcolor="$text_bg_color" width="150">$style_text_form\n";     print "         <b>Vorname</b>\n";     print "      </td>\n";     print "      <td bgcolor="$text_bg_color" width="30">$style_text_form\n";     print "         <b>L</b>";     print "      </td>\n";     print "      <td bgcolor="$text_bg_color" width="60">$style_text_form\n";     print "         <b>Plz</b>\n";     print "      </td>\n";     print "      <td bgcolor="$text_bg_color" width="150">$style_text_form\n";     print "         <b>Ort</b>\n";     print "      </td>\n";     print "      <td bgcolor="$text_bg_color" width="150">$style_text_form\n";     print "         <b>Strasse</b>\n";     print "      </td>\n";     print "   </tr>\n";     while ($daten = mysql_fetch_array($result))     {         print "   <tr>\n";         print "      <td bgcolor="$text_bg_color">\n";         print "         <a href="db_person_edit.php?such_id=$daten[id]&suchtext=$suchtext&filter=$filter&feldwahl=$feldwahl&rows_start=$rows_start">                         <img src="/bilder/icon_show.gif" border="0"></a>\n";         print "      </td>\n";         print "      <td bgcolor="$text_bg_color">$style_text_form\n";         print "         $daten[id]\n";         print "      </td>\n";         print "      <td bgcolor="$text_bg_color" width="150">$style_text_form\n";         print "         $daten[nachname]\n";         print "      </td>\n";         print "      <td bgcolor="$text_bg_color" width="150">$style_text_form\n";         print "         $daten[vorname]\n";         print "      </td>\n";         print "      <td bgcolor="$text_bg_color" width="30">$style_text_form\n";         print "         $daten[land]\n";         print "      </td>\n";         print "      <td bgcolor="$text_bg_color" width="60">$style_text_form\n";         print "         $daten[plz]\n";         print "      </td>\n";         print "      <td bgcolor="$text_bg_color" width="150">$style_text_form\n";         print "         $daten[ort]\n";         print "      </td>\n";         print "      <td bgcolor="$text_bg_color" width="150">$style_text_form\n";         print "         $daten[strasse]\n";         print "      </td>\n";         print "   </tr>\n";

            if($text_bg_color=="#CCCCCC")        {            $text_bg_color="#DDDDDD";        }        else        {            $text_bg_color="#CCCCCC";        }     }     print "</table>\n"; }

            ?>

            </body> </html>

          2. Hallo,

            Mit der LIMIT-Anweisung allein komme ich trotzdem nicht klar.
            Ich brauch doch noch in PHP if-Bedingungen um dann dynamisch
            (je nach Datenbankmenge) vor und zurück Blätten zu können.

            Das einzige das Du zur verfügung hast, ist das HTML-Dokument das Du gerade ausgibts. Jetzt mußt Du Du  noch irgendwie Links integrieren (oder auch ein Formular nmit entsprechenden Buttons), um das vor- und zurückblättern überhaupt zu ermöglichen. Diesen Links verpasst Du dann die nötigen Parameter (Du weißt schon, die geschichten nach dem Fragezeichen), welche dann beim nächsten Aufruf des PHP-Scripts auch ausgewertet werden können, um die richtigen LIMIT-Angaben zu setzen.

            Ein Tip, sieh Dir einmal an, wie es Suchmaschinen machen, und versuche so etwas nachzubilden.

            Grüße
              Klaus