Autor Zpráva
Pupen
Profil *
Víte někdo jak udělat vyhledávač výrazu u výpisu z DB se stránkováním. Když jsem to zkoušel tak mi to vyhledávalo, ale jen z těch 10 výsledků na stránce.
LosFilipos
Profil
Tam je problém s tím, že pokud používáš metodu $_POST tak ta se při přechodu na jinou stránku ruší, tzn., že vyledávač nemá co hledat. Řešením je vložit hledaný výraz buď přes $_GET, nebo $_SESSION.
Pupen
Profil *
Neveděl byste nějaký návod nebo něco takového?
Keeehi
Profil
Co třeba hledat.
LosFilipos
Profil
Vyhledávač:
<form action="search.php" method="post">
Hledaný výraz: <input type="text" name="hledany_vyraz" />
<input type="submit" value="Hledat" />
</form>


search.php
$_SESSION["hledany_vyraz"] = $_POST["hledany_vyraz"];

$search = mysql_real_escape_string($_SESSION["hledany_vyraz"]);
$PZS = 10; // počet záznamů na stránku
$str = 1;    // první strana

if(isset($_GET["str"]) && $_GET["str"] > 0) {$str = $_GET["str"];}
$start = ($str - 1) * $PZS;

$query = "SELECT * FROM `tabulka` WHERE `sloupec` LIKE '$search'";
$pocetVysledku = mysql_num_rows(mysql_query($query));

$query .= " LIMIT $PZS OFFSET $start";

$mysql = mysql_query($query);
while($result = mysql_fetch_array($mysql)) {
//výpis výsledků
}


Stránkování:
echo "<div style='text-align:center;'>" .
      "<a class='listovani' href='./search.php?str=".($str> 1 ? $str - 1 : "1")."'>&laquo;Předchozí</a>&nbsp";

// počet stránek
$pocetStran = (($pocetVysledku % $PZS)> 0) ? (int)($pocetVysledku / $PZS) + 1 : $pocetVysledku / $PZS;
 
 // výpis odkazů na stránky

for ($i = 1; $i <= $pocetStran; $i++) {
    if ($i != $str) {
        echo "<a class='listovani'  href='./search.php?str=".$i."'>".$i."</a>&nbsp;";
    } else { // aktuální strana
        echo "<a class='listovani'  href='./search.php?str=".$i."'><b>".$i."</b></a>&nbsp;";
    }
 }

 echo "<a class='listovani'  href='./search.php?str=".(($str <$pocet) ? $str + 1 : $pocet) ."'>Další&raquo;</a>" .
      "</div>";

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: