Hallo,
vorweg: ich habe leider wenig Erfahrung mit php, also bitte nicht zu kritisch sein.
ich habe mal ein kleines Suchskript geschrieben, mit dem man nach verschiedenen Dingen in einer Datenbank suchen kann (zb. nach deren Namen, Farbe, etc...) und die zutreffenden Ergebnisse ausgegeben bekommt. Das funktioniert auch alles ohne Probleme. Jetzt wollte ich aber gerne noch hinzufügen, dass z.B. max. 20 Ergebnisse pro Seite angezeigt werden. Dazu habe ich mich an Vorlagen aus dem Internet Orientiert, habe jedoch noch ein paar Probleme. Hier mal auszüge aus der search.php
Was funktioniert ist, das nur die ersten 20 Suchergebnisse angezeigt werden. Klicke ich jedoch auf NEXT, komm ich zwar auf die nächste Seite (in der Adresszeile steht auch search.php?pageno=2, jedoch ist dem Skript scheinbar entfallen nach was gesucht wurde und ich bekomme mein "Please specify at least one search criteria" angezeigt. Wie kann ich nun anstellen, dass mein $result, bzw. mein $name, etc.. beim Seitenwechsel nicht verloren gehen?
Wäre sehr dankbar für Tips : )
vorweg: ich habe leider wenig Erfahrung mit php, also bitte nicht zu kritisch sein.
ich habe mal ein kleines Suchskript geschrieben, mit dem man nach verschiedenen Dingen in einer Datenbank suchen kann (zb. nach deren Namen, Farbe, etc...) und die zutreffenden Ergebnisse ausgegeben bekommt. Das funktioniert auch alles ohne Probleme. Jetzt wollte ich aber gerne noch hinzufügen, dass z.B. max. 20 Ergebnisse pro Seite angezeigt werden. Dazu habe ich mich an Vorlagen aus dem Internet Orientiert, habe jedoch noch ein paar Probleme. Hier mal auszüge aus der search.php
PHP:
<?php
$con = mysql_connect("xxx","xxx","xxx");
mysql_select_db("xxx", $con);
$id = $_GET["id"];
$name = $_POST["name"];
$color = $_POST["color"];
$where = array();
if(empty($where)) die ('Please specify at least one search criteria.');
if(!empty($id)) $where[] = "id = '$id'";
if(!empty($name)) $where[] = "name LIKE '%$name%'";
if(!empty($color)) $where[] = "color = '$color'";
$condition = implode (" AND ", $where);
$result = mysql_query("SELECT * FROM table WHERE $condition");
$rows_per_page = 20;
$anz = mysql_num_rows($result);
$lastpage = ceil($anz/$rows_per_page);
//Beziehen der Seite
if (isset($_GET['pageno'])) {
$pageno = $_GET['pageno'];
} else {
$pageno = 1;
}
//Setzen der letzten Seite
$pageno = (int)$pageno;
if ($pageno > $lastpage) {
$pageno = $lastpage;
}
//Setzen der ersten Seite
if ($pageno < 1) {
$pageno = 1;
}
//Setzen des Limits für Ausgaben (20)
$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
//Beziehen der Datensätze
$result = mysql_query("SELECT * FROM cards WHERE $condition $limit");
//Ausgabe
while($row = mysql_fetch_array($result))
{
//Hier werden die Suchergebnisse (z.B. $row['name'] und $row['color'] ausgegeben)
}
//Ganz unten jetzt die Auswahl der Seite
if ($pageno == 1) {
echo " FIRST PREV ";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=1'>FIRST</a> ";
$prevpage = $pageno-1;
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$prevpage'>PREV</a> ";
}
echo " ( Page $pageno of $lastpage ) ";
if ($pageno == $lastpage) {
echo " NEXT LAST ";
} else {
$nextpage = $pageno+1;
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$nextpage'>NEXT</a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$lastpage'>LAST</a> ";
}
mysql_close($con);
?>
Was funktioniert ist, das nur die ersten 20 Suchergebnisse angezeigt werden. Klicke ich jedoch auf NEXT, komm ich zwar auf die nächste Seite (in der Adresszeile steht auch search.php?pageno=2, jedoch ist dem Skript scheinbar entfallen nach was gesucht wurde und ich bekomme mein "Please specify at least one search criteria" angezeigt. Wie kann ich nun anstellen, dass mein $result, bzw. mein $name, etc.. beim Seitenwechsel nicht verloren gehen?
Wäre sehr dankbar für Tips : )