Autor Zpráva
Vasek
Profil *
Ahoj, spravil jsem takovehle vyhledavani, ale dela to neco jineho nez chci.
Teda, ono vyhledava, ale neumi diakritiku a velka pismena. Muzete mi pomoci, a nebo poupravit tento kod? Dik.

<?
function upravstr($nazev){
$diakritika = Array(
'ä' => 'a',
'Ä' => 'a',
'á' => 'a',
'Á' => 'a',
'č' => 'c',
'Č' => 'c',
'ć' => 'c',
'Ć' => 'c',
'ď' => 'd',
'Ď' => 'd',
'ě' => 'e',
'Ě' => 'e',
'é' => 'e',
'É' => 'e',
'ë' => 'e',
'Ë' => 'e',
'í' => 'i',
'Í' => 'i',
'µ' => 'l',
'Ą' => 'l',
'ń' => 'n',
'Ń' => 'n',
'ň' => 'n',
'Ň' => 'n',
'ó' => 'o',
'Ó' => 'o',
'ö' => 'o',
'Ö' => 'o',
'ř' => 'r',
'Ř' => 'r',
'ŕ' => 'r',
'Ŕ' => 'r',
'ą' => 's',
'©' => 's',
'¶' => 's',
'¦' => 's',
'»' => 't',
'«' => 't',
'ú' => 'u',
'Ú' => 'u',
'ü' => 'u',
'Ü' => 'u',
'ý' => 'y',
'Ý' => 'y',
'ľ' => 'z',
'®' => 'z',
'Ľ' => 'z',
'¬' => 'z'
);
$nazevx = strtr($nazev,$diakritika);
$nazevx = strtolower($nazevx);
return $nazevx;
}
$_GET['word'] = upravstr(htmlspecialchars($_GET['word'],ENT_QUOTES));
?>
<?php
mysql_connect("***","***,"****");
mysql_select_db("**");

$sql = "SELECT *,MATCH (jmeno, popis) AGAINST ('$_GET[word]' IN BOOLEAN MODE)
relevancy FROM
produkty WHERE MATCH (jmeno, popis) AGAINST ('$_GET[word]' IN BOOLEAN MODE)
ORDER BY
relevancy DESC";



$q = mysql_query ($sql);
echo mysql_error();
$n = mysql_num_rows($q);

?>
<p><?php echo $n; ?>
K
Profil *
rekl bych ze ti tu diakritiku nepobere ta fce strtr(). Zkus ty znaky zapsat jinak(napr. Č = %C8, č = %E8) atp.
Vasek
Profil *
Muzes mi ukazat, jak je mam zapsat nejsem moc zkuseny. Dik
K
Profil *
Array(
'ä' => 'a',
'Ä' => 'a',
'á' => 'a',
'Á' => 'a',
'%E8' => 'c', // č
'%C8' => 'c', // Č
'ć' => 'c',
atp.

napred to zkus jen pro to č a zkus neco co to č obsahuje vyhledat-co ti to udela a kdyz to bude fungovat tak zkus prepsat vsechny.
Vasek
Profil *
ne, nejde to. co vlastne znamena '%C8' ? DIk
pavel prochazka.zde.cz
Profil *
chces odstranit diakritiku? pokud ano tak zkus moji fce, kterou mam uz hodnekrat odzkousenou..... :)

function StandartString ($sBuffer){
//Tato funkce odstrani diakritiku a velka pismena prevede na mala...
$sBuffer=StrTr($sBuffer,"áÁéÉíÍóÓúÚůŮýÝěĚą©čČřŘľ®»«ďĎňŇQWERTYUIOPASDFG HJKLZXCVBNM","aaeeiioouuuuyyeessccrrzzttddnnqwertyuiopasdfghjklzxcvbnm ");
return $sBuffer;
}

UPORIZNENI!!! Tu merezu v rede pismen smaz, ja ji tam nemam ale po odeslani sem se vytvori......
pavel prochazka.zde.cz
Profil *
Je to mezera mezi G a H pismenem, tu smaz ve zdrojaku!!!
Vasek
Profil *
jak ma teda ted vypadat muj cely kod? :)
tiso
Profil
Vasek
OT: ako má vypada» Tvoj kód by si mal vedie» ty. Ak to tu niekto napíąe tak to uľ nebude Tvoj kód. Sorry za poznámku, ale nemám rád túto formu lenivosti pohnú» vlastným rozumom...
Vasek
Profil *
Tohle mi nefunguje:

