Diskuze: Fulltextové vyhledávání

PHP PHP Fulltextové vyhledávání American English version English version

Avatar
Karlos
Člen
Avatar
Karlos:

Ahoj
Chci se zeptat jestli někdo neumí udělat fulltextové vyhledávání. Našel jsem spoustu návodů ale ani jeden mi nefungoval a psal error.
Zkusil jsem si to napsat sám a dopadlo to takhle:

SELECT * FROM tabulka WHERE MATCH(`jménosloupcu`) AGAINST ('".$Text."')

Bude to fungovat typem fulltextového vyhledání?? Tím tedy myslím napíšu "aho" a vyhledá to slovo kde je "aho" a vypíše to celý řádek kde bylo slovo nalezený. Moc díky všem za radu a vše co napíšou.

 
Odpovědět 4.1.2014 20:10
Avatar
done
Člen
Avatar
Odpovídá na Karlos
done:

Nejsem si jistý jestli je to dobře, ale takhle by to mohlo fungovat:

SELECT * FROM `tabulka` WHERE `nazev` LIKE %$text%
 
Nahoru Odpovědět  +1 4.1.2014 20:15
Avatar
Karlos
Člen
Avatar
Odpovídá na done
Karlos:

Díky zkusím to :-)

 
Nahoru Odpovědět 4.1.2014 20:25
Avatar
Kit
Redaktor
Avatar
Odpovídá na Karlos
Kit:
SELECT * FROM `tabulka` WHERE MATCH(`titulek`, `clanek`) AGAINST('slovo');
Nahoru Odpovědět 4.1.2014 20:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Karlos
Člen
Avatar
Odpovídá na Kit
Karlos:

Moc se v PHP nevyznám je toto správně ?? Píše mi to varování.
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in index.php on line 4

 <?php
$vysledek=mysql_query("SELECT * FROM `new` WHERE MATCH(`jmeno`, `text`) AGAINST('$text')");
       $text = AddSlashes($_POST['word']);
      while (MySQL_Fetch_Array($vysledek)){
        echo "Vyhledáno";
      }
 ?>
 
Nahoru Odpovědět 4.1.2014 21:32
Avatar
Kit
Redaktor
Avatar
Odpovídá na Karlos
Kit:

Pro příznivce mých skriptů:
http://www.itnetwork.cz/dev-lighter/277

K čemu tam máš tu funkci AddSlashes()? Ta se přece už dávno nepoužívá, protože není bezpečná.

Nahoru Odpovědět 4.1.2014 21:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Karlos
Člen
Avatar
Odpovídá na Kit
Karlos:

Moc díky za kód a toto přidává do tabulky v databázi ??

$insert->execute(array('Muži', 'Franta, Pavel, Jindra a Josef'));
 
Nahoru Odpovědět  -1 4.1.2014 21:41
Avatar
Kit
Redaktor
Avatar
Odpovídá na Karlos
Kit:

Ano. Nemusíš ty stringy nijak ošetřovat. Je to bezpečné ukládání. Klidně i takto:

$insert->execute(array($_POST['titulek'], $_POST['clanek']));
Editováno 4.1.2014 21:44
Nahoru Odpovědět 4.1.2014 21:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Karlos
Člen
Avatar
Odpovídá na Kit
Karlos:

Moc díky za všechno :-)

 
Nahoru Odpovědět 4.1.2014 21:44
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Kit
Marek Z.:

Není to nebezpečné pouze v případě když je zapnuto magic_quotes_gpc?

addslashes používá php-fusion třeba stále, ale možná pouze pro administrační používání kvůli php skriptům přímo v novinkách.

Ještě myslím, že to je nevhodné protože to potom znehodnocovalo text když už před ošetřením obsahoval např. \'..

Nahoru Odpovědět 4.1.2014 22:16
Chybami se člověk učí, běžte se učit jinam!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Marek Z.
Kit:

magic_quotes by mělo být standardně vypnuto. Je to zvěrstvo, které nesmyslně przní vstupní text.

Nahoru Odpovědět 4.1.2014 22:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Marek Z.
Kit:

V PHP 5.4 už magic_quotes_gpc naštěstí bylo zrušeno.

Nahoru Odpovědět 4.1.2014 22:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Kit
Marek Z.:

Také jsem si to četl.. :)

Nahoru Odpovědět 5.1.2014 0:08
Chybami se člověk učí, běžte se učit jinam!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.