| 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: 13 let
|
|||
0