<?

function StandartString ($sBuffer){
//Tato funkce odstrani diakritiku a velka pismena prevede na mala...
$sBuffer=StrTr($sBuffer,"áÁéÉíÍóÓúÚůŮýÝěĚą©čČřŘľ®»«ďĎňŇQWERTYUIOPASDFG HJKLZXCVBNM","aaeeiioouuuuyyeessccrrzzttddnnqwertyuiopasdfghjklzxcvbnm ");
return $sBuffer;
}
$_GET['word'] = StandartString(htmlspecialchars($_GET['word'],ENT_QUOTES));
?>
<?php
mysql_connect("***","***","***");
mysql_select_db("***");

$sql = "SELECT *,MATCH (jmeno, popis) AGAINST ('$_GET[word]' IN BOOLEAN MODE)
relevancy FROM
produkty WHERE MATCH (jmeno, popis) AGAINST ('$_GET[word]' IN BOOLEAN MODE)
ORDER BY
relevancy DESC";



$q = mysql_query ($sql);
echo mysql_error();
$n = mysql_num_rows($q);

?>
pavel prochazka.zde.cz
Profil *
moje funkce je ok.... tak to skus rozlozit a ne davat vysledek rovnou do: $_GET['word'] a podivat se na mezivysledek.....
Vasek
Profil *
Ja nejsem v php dobry, ale to vyhledavani jsem se chtel naucit. Nemohl by jsi sem dat nejake svoje, ktere funguje a neni moc slozite? ze bych se to na nem naucil.
pavel prochazka.zde.cz
Profil *
ja mam vyhledavani a mam ho dane na svem webu.... muzes zkustit zda to funguje ok.... ale nemam to pres databazi ale pres soubory.... cely svuj web mam v souborech..... .)
Vasek
Profil *
tak to je mi nanic, ja to potrebuju pres db.. nema to nekdo prosim?
pavel prochazka.zde.cz
Profil *
ale princip je stejny akorat se to cte misto z DB ze souboru.....
Vasek
Profil *
Tak poslal by jsi mi to prosim?
Vasek
Profil *
bud to sem zkopiruj, nebo ti dam icq nebo mail

dik
Vasek
Profil *
icq - 281 859 435
krteczek
Profil
Vasek: vyhledávání skus tohle:


$slovo = addslashes( htmlspecialchars($_GET['word']));
$dotaz2 = "SELECT * FROM produkty WHERE (jmeno LIKE '%" . $slovo . "%') OR (popis LIKE '%" . $slovo . "%') ";
if($v = mysql_query($dotaz))
{
$p = mysql_num_rows($v);
if($p > 0)
{
for($i = 0; $i < $p; $i++)
{
$r = mysqk_fetch_assoc($v);
//tady si to zpracuj dál
}
}
else
{
echo 'lituji nebyl nalezen ľáden záznam';
}
}
else
{
echo 'databáze vrátila na váą dotaz: <br>' . $dotaz . '<br>chybu číslo: ' . mysql_errno() . '<br>Její znění je: <br>' . mysql_error();
}

krteczek
Vasek
Profil *
Zkousel jsem to ale vratilo mi to Query was empty. :(
krteczek
Profil
Jeľiąi omlouvám se: momentálně je tam překlep...
Ale jedna pozitivní věc, server ti řekl jakou chybu máą ;-)
$dotaz2 = ...
ale má být :$dotaz = ...
přebývá tam dvojka u názvu té proměnné, a nejde to jiľ opravit
ps tak to tu dávám znovu...:

$slovo = addslashes( htmlspecialchars($_GET['word']));
$dotaz = "SELECT * FROM produkty WHERE (jmeno LIKE '%" . $slovo . "%') OR (popis LIKE '%" . $slovo . "%') ";
if($v = mysql_query($dotaz))
{
$p = mysql_num_rows($v);
if($p > 0)
{
for($i = 0; $i < $p; $i++)
{
$r = mysqk_fetch_assoc($v);
//tady si to zpracuj dál
}
}
else
{
echo 'lituji nebyl nalezen ľáden záznam';
}
}
else
{
echo 'databáze vrátila na váą dotaz: <br>' . $dotaz . '<br>chybu číslo: ' . mysql_errno() . '<br>Její znění je: <br>' . mysql_error();
}

teď uľ by to mělo být v pořádku
krteczek
Toto téma je uzamčeno. Odpověď nelze zaslat.

0