Autor Zpráva
aha
Profil
Ahoj,
prošel jsem dotazy na tomto fóru, které se týkají kódování a MySQL a odpověď jsem nenašel.
Mám tento skript:

<?php
# PŘIPOJENÍ K SERVERU
 $spojeni=mysql_connect( 'localhost', 'xxx', 'xxxx') or die ('Spojení se nepodařilo navázat!');
 
# VYTVOŘENÍ DATABÁZE
	$databaze="CREATE DATABASE IF NOT EXISTS ovoce CHARACTER SET utf8";

	$result=mysql_query($databaze) or die ('Databázi se nepodařilo vytvořit!!!');
	
		
# VÝBĚR DATABÁZE

	mysql_select_db('ovoce') or die ('Spojení s databází se nezdařilo!!!');

# VYTVOŘENÍ TABULKY PRODUCT

	$table="CREATE TABLE IF NOT EXISTS product (
		rowID INT(11) NOT NULL auto_increment,
		productid VARCHAR(10) NOT NULL,
		name varchar(40) NOT NULL,
		price decimal(5,2) NOT NULLl,
		description mediumtext NOT NULL,
		PRIMARY KEY (rowID))
		CHARACTER SET utf8,
		COLLATE utf8_czech_ci";
	$result=mysql_query($table) or die ('Tabulku se nepodařilo vytvořit!!!');

?>


Ten mi úspěšně vytvoří db a table s požadovaným kódováním a porovnáváním (utf8_general_ci a porovnávání utf8_czech_ci). Problém nastává když db "krmím" daty ze stránky html (charset má utf8).
Jakmile dojde na háčky a čárky tak v PMA nepřečtu nic.
Poradí někdo kde je chyba? Není to v nastavení PMA?
Nox
Profil
Ano, klikni na Hlavní strana a nastav Porovnávání pro toto připojení k MySQL

V anglickém to určitě najdeš taky
Kajman_
Profil *
aha:
Po každém připojení si nastavte set names viz. faq.
http://diskuse.jakpsatweb.cz/.sandbox/?action=vthread&forum=28&topic=37836
aha
Profil
Nox:
Díky, tam mám nastaveno utf8_czech_ci, Jazyk mám na Česky-Czech a přesto to nefunguje!

Kajman_:
Taky díky, koukal jsem na to už předtím, než jsem položil dotaz. Nefunguje nic z toho.

Koupil jsem si knížku: phpMyAdmin - efektivní správa MySQL, autor: Marc DeLisle, vydal: Zonerpress.
Zkoušel jsem nastavení PMA podle ní, ale mám verzi z Vertriga tzn. "ořezaný" soubor config.inc.php, tak jej zkusím nahradit orig. PMA a uvidím. Už opravdu nevím co s tím.
Dám vědět pokud na něco přijdu, protože je to zde často řešený problém.
Kajman_
Profil *
Když vložíte data z pma, tak jsou v pma dobře?
aha
Profil
Kajman_:
Myslíte, když je vložím přímo do PMA? Pokud ano, tak odpověď je - ano, jsou správně.
Kajman_
Profil *
Tak nehledejte problém v pma. Hledejte ho ve vkládacím skriptu. Ještě třikrát zkontrolujte, zda tam po připojení nastavujete set names na kódování, ve kterém je html formulář!
aha
Profil
Vkládací formulář je vytvořen v PsPadu (kódování utf-8), nastavení znakové sady:
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
,

Kód zpracování formuláře - modifikace_dat.php:
  <?php
# PŘIPOJENÍ K SERVERU
 $spojeni=mysql_connect( 'localhost', 'xxx', 'xxxx') or die ('Spojení se nepodařilo navázat!');
# VÝBĚR DATABÁZE
	mysql_select_db('ovoce') or die ('Spojení s databází se nezdařilo!!!');
# vložení získaných dat
if(isset($_POST['submit'])){
	# přiřazení hodnot odeslaných metodou POST proměnným
		$productid=$_POST['productid'];
		$name=$_POST['name'];
		$price=$_POST['price'];
		$description=$_POST['description'];
		echo "productid: $productid<br />";
		echo "name: $name<br />";
		echo "price: $price<br />";
		echo "description: $description";
	# vložení získaných hodnot do tabulky product
  $sql="INSERT INTO product SET productid='$productid', name='$name', price='$price', description='$description'";
  $vysledek=mysql_query($sql) or die ('Výrobek se nepodařilo vožit');
  echo "Výrobek úspěšně vložen!!!";
  mysql_close();
  }
  ?>
,
Kód pro vytvoření databáze a tabulky viz. výše.

Nikde tam problém nevidím. Paradoxní je, že když načtu data z db (skriptem), tak se ty co jsou v PMA zkomolené zobrazí správně, a ty "ručně" upravené (správně zobrazené v PMA) se zbrazí špatně - myslím tím v prohlížeči FF - znaková sada nastavena na utf-8.
IMHO asi to opravdu bude nějaký problém s nastavením v PMA.
Kajman_
Profil *
Proč ignorujete radu #3?
aha
Profil
Jestli myslíte to SET NAMES utf8
, tak to jsem vyzkoušel a nezabíralo to. Nicméně zkusím ještě jednou...
aha
Profil
Kajman_:
Díky moc,
zkusil jsem ještě jednou a funguje to perfektně. Asi jsem předtím někda udělal chybku.
Toto téma je uzamčeno. Odpověď nelze zaslat.