Autor Zpráva
w8
Profil *
Ahoj. Zajimalo bymne, jak pokračovat v tomto pro vsechna pismena. Dekuji



Array(
'ä' => 'a',
'Ä' => 'a',
'á' => 'a',
'Á' => 'a',
'%E8' => 'c', // č toto
'%C8' => 'c', // Č toto
'ć' => 'c',
atp.
pavel prochazka.zde.cz
Profil *
tezko rici.... nevim co resis....:)
w8
Profil *
no, jde o to, ze z tohoto

'Č' => 'c',
'ć' => 'c',

udelam toto

'%E8' => 'c', // č toto
'%C8' => 'c', // Č toto
pavel prochazka.zde.cz
Profil *
takze chces odstranit diakritiku? Z jakeho kodovani.....
A moje funkce StandartStrin ti nestaci?
w8
Profil *
No, toto funguje a tamto sem nerozchodil:(
pavel prochazka.zde.cz
Profil *
to je nejak divne..... zde mas popis funkce ktera je v te me funkci standartstring..... skuste si doma skusit nejake pokusy:




strtr
(PHP 3, PHP 4, PHP 5)

strtr -- Translate certain characters
Description
string strtr ( string str, string from, string to )

string strtr ( string str, array replace_pairs )


This function returns a copy of str, translating all occurrences of each character in from to the corresponding character in to.

If from and to are different lengths, the extra characters in the longer of the two are ignored. Example 1. strtr() example

<?php
$addr = strtr($addr, "äåö", "aao");
?>



strtr() may be called with only two arguments. If called with two arguments it behaves in a new way: from then has to be an array that contains string -> string pairs that will be replaced in the source string. strtr() will always look for the longest possible match first and will *NOT* try to replace stuff that it has already worked on.

Example 2. strtr() example with two arguments

<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>

This will show:

hello all, I said hi



Note: This optional to and from parameters were added in PHP 4.0.0
w8
Profil *
Momentalne mi staci spravny zapis vsech pismen ve formatu '%C8' ale nevim, kde to najit, takze kdyby to nekdo mel, prosim Vas o to... a nebo par vet o tomto "kodovani" znaku.
pavel prochazka.zde.cz
Profil *
nevim co je to za kodovani.... Ja mam ascii tabulku jen do 7F.... A tam neni diakritika... je to tabulka zroku 1989... Skuste pouzit funkci na prevod asii kodu na znak zda neni ta hodnota totozna.... pokud ano, tak si udelejte cyklus ktery vypise vsechny hodnoty a nebo jeste lepe vyrovy rovnou ten php kod.... at se stim nemusite silene piplat :)
krteczek
Profil
w8:mužeš prosímtě ukázat celou aplikaci někde na netu, k tomu celý jeji kod a přesně specifikovat proč překládáš písmena na bezdiakritické písmo? možná bysme pochopili o co Ti jde a nabídli ti sofistikovanější řešení... čím více informací polopaticky podaných tim lépe (snad)
krteczek
w8
Profil *
No, jde mi o vyhledavani. A jen potrebuji vytvorit to vyse. Ukazka kodu:

<?
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;
}

Nejaka dobra duse mi poradila, at zkusim dat misto

'č' => 'c',
'Č' => 'c',

toto:

'%E8' => 'c',
'%C8' => 'c',

Pote jsme zkusil vyhledavat text, kde bylo č a jinak zadna diakritika, a slo to. takze chci prevest i ostatni pismenka na tyhle zaznamy.. rozumite mi uz?
krteczek
Profil
Já jsem měl na mysli včetně toho formuláře...
Anonymní
Profil *
> Nejaka dobra duse mi poradila, at zkusim dat misto
tak nech ti povie aj ostatok :)

nestaci toto:


$search = StrTr ($search, "áäčďľéěëíňóöřšťúůüýžÁÄČĎĽÉĚËÍŇÓÖŘŠŤÚŮÜÝŽ",
"aacdleeeinoorstuuuyzAACDLEEEINOORSTUUUYZ");
w8
Profil *
muzes mi ukazat, jak to bude vypadat v tomto kodu prosim? Nevim, jak to napojit... Proto hledam tamtu alternativu.

<?
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; ?>


<?//if ($n='1')
//echo "záznam";
//elseif ($n='2,3,4')
// echo "záznamy";
//else
// echo "záznamů";
//endif;

?>
záznamy/ů</p>


<br />
<?php

while ($arr = mysql_fetch_array($q)) {
?>
<li><p><?echo $arr["jmeno"];?>
<?echo " &nbsp;&nbsp;>&nbsp;&nbsp; "; ?>
<?echo $arr["popis"];?></p>
</li>
<?
}

?>
<br />
<?
mysql_close();

?>
krteczek
Profil
No jo to je formulář odeslaná getem už je mi to jasne:-)
ušetříš si práci když form odešleš method="post"
ale tady stačí použít funkci rawurldecode();
takže celou vyhledávací proceduru bych vypsal následovně:-)

