Autor | Zpráva | ||
---|---|---|---|
Akali Profil |
#1 · Zasláno: 7. 11. 2010, 09:37:35
Ahoj, snažím se o vytvoření vyhledávače na mém webu.. Tady mám php script
<?php include '../db.php'; $objekt_vysledku = mysqli_query($db_spojeni, "SET NAMES 'UTF8'"); $objekt_vysledku = mysqli_query($db_spojeni, 'SELECT'); while ($radek = mysqli_fetch_array($objekt_vysledku)) { echo 'vypis dat'; } mysqli_free_result($objekt_vysledku); if ($db_spojeni) mysqli_close($db_spojeni); ?> Ale vůbec nevím, jak by měl vypadat SQL dotaz. Potřeboval bych, aby se při zadání textu například (okno) vyhledal tento výraz v DB a pak se při výpisu seřadil podle těchto kritérií. Pokud bude výraz v sloupci "nadpis" tak by se řadil jako první a pokud bude ve sloupci "text" tak aby se řadil pod ně. Doufám, že to vysvětluji dostatečně a také doufám, že tu bude nějaká dušička, která by mi s problémem pomohla. Tady je struktura db CREATE TABLE IF NOT EXISTS `texty` ( `id` int(11) NOT NULL auto_increment, `nadpis` varchar(100) collate cp1250_czech_cs default NULL, `text` varchar(5000) collate cp1250_czech_cs default NULL, `info` varchar(100) collate cp1250_czech_cs default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs AUTO_INCREMENT=3 ; |
||
svadla Profil |
#2 · Zasláno: 7. 11. 2010, 12:30:24
Doporučuji prostudovat.
|
||
Akali Profil |
#3 · Zasláno: 7. 11. 2010, 17:51:11
Ani po přečtení toho textu z toho nejsem úplně moudrej..
|
||
Akali Profil |
#4 · Zasláno: 9. 11. 2010, 10:35:30
<?php include 'db.php'; $search = mysql_real_escape_string($_GET["search"]); $result = mysql_query(" SELECT * FROM texty WHERE MATCH(nadpis, text) AGAINST ('$search' IN BOOLEAN MODE) ORDER BY 5 * MATCH(nadpis) AGAINST ('$search') + MATCH(text) AGAINST ('$search') DESC "); while ($radek = mysql_fetch_array($result)) { echo '',$radek['nadpis'],'<br>'; echo '',$radek['text'],''; } if ($db_spojeni) mysql_close($db_spojeni); ?> pořád mám chybu na tomto řádku a už nevím ja kji vyřešit :( while ($radek = mysql_fetch_array($result)) |
||
Kajman_ Profil * |
#5 · Zasláno: 9. 11. 2010, 10:56:20
pořád mám chybu na tomto řádku a už nevím ja kji vyřešit
Důležité je, vypsat si tu chybu! Viz. http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=37836#chyba Tipuji, že v order by používáte fulltextové funkce (bez boolean přepínače) vyžadující vytvořený fulltextový index. |
||
Akali Profil |
#6 · Zasláno: 9. 11. 2010, 11:51:56
Tak mi to vypsalo tuhle chybu, ale vůbec nechápu proč.. Údaje k připojení do databáze jsou všechny správné
No database selected |
||
Kajman_ Profil * |
#7 · Zasláno: 9. 11. 2010, 12:27:06
A v db.php máte co? (Heslo a tak nemusíte uvádět přesně.)
|
||
Akali Profil |
#8 · Zasláno: 9. 11. 2010, 16:43:28
$db_spojeni = mysql_connect ('mysql5-4', '------', '------', '------'); nic víc.. |
||
Keeehi Profil |
#9 · Zasláno: 9. 11. 2010, 16:48:11
$link = mysql_connect('mysql5-4', 'mysql_user', 'mysql_password'); mysql_select_db('databáze', $link); |
||
Akali Profil |
#10 · Zasláno: 9. 11. 2010, 18:18:43
Proč takto, jakej je v tom rozdíl a co to řeší za problém??
|
||
Keeehi Profil |
#11 · Zasláno: 9. 11. 2010, 18:47:51 · Upravil/a: Keeehi
Akali:
Protože takto je to správně. Moje na rozdíl od vašeho vybere databázi. Řeší to problém nevybrané databáze. Nevím, co máte místo posledního '------', ale pokud tam máte jméno databáze, tak je to špatně. Podívejte se do dokumentace, co se očekává jako čtvrtý parametr. Název databáze to není. Databázi je ale potřeba vybrat. A dělá se to funkcí mysql_select_db(). |
||
Akali Profil |
#12 · Zasláno: 9. 11. 2010, 22:34:13 · Upravil/a: Akali
Fíha, měl jsi pravdu, byla chyba v db.php.. Ikdyž to nechápu, protože jsem to tak dělal pořád a fungovalo to.. No nic, tak jsem se zase poučil..
Ještě bych rád radu, jak ošetřím aby se v DB vyhledávala malá i velká písmena (například zadaný text "okno" nic nenajde, protože v db je to uložené jako "Okno"... A ještě mě napadlo jedno. Když ve sloupci "text" bude daný výraz, šlo by, aby se vypsal na webu ten výraz a před něj se vypsalo 50znaků a za něj 50znaků celého textu? Takže aby se ten text ořízl okolo daného výrazu? Pokud je to ovšem nějak složité, vykašlal bych se na to.. Jinak, děkuji! |
||
Časová prodleva: 13 let
|
0