Autor Zpráva
gardener
Profil
Zdravím
Už jsem tady tento problém řešil jednou, ale bohužel se nevyřešil.
Problém je v zaznamenávaní znaků s diakritikou do MySQL databáze.Nastavuji kódování při vytvoření tabulky, připojení k db i při vkládání dat ale stále se stejným výsledkem znaky jako č,š apod..se zobrazí jako otazníky.Nepomohla ani instalace nového MySQL, ani FAQ co jsem četl..zkrátka nic..hlavně mě vadí, že i když nastavuji všude to kodování, tak i přes to to nejede korektně..
Už vážně nevím, co může býti špatně??

Pro úplnost přikládám kód pro vytvoření vytvoření tabulky, připojení k db i a pro vkládání dat..

Kdyby ta chyba někoho trefila do očí, byl bych moc vděčný, už jsem vyzkoušel vše...

Děkuji za každou radu..

Vytvoření DB
<?php
 $sql = "CREATE TABLE IF NOT EXISTS seznam (
                        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
                        interpret VARCHAR(30) NOT NULL,
                        album VARCHAR(30) NOT NULL,
                        styl TEXT(30) NOT NULL,
                        rok_vydani YEAR(4),     
                        zeme_puvodu TEXT(30), 
                        kdy_zaloha VARCHAR(15) NOT NULL,
                        kde_najdu VARCHAR(15) NOT NULL
                        )
                        TYPE = myisam,
                        COLLATE utf8_general_ci;";
           
                        
                         if(!mysql_query($sql)) {
                         	echo mysql_error(); 
                            echo("Nepodařilo se vytvoøit databázovou tabulku,zkontrolujte nastavení v db_create.php"); 
                        }
?>


Spojení
<?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.');
}

$vysledek_vybrani = mysql_select_db('pokus',$id_spojeni);
if (!$vysledek_vybrani){
die('Databazi pokus se nepodarilo vybrat.');
}

$nastaveni_kodovani = mysql_query("SET NAMES 'utf8'"); 
if (!$nastaveni_kodovani){
die('Nepodařilo se nastavit kódování.');
}

?>


Vložení dat
<?php
include("db_connect.php"); 
//Starting app with verify connect to database
mysql_query("SET CHARACTER SET utf8");
$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]'";


$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';
}
?>
Kajman_
Profil *
Zkuste zkontrolovat, zda je sloupeček v kódování utf8, když jste jen nastavil defaultní porovnání.

show create table seznam
gardener
Profil
Vypadá to, že ano, když jsem položil tento dotaz na db, byl mezi výpisem i tato hodnota "DEFAULT CHARSET=utf8", takže kódování je asi nastaveno dobře..?
tiso
Profil
Je aj ten PHP súbor (súbory) v utf-8? Posielaš prehliadaču hlavičku o kódovaní súboru?
gardener
Profil
Ano, až na skript spojení s db a vytvoření db,jelikož ty se includují, tak aby se hlavička neposílala dvakrát..co tak koukám po diskuzích tak spousta lidí pracuje s kódováním Win-1250, čemuž se ale chci vyhnout z důvodu že odjakživa používám UTF-8..

EDIT
Teď jsem zjistil, že pokud do skriptu vypíši hlášku s diakritikou, např :
$vysledek_vlozeni = mysql_query($sql);
if (!$vysledek_vlozeni){
die('Nepodařilo se vložit nový řádek.');
}
else{
echo 'Podařilo se vložit nový řádek.';


Tak se nezobrazí české znaky..jestli v tom nebude celý ten problém..?
gardener
Profil
Tak nic nepohlo to:(
tiso
Profil
gardener - tak potom buď nemáš tie súbory uložené v utf-8, alebo webserver prebíja hlavičku o kódovaní, alebo máš problém s fontami alebo inštaláciou OS. Iná možnosť mi nenapadá... Skús to otestovať na inom PC alebo serveri, či sa to bude chovať rovnako.
gardener
Profil
Tak jsem došel k zjištění:
Když jsme to zprovoznil na serveru ic.cz tak běží diakritika nádherně hladce,ale pro změnu nefunguje strtolower..
Je to pro mne záhada,proč na localhostu to nejde a na serveru ano..

Ještě mne napadlo nainstalovat nový XAMPP(pokud vychází občas nějaké nové distribuce)?
Kajman_
Profil *
Na utf8 se v php používá mb_strtolower.

Klidně si můžete nainstalovat aktuální stabilní mysql sám i bez ostatních aplikací.
gardener
Profil
To jsem už ale udělal a stejně to nefunguje..
gardener
Profil
Tak jsem nainstaloval nový XAMPP, spustil, založil novou db.bohužel se mi nyní pro změnu neuloží data (písmena), čísla se uloží bez problémů ale co je písmenem nikoliv..to už vážně nechápu, co s tím, když se to všeude chová jinak..

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: