Autor Zpráva
kokolino
Profil
Čaute mám problem s diakritikou pri zápise do DB
v index.php mám kodovanie nasledovné
<meta http-equiv="Content-Type" content="text/html; windows-1250" />
pri spojení s DB mám
<?php 
 $spojeni = mysql_connect('localhost','root','' ) or die ('Spatne zadane udaje (asi heslo, server nebo jmeno.) v inc/db.php');
    mysql_select_db("laci", $spojeni) or die ('Spatne zadana databaze v inc/db.php');
    mysql_query("SET NAMES windows-1250");
?>

ako je vidiet http://laci.hys.cz/index.php?id=1&hodnota=uvod ak pridáte odkaz do menu tak sa zobrazí správne, v DB je však zapísané v tvare spoloènos (skúška slova spoločnosť), v url sa mi to zobrazuje ako .....&hodnota=spolo%E8nos%9D tým pádom mi nefunguje ani jeden odkaz vedeli by ste mi s touto maličkosťou poradiť
Alutom
Profil
Ahoj,
řekl bych, že vkládání diakritiky do url je celkem prasárna, ale jít by to mělo.

Zkus to po přijetí projet funkcí urldecode http://php.net/manual/en/function.urldecode.php.
Tím by se mělo převést zpět "spolo%E8nos%9D" na "spoločnosť".

Ještě tam bude nějaký problém s ukládání těch tabulek do databáze, ale s tím Ti moc neporadím, snad někdo jiný.
Jediné, co vím jistě, je to, že windows-1250 se podle MySQL jmenuje cp1250.
kokolino
Profil
Alutom:
řekl bych, že vkládání diakritiky do url je celkem prasárna, ale jít by to mělo.
-ak by som odstránil diakritiku pri zápise do DB aby som url nemal s diakritikou neviem ako by som dostal dané slovo do pôvodného stavu, aby sa v menu objavilo to slovo správne, jediná vec čo ma napadla je, že si v db pridám jeden stĺpec naviac, kde budem daváť názov bez diakritiky a ten pôjde do url (neviem či tento spôsob nie rovnaký ako sa skrabať ľavou nohou za pravým uchom)
Alutom
Profil
kokolino:
jediná vec čo ma napadla je, že si v db pridám jeden stĺpec naviac, kde budem daváť názov bez diakritiky a ten pôjde do url

Ano, to je vhodné řešení. Ten název bez diakritiky se dá dokonce před uložením do databáze generovat automaticky nějakou takovouhle funkcí, aby se nemusel vytvářet ručně:

<?php

  $hodnota = "Příliš žluťoučký kůň úpěl ďábelské ódy";
  
  $bezDiakritiky = strtolower(strtr(
  
    $hodnota,  // překládaný text
    " ÁÄČÇĎÉĚËÍĽŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíľňóöřšťúůüýž",  // co se má nahrazovat
    "-aaccdeeeilnoorstuuuyzaaccdeeeilnoorstuuuyz"  // tímto se to nahradí
    
  ));
  
?>

Samozřejmě se nám možná nepovede ošetřit všechny znaky, ale pro tvoje účely by to mělo takhle nějak stačit.

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: