Autor | Zpráva | ||
---|---|---|---|
thommie Profil * |
#1 · Zasláno: 22. 11. 2010, 14:05:39
Zdravím,
mám tento kód: // příprava proměnných $jmeno_restaurace_rg = ucfirst($_POST["jmeno_restaurace"]); $mesto_rg = ucfirst($_POST["mesto"]); $ulice_rg = ucfirst($_POST["ulice"]); $pivo_rg = ucfirst($_POST["pivo"]); //příprava promennych pro vyhledávací část tabulky //odstraneni prazdnych znaku $restaurace_pz=trim($jmeno_restaurace_rg); $mesto_pz=trim($mesto_rg); $ulice_pz=trim($ulice_rg); $pivo_pz=trim($pivo_rg); // úprava adresy pro google mapy pro IE $prevodni_tabulka = Array('ä'=>'a','Ä'=>'A','á'=>'a','Á'=>'A','à'=>'a','À'=>'A','ã'=>'a','Ã'=>'A','â'=>'a','Â'=>'A','č'=>'c','Č'=>'C','ć'=>'c','Ć'=>'C','ď'=>'d', 'Ď'=>'D','ě'=>'e','Ě'=>'E','é'=>'e','É'=>'E','ë'=>'e','Ë'=>'E','è'=>'e','È'=>'E','ê'=>'e','Ê'=>'E','í'=>'i','Í'=>'I','ï'=>'i','Ï'=>'I','ì'=>'i','Ì'=>'I','î'=>'i','Î'=>'I','ľ'=>'l','Ľ'=>'L','ĺ'=>'l','Ĺ'=>'L','ń'=>'n','Ń'=>'N','ň'=>'n','Ň'=>'N','ñ'=>'n','Ñ'=>'N','ó'=>'o','Ó'=>'O','ö'=>'o','Ö'=>'O','ô'=>'o','Ô'=>'O','ò'=>'o','Ò'=>'O','õ'=>'o','Õ'=>'O','ő'=>'o','Ő'=>'O','ř'=>'r','Ř'=>'R','ŕ'=>'r','Ŕ'=>'R','š'=>'s','Š'=>'S','ś'=>'s','Ś'=>'S','ť'=>'t','Ť'=>'T','ú'=>'u','Ú'=>'U','ů'=>'u','Ů'=>'U','ü'=>'u','Ü'=>'U','ù'=>'u','Ù'=>'U','ũ'=>'u','Ũ'=>'U','û'=>'u','Û'=>'U','ý'=>'y','Ý'=>'Y','ž'=>'z','Ž'=>'Z','ź'=>'z','Ź'=>'Z'); //prevod na mala pismena $restaurace_low = strtolower($restaurace_pz); $mesto_low = strtolower($mesto_pz); $ulice_low = strtolower($ulice_pz); $pivo_low = strtolower($pivo_pz); // odstraneni diakritiky $restaurace = strtr($restaurace_low, $prevodni_tabulka); $mesto_vt = strtr($mesto_low, $prevodni_tabulka); $ulice_vt = strtr($ulice_low, $prevodni_tabulka); $pivo_vt = strtr($pivo_low, $prevodni_tabulka); ve kterém zkrátka převádím řetězce napřed na malá písmena a potom tato "malá písmena" na řetezec bez diakritiky a každé stádium ukládám zvlášť do databáze. Z počátku to fungovalo, ale najedou přestalo. Resp. na localhostu se bez diakritiky a malá písmena neuloží a na webu se neuloží jen malá písmena a pokud napíšu vše bez diakritiky, tak se uloží vše. četl jsem, že fce STRTOLOWER může mít problémy s češtinou či co, nevíte někdo jak to ošetřit? díky za odpověď |
||
Nox Profil |
#2 · Zasláno: 22. 11. 2010, 14:21:23
zkus
mb_strtolower případně nám napiš to ukládání, charset (používáš set names?) atd. |
||
thommie Profil * |
#3 · Zasláno: 22. 11. 2010, 14:28:32
mb_strtolower nepomohlo, ukládání je tohle:
$vysledek = mysql_query("INSERT INTO restaurace (jmeno_restaurace, heslo, mesto, ulice, cp, psc, kraj, pivo, ic, email, telefon, popis_registrace, datum_registrace, v_restaurace, v_mesto, v_ulice, pivo5, pivo6, b_restaurace, b_mesto, b_ulice) VALUES ('$jmeno_restaurace_rg', '".$_POST['heslo']."', '$mesto_rg', '$ulice_rg', '".$_POST['cp']."', '".$_POST['psc']."', '".$_POST['kraj']."', '".$_POST['pivo']."', '".$_POST['ico']."', '".$_POST['myemail']."', '".$_POST['telefon']."', '".$_POST['popis_registrace']."', now(), '$restaurace', '$mesto_vt', '$ulice_vt', '$pivo_vt', '$pivo_low', '$restaurace_low', '$mesto_low', '$ulice_low')"); |
||
Anonym Profil * |
#4 · Zasláno: 22. 11. 2010, 14:47:20
napíšu vše bez diakritiky, tak se uloží vše
Je v databázi nastaveno utf8_czech_ci všude, kam to patří? Když se zapisuje neznámý znak do databáze, tak to krachne. Co vypisuje echo $restaurace_low = strtolower($restaurace_pz); resp. echo $restaurace_low = mb_strtolower($restaurace_pz); vsadím boty, že to vypisuje správně a chyba je ve vkládání do databáze - musí tam být správná znaková sada. |
||
thommie Profil * |
#5 · Zasláno: 22. 11. 2010, 14:52:14
no je fakt, že to mám všechno v utf_bin :D takže to mám u těhlech položek změnit na utf8_czech_ci? já se upřímně moc v mysql nevyznám, takže tam mám problémy celkem pravidelně, jinak díky za pomoc
|
||
thommie Profil * |
#6 · Zasláno: 22. 11. 2010, 15:17:50
No nevim, na localhostu to prostě nerozchodím, na webu to jaktakž jde, i když ne dokonale (občas to nechá velký písmeno, občas ne, nechápu...) - ale aspoň to ukládá
|
||
Anonym Profil * |
#7 · Zasláno: 22. 11. 2010, 15:45:52
občas to nechá velký písmeno, občas ne, nechápu...
ucfirst asi taky nerozumí česky, zkus toto: if (!function_exists('mb_ucfirst') && function_exists('mb_substr')) { function mb_ucfirst($string) { $string = mb_strtoupper(mb_substr($string, 0, 1, 'utf-8'), 'utf-8') . mb_substr($string, 1, mb_strlen($string), 'utf-8'); return $string; } } $jmeno_restaurace_rg = mb_ucfirst($_POST["jmeno_restaurace"]); ... |
||
thommie Profil * |
#8 · Zasláno: 22. 11. 2010, 21:36:08
díky, tohle je hodně použitelná věcička :)
|
||
Časová prodleva: 26 dní
|
|||
korny Profil * |
#9 · Zasláno: 18. 12. 2010, 12:46:46
tohle je lepsi :-)
tamto mi bez toho preg_match neslo 100% a tohle i ostatni pismena hodi na mala public function filter($string, $enc = 'utf-8') { if (function_exists ( 'mb_strtoupper' ) && function_exists ( 'mb_substr' ) && ! empty ( $string )) { $string = mb_strtolower ( $string, $enc ); $upper = mb_strtoupper ( $string, $enc ); preg_match ( '#(.)#us', $upper, $matches ); $string = $matches [1] . mb_substr ( $string, 1, mb_strlen ( $string, $enc ), $enc ); } else { $string = ucfirst ( $string ); } return $string; } |
||
Časová prodleva: 13 let
|
0