Autor Zpráva
miksuck
Profil
Dobrý den,

odpověď jsem hledal již zde na fóru, ale po týdnu neúspěšných pokusů jsem se rozhodl napsat sem.

Potřeboval bych poradit nějaký jednoduchý skript (PHP), který by vyhledával v databázi a vypisoval výsledky na základě vstupu z formuláře. Příklad - mám databázi o dvou proměnných, v jedné je uložený pojem, ve druhé jeho definice. Na stránce bych měl formulář, kde by bylo pole, do kterého bych napsal daný pojem, a button vyhledat. Nejlepší by byl našeptávač, aby byly vidět dané pojmy. Snad chápete můj dotaz. Prosím o velmi jednoduchý skript.

Děkuji
bestik_63
Profil
ahoj tipl bych si, že moc zkušeností s programováním nemáš, takže bych ti našeptávač moc nedoporučil. To už je trochu vyšší dívčí. Také potřebuješ nějaké statistické data abys měl z čeho našeptávat :-)
Co se týče toho vyhledávání:
vyhledávání v databázi (MYSQL) uděláš příkazem SELECT * FROM "jméno tabulky" WHERE pojem LIKE %$_POST['pojem']% (% zastupuje libovolný počet znaků, $_POST['pojem'] je hodnota z INPUT formuláře).

DO PHP to dáš např. takto:
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
$result = mysql_query('SELECT * FROM "jméno tabulky" WHERE pojem LIKE %'.$_POST['pojem'].'%;');
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
else{
while ($row = mysql_fetch_assoc($result)) {
    echo $row["pojem"];  //zde se vypisují výsledky hledání
}
}
mysql_close($link);

příkazy neodzkoušeny, snad to bude přesně, je to z manuálu PHP
jefitto44
Profil
Odporúčam používať mysqli_ funkcie
juriad
Profil
jefitto44:
Ony jsou v bestikově příspěvku vážnější chyby:
1) jméno tabulky se nepíše do uvozovek (jako v Oracle), ale buď bez ohraničení, nebo mezi zpětné apostrofy
2) LIKE vyžaduje řetězec, nikoli literál začínající a končící procentem
3) kód spoléhá, že uživatel nevyhledá nic nebezpečného, je třeba ošteřit $_POST['pojem']
A pak ještě:
4) mysql_close není obvykle potřeba a jeho použítí může způsobit chyby (když si omylem zavřeš spojení příliš brzy)
5) die rozhodně není dobrý způsob oznamování chyb

Zrovna to použití mysql_* bych odpustil.

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: