Autor | Zpráva | ||
---|---|---|---|
marko12 Profil * |
#1 · Zasláno: 7. 5. 2012, 09:24:42
Dobrý deň,
mám jeden problém so svojim skriptom pre FullTextove vyhľadávanie v databáze MySQL. Skúšam si sam urobiť skript no nechce mi vypísať výsledky aj keď dané slovo sa nachádza v databáze. function odstranDiakritiku($str) { //pismena s diakritikou $dia = array('á', 'ä', 'č', 'ď', 'é', 'ě', 'í', 'ľ', 'ĺ', 'ň', 'ó', 'ô', 'ŕ', 'ř', 'š', 'ť', 'ú', 'ů', 'ý', 'ž', 'Á', 'Ä', 'Č', 'Ď', 'É', 'Í', 'Ľ', 'Ĺ', 'Ň', 'Ó', 'Ô', 'Ř', 'Š', 'Ť', 'Ú', 'Ý', 'Ž'); //prislusne pismena bez diakritiky $nodia = array('a', 'a', 'c', 'd', 'e', 'e', 'i', 'l', 'l', 'n', 'o', 'o', 'r', 'r', 's', 't', 'u', 'u', 'y', 'z', 'A', 'A', 'C', 'D', 'E', 'I', 'L', 'L', 'N', 'O', 'O', 'R', 'S', 'T', 'U', 'Y', 'Z'); return str_replace($dia, $nodia, $str); } //Overime ci bolo stlacene tlacitko HLADAT if (isset($_POST["hladat"])) { echo "<h2>Vysledky</h2>"; $find = $_POST["find"]; if ($find == "") { echo "<p>Nezadali ste ziadne slovo</p>"; exit; } // Trosku upravime vlozene slovo $find = strtoupper($find); $find = strip_tags($find); $find = trim ($find); $find = odstranDiakritiku($find); if (strlen($find) <=3) { echo "<p>Zadané slovo musí obsahovať najmenej 4 znaky.</p>"; } //Skript na vyhladavanie v databaze $data = mysql_query("SELECT * FROM clanky WHERE odstranDiakritiku(upper(nadpis)) AND odstranDiakritiku(upper(nadpis)) AND odstranDiakritiku(upper(nadpis)) LIKE'%$find%' COLLATE 'utf8_general_ci'"); //And we display the results while($result = mysql_fetch_array( $data )) { echo $result['nadpis']; echo "<br>"; echo $result['odsek']; echo "<br>"; echo "<br>"; } //Zistíme počet výsledkov $anymatches=mysql_num_rows($data); if ($anymatches == 0) { echo "Zadané slovo sa v databáze nenachádza<br><br>"; } //Pripomenieme uzivatelovi, ze co hladat echo "<b>Hladane slovo:</b> " .$find; } ?> Stále mi to vypíše: Zadané slovo sa v databáze nenachádza. Určite bude chyba v premennej $data mohli by ste ma uviesť na pravu mieru, že ako to má vyzerať? Ďakujem veľmi pekne, prajem pekný deň. |
||
Oli Profil * |
#2 · Zasláno: 7. 5. 2012, 11:21:20
Myslím, že takhle nemůžes uvnitř řetězce použít funkci. A ještě jsem nepochopil, proč tam je 3x AND na to samé.
Podle tohodle se navíc snažíš o něco, co není potřeba. ;-) |
||
marko12 Profil * |
#3 · Zasláno: 7. 5. 2012, 13:41:19
Nahradil som to tymto:
$data = mysql_query("SELECT nadpis,odsek,text FROM LOWER(clanky) LIKE LOWER('%$find%') COLLATE 'utf8_general_ci'"); |
||
marko12 Profil * |
#4 · Zasláno: 7. 5. 2012, 20:40:50
Kde je problem?
Nahradil som premennu data tymto: $data = mysql_query("SELECT * FROM clanky LIKE %".$find."% COLLATE 'utf8_general_ci'"); a aj tak nič nenájde. Prihlásenie do databázy mám a aj tabuľka clanky existuje. Vedel by teda niekto poradiť, kde mám chybu? Stále sa vypíše,že zadané slovo sa v databáze nenachádza. Ďakujem |
||
Alphard Profil |
SQL dotaz jste redukoval tak dlouho, až jste ztratil where a sloupec. Vyhledávaný výraz není obalen apostrofy.
|
||
abc Profil |
#6 · Zasláno: 7. 5. 2012, 20:57:06
marko12:
chybí ti tam WHERE ;) |
||
Časová prodleva: 12 let
|
0