Limitierte SELECT-Abfrage
riethmunk
- datenbank
0 Daniela Koller0 riethmunk0 Daniela Koller0 riethmunk0 Oskar K.0 Klaus Mock
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!
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
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?
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.
Gruss Daniela
PS. Anrede und Gruss sind auch in Folgepostings gern gesehen
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
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>
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