Autor | Zpráva | ||
---|---|---|---|
Pavel Vodnář Profil * |
#1 · Zasláno: 20. 3. 2011, 11:56:32
Ahojky, potřeboval by jsem poradit jakým způsomem dořešit jednoduché vyhledávání textu který mám uložený v databázi, respektive jak vypsat všechny řádky z tabulky kde se klíčové slovo objevuje, které bylo zadáno v inputu:
$vyhledano = zadaný text z inputu Prozatím sem vytvořil phpko: $dotaz2="SELECT text FROM inzeraty WHERE text=$vyhledano "; $vysledek = MySQL_Query($dotaz2); // while ($zaznam = MySQL_Fetch_Array($vysledek)){ $nadpis=$zaznam["nadpis"]; $text=$zaznam["text"]; $zkraceny_text=substr("$text", 0, 185); $cas=$zaznam["cas"]; $id=$zaznam["id_inzeratu"]; $datum=$zaznam["datum"]; } Děkuji |
||
panther Profil |
#2 · Zasláno: 20. 3. 2011, 12:00:47
Pavel Vodnář:
- dotazu je syntaktická chyba - najdi si něco o fulltextu |
||
Pavel Vodnář Profil * |
#3 · Zasláno: 20. 3. 2011, 12:11:13
panther:
chybku jsem opravil $dotaz2="SELECT text FROM inzeraty WHERE text='$vyhledano' "; v tuto chvíli musím zjistit jak udělat aby to vypsalo text z vyhledávaného slova nikoliv celého textu |
||
jenikkozak Profil |
#4 · Zasláno: 20. 3. 2011, 13:19:07
Pavel Vodnář:
- Lépe ti bude vyhledávat fulltext. - Do cyklu dej vypsání získaných hodnot, takto jen stále přepisuješ ty proměnné. - Najdi si něco o vypisování dat z databáze. „v tuto chvíli musím zjistit jak udělat aby to vypsalo text z vyhledávaného slova nikoliv celého textu“ Cože? Text z vyhledávaného slova? Nebude to náhodou to slovo samotné? |
||
Pavel Vodnář Profil * |
#5 · Zasláno: 20. 3. 2011, 13:19:39
Opravil jsem to takto:
<?php $submit = $_POST['submit']; $vyhledat = AddSlashes($_POST['vyhledat']); // údaje pro připojení k DB $localhost = "................................."; $user ="..............................."; $pass = ".................................."; $connect = mysql_connect ("$localhost","$user","$pass") or die("Nepodařilo se připojit k databázi"); mysql_select_db ("..................."); //select database MySQL_Query('SET NAMES utf8'); if ($submit) { if ($vyhledat=='') {$error='Nazadali jste text pro vyhledávání';} else $vyhledano=$vyhledat; //echo $text; $dotaz2="SELECT text, nadpis FROM inzeraty WHERE match (text) against ('".$vyhledano."') "; $vysledek = MySQL_Query($dotaz2, $connect); // provedení sql dotazu // POCET NALEZENYCH CLANKU $num = MySQL_Num_Rows($vysledek); while ($zaznam = MySQL_Fetch_Assoc($vysledek)){ $nadpis=$zaznam['nadpis']; $text=$zaznam['text']; print $nadpis; print $text; } } ?> Ale pořád mi to vypisuje chybu u mysql_num_rows(): a mysql_fetch_assoc() proč? Děkuji |
||
GeneralDv Profil |
#6 · Zasláno: 20. 3. 2011, 13:31:02 · Upravil/a: GeneralDv
Pavel Vodnář:
„Ale pořád mi to vypisuje chybu u mysql_num_rows(): a mysql_fetch_assoc() proč?“ Protože si ty funkce neporadí s návratovou hodnotou -> SQL dotaz máš špatně. Vypiš si mysql_error(). Ještě připomenu že u sloupců ve kterejch vyhledáváš musíš mít nastavenej fulltextovej index. |
||
Pavel Vodnář Profil * |
#7 · Zasláno: 20. 3. 2011, 19:27:35
mysql_error() = Can't find FULLTEXT index matching the column list, znamená to tedy že Nelze najít FULLTEXT index odpovídající sloupce seznamu? jak ho nastavím?
|
||
Pavel Vodnář Profil * |
#8 · Zasláno: 20. 3. 2011, 19:46:28
Už to beží - chyba byla v nastaveni fulltextoveho indexu, díky
|
||
Pavel Vodnář Profil * |
#9 · Zasláno: 20. 3. 2011, 20:34:59
Prosímvás ještě by jsem měl dotaz - > vytvořil jsem podmínku že když bude vyhledávaný text vypíše to výsledek na jinou stránku, jak udělat aby ta jiná stránka si pamatovala údaje?
|
||
Tori Profil |
#10 · Zasláno: 20. 3. 2011, 20:45:14
session
|
||
Časová prodleva: 13 let
|
0