<?php
if (get_magic_quotes_gpc())

{

$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST, &$_FILES);

while (list($key, $val) = each($process))

{

foreach ($val as $k => $v)

{

unset($process[$key][$k]);

if (is_array($v))

{

$process[$key][($key < 5 ? $k : stripslashes($k))] = $v;

$process[] =& $process[$key][($key < 5 ? $k : stripslashes($k))];

}

else

{

$process[$key][stripslashes($k)] = stripslashes($v);



}

}

}

}


if((!empty($_GET['word'])) && (rawurldecode(trim($_GET['word'])) != ''))
{
$slovo = rawurldecode($_GET['word']);
$slovo = htmlspecialchars($slovo);
$slovo = addslashes($slovo);

//vypíšeme si obsah dotazu pro kontrolu jak vypada(mužeme zakomentovat)
echo $dotaz;

$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();
}
}
?>
<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input type="text" name="word" value="<?php echo $slovo;?>">
<input type="submit" name="vyhledat" value="hledat">
</form>

vyzkoušej to a dej mi vědět jestli je to ok ;-)
krteczek
w8
Profil *
Tady jsi mel chybu mysql_fetch_asso mel jsi tam mysqk_fetch_asso
Jinak mi to nic nevypise, takze nevim zatim.
w8
Profil *
Vypada to, ze jsem to zprovoznil, ale jetse nevim, jak zahjistit podrobnejsi vypis, tedy ze to vypise napr. popis. Porsimj, poradte kma a jak to umistit do kodu... dik

<?php
include("connect.php");
if (get_magic_quotes_gpc())
{
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST, &$_FILES);
while (list($key, $val) = each($process))
{
foreach ($val as $k => $v)
{
unset($process[$key][$k]);
if (is_array($v))
{
$process[$key][($key < 5 ? $k : stripslashes($k))] = $v;
$process[] =& $process[$key][($key < 5 ? $k : stripslashes($k))];
}
else
{
$process[$key][stripslashes($k)] = stripslashes($v);



}
}
}
}


if((!empty($_GET['word'])) && (rawurldecode(trim($_GET['word'])) != ''))

{

$slovo = rawurldecode($_GET['word']);

$slovo = htmlspecialchars($slovo);

$slovo = addslashes($slovo);


//vypíšeme si obsah dotazu pro kontrolu jak vypada(mužeme zakomentovat)

echo $slovo;


$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 = mysql_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
Profil
jen zkráceně:


for($i = 0; $i < $p; $i++)
{
$r = mysql_fetch_assoc($v);
//tady si to zpracuj dál
foreach($d sa $key => $ob)
{
echo '$r["' . $key . '"] => ' . $ob . '<br>' ;
}
echo '<br>********************************************************<br>';
}

takhle jsem to udělal protože neznám tvoji tabulku. všechno by se mělo vypsat pod sebe a další položka oddělit hvězdičkami
krteczek
w8
Profil *
co znamena sa?
krteczek
Profil
w8: kua další překlepy, jak nemá člověk možnost to zkoušet a píše jen zhlavy... :-(

znova:-)



<?php
if (get_magic_quotes_gpc())

{

$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST, &$_FILES);

while (list($key, $val) = each($process))

{

foreach ($val as $k => $v)

{

unset($process[$key][$k]);

if (is_array($v))

{

$process[$key][($key < 5 ? $k : stripslashes($k))] = $v;

$process[] =& $process[$key][($key < 5 ? $k : stripslashes($k))];

}

else

{

$process[$key][stripslashes($k)] = stripslashes($v);



}

}

}

}


if((!empty($_GET['word'])) && (rawurldecode(trim($_GET['word'])) != ''))
{
$slovo = rawurldecode($_GET['word']);
$slovo = htmlspecialchars($slovo);
$slovo = addslashes($slovo);

//vypíšeme si obsah dotazu pro kontrolu jak vypada(mužeme zakomentovat)
echo $dotaz;

$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 = mysql_fetch_assoc($v);
for($i = 0; $i < $p; $i++)
{
$r = mysql_fetch_assoc($v);
//tady si to zpracuj dál
foreach($r as $key => $ob)
{
/*********************************************************** ***************
projdeme pole $r a vypíšeme všechny prvky které obsahuje
vypis je následovný (příklad):
$r["id"] => 3<br>
$r['jmeno'] => Jan Král<br>
$r['popis'] => Je pracovitý elegán<br>
<br>****************************************************** *<br>
************************************************************ **************/

echo '$r["' . $key . '"] => ' . $ob . '<br>' ;
}
echo '<br>********************************************************<br>';
}
}
}
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();
}
}
?>
<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input type="text" name="word" value="<?php echo $slovo;?>">
<input type="submit" name="vyhledat" value="hledat">
</form>
Toto téma je uzamčeno. Odpověď nelze zaslat.

0