Autor | Zpráva | ||
---|---|---|---|
gogy27 Profil |
#1 · Zasláno: 10. 5. 2012, 16:16:57
Dobrý deň,
mám nasledujúci skript, no neviem prečo mi ho mysql nechce spracovať: <?php $find = $_GET["find"]; //Skript na vyhladavanie v databaze $pole_find = explode(" ", $find); $pocet_find = count($pole_find); $pole_stlpce = array(0 => "nadpis", 1 => "text", 2=> "odsek"); $a = 0; $b = 0; $query = "SELECT * FROM clanky WHERE ("; $pocet_stlpce = count($pole_stlpce); while ($a < $pocet_stlpce) { while ($b < $pocet_find) { $query = $query."$pole_stlpce[$a] LIKE '%$pole_find[$b]%'"; $b++; if ($b < $pocet_find) { $query = $query." AND "; } } $b = 0; $a++; if ($a < $pocet_stlpce) { $query = $query.") OR ("; } } $query = $query.")"; // overíme a získame počet výsledkov $celkem=mysql_num_rows($query); if ($celkem == 0) { $chyby.="Zadané slovo sa v databáze nenachádza<br>"; } if (!isset($_GET["od"])) $od=1; else $od=$_GET["od"]; if ($od >= 11) { $od = $od - $od%10; } $pomoc=$od-1; $query = $query." COLLATE 'utf8_general_ci' LIMIT $pomoc, 10"; $data = mysql_query($query); ?> A tu to stale stroskotá na: Zadané slovo sa v databáze nenachádza. Ak vypíšem čisto $query ako text tak dostanem pekne napríklad toto: SELECT * FROM clanky WHERE (nadpis LIKE '%rokoch%') OR (text LIKE '%rokoch%') OR (odsek LIKE '%rokoch%') Neviem kde mám chybu, keďže pripojenie ku databáze mám a aj tabuľku s názvom clanky a aj stlpce (text, nadpis, odsek) mam vytvorene v nej. Ďakujem za každú radu, prajem pekný zvyšok dňa. |
||
Keeehi Profil |
#2 · Zasláno: 10. 5. 2012, 16:25:16
řádky 36-40 smaž a toto vlož na konec:
$pocet=mysql_num_rows($data); if ($pocet == 0) { //$chyby.="Zadané slovo sa v databáze nenachádza<br>"; echo "Zadané slovo sa v databáze nenachádza<br>"; } else { echo "Počet výsledků: $pocet<br>"; } |
||
gogy27 Profil |
#3 · Zasláno: 10. 5. 2012, 17:08:06 · Upravil/a: gogy27
Keeehi:
Tam stačilo pridať: $celkem=mysql_num_rows(mysql_query($query)); Už vypíše aj počet výsledkov. Problém však je teraz, že sa mi nevykoná tento cyklus: $query = $query." COLLATE 'utf8_general_ci' LIMIT $pomoc, 10"; $data = mysql_query($query); if ($chyby == ''){ // ak tu mám hocičo tak to funguje (mám tu formulár pre vyhľadávanie, len som ho sem zbytočne nekopíroval) while($result = mysql_fetch_array( $data )) { switch ($result["kategoria"]) { case 1: echo '<a href="../index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; case 2: echo '<a href="../pojmy/index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; case 3: echo '<a href="../vzory/index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; case 4: echo '<a href="../predpisy/index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; case 6: echo '<a href="../kontakt.php" title="Čítaj viac" class="nadpis">Kontakt</a><br><br><hr>'; break; } } } else { echo "<p style='color:red;'>$chyby</p>"; } Uz som si to opravil. Collate nesmie byt za celym skriptom, ale za kazdym LIKE v SQL dotaze. |
||
Časová prodleva: 11 let
|
0