Autor Zpráva
gardener
Profil
Zdravím mám aplikaci seznam do které vkládám data z formu, všechny skripty i form jsou v utf-8

při spojení s db nenastavuji kodování

<?php
$id_spojeni = mysql_connect('localhost','root','');
//command for db connect with three parameters server,user,password
if (!$id_spojeni)
die('Spojeno s Mysql DB se nezdarilo.');
//if verify id for connect failed(return false)will be written error message
$vysledek_vybrani = mysql_select_db('pokus',$id_spojeni);
if (!$vysledek_vybrani)
die('Databazi pokus se nepodarilo vybrat.');
//It same,if verify id for connect failed(return false)will be written error message
?>


při vytvoření db je nastaveno porovnávání kodování na utf8_czech_ci

a při vkládání dat je je nasteveno zvovukódování na utf-8

mysql_query("SET CHARACTER SET utf8");


$sql =("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower(implode(", ", $set)) . ")");


Ale i přes toto všechno se zobrazují místo diakritiky otazníky..

Tuší někdo prosím,co dělám špatně, nebo kde může být chyba?

Děkuji za jakoukolliv radu..
Str4wberry
Profil
A četl’s FAQ?
gardener
Profil
Ano ale mám to naopak v PHP je čeština o.k ale na DB nikoliv..
gardener
Profil
Tak jsem FAQ prošel ještě jednou a doplnil ještě nastavení kódování při volání db
$nastaveni_kodovani = mysql_query("SET NAMES 'utf8'"); 
if (!$nastaveni_kodovani){
die('Nepodařilo se nastvit kódování.');
}


Ale výsledek je pořád stejný, říkám si, jestli to nebude PHPmyadminem?
Alphard
Profil
Ale výsledek je pořád stejný, říkám si, jestli to nebude PHPmyadminem?
data vkládá PMA nebo PHP? pokud PMA, zkus vložit pomocí php v mysql_query(), předtím samozřejmě set names

// ještě jsem si vzpomněl, mě jednou taky nechtěla databáze poslouchat, nakonec jsem to vyřešil definicí tabulky s
DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_cs
(pro ISO-8859-2) pak už vše šlapalo
Str4wberry
Profil
Reakce na gardenera:
„Další podrobnosti naleznete na http://molhanec.net/mysql_cestina_minifaq.html
toto téma také kvalitně řeší článek na Intervalu
gardener
Profil
Reakce na Str4wberry: Ten článek jsem procházel, sice je to tam popsané ale řešení u mne nefunguje korektně, chyba bude jinde.

Už jsem vyzkoušel nastavit kódování při volání DB, stejně tak i při zápisu dat (různé kombinace), jediné čeho jsme docílil, bylo to že se data nevkládali, takže jsme od toho opustil, říkám si jestli to opravdu není phpMy adminem(mám verzi 2.10.1)?

Zkusím přiložit zdrojový kod skriptů, které se při vkládání využívají, třeba tam někdo uvidí, kde by mohla býti chyba:..já už netuším, vyzkoušel jsem všechno..mrzí mne,že se vždycky zaseknu na takovém problému jako je diakritika, ale už vážně netuším co dělám špatně..

Propojení s db

<?php
$id_spojeni = mysql_connect('localhost','root','');
//command for db connect with three parameters server,user,password
if (!$id_spojeni)
die('Spojeno s Mysql DB se nezdarilo.');
//if verify id for connect failed(return false)will be written error message
$vysledek_vybrani = mysql_select_db('pokus',$id_spojeni);
if (!$vysledek_vybrani)
die('Databazi pokus se nepodarilo vybrat.');
//It same,if verify id for connect failed(return false)will be written error message
$nastaveni_kodovani = mysql_query("SET NAMES 'utf8'"); 
if (!$nastaveni_kodovani){
die('Nepodařilo se nastavit kódování.');
}
//It same,if verify id for connect failed(return false)will be written error message
?>


Vložení z formuláře do db
<?php
include("db_connect.php"); 
//Starting app with verify connect to database

$set = array();

$set["interpret"] = "'$_POST[interpret]'";
$set["album"] = "'$_POST[album]'";
$set["styl"] = "'$_POST[styl]'";
$set["rok_vydani"] = "'$_POST[rok]'";
$set["zeme_puvodu"] = "'$_POST[puvod]'";
$set["kdy_zaloha"] = "'$_POST[zaloha]'";
$set["kde_najdu"] = "'$_POST[umisteni]'";

mysql_query("SET CHARACTER SET utf8");

$sql =("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower(implode(", ", $set)) . ")");

$vysledek_vlozeni = mysql_query($sql);
if (!$vysledek_vlozeni){
die('Nepodarilo se vlozit novy radek.');
}
else{
echo 'podarilo se vlozit novy radek';
}
?>

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: