Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Rozpadlá diakritika při výstupu z mysql

Ahoj,
mám problém s rozsypanou diakritikou při výstupu z mysql. Když to vypíšu klasicky, tak diakritika funguje.


MySQL_Connect("");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_results=utf8");
mysql_select_db("");
$navrat=MySql_QUERY("SELECT*FROM lcd WHERE typ='huawein'");
  if(mysql_num_rows($navrat)==0) echo "Nic nebylo nalezeno";
    else{
      while(list($id, $typ, $model, $cena) = mysql_fetch_array($navrat)){
	  
		  	echo "$imodel</div></div></div>";
      }
    }  

když ale použiju jiný kód, tak se mi čeština rozsype



<?Php
$cat=$_GET['cat']; 
if(strlen($cat) > 0 and !is_numeric($cat)){  
echo "Data Error";
exit;
}


$quer2="SELECT id,znacka,model,servis,cena FROM cenikservisu"; 



if(isset($cat) and strlen($cat) > 0){
$quer="SELECT cena FROM cenikservisu where id=$cat"; 
}else{$quer="SELECT cena FROM cenikservisu"; } 



echo "<form method=post name=f1 action='konfigurator2.php'>";


echo "<select name='cat' onchange=\"reload(this.form)\"><option value=''>Vyber značku</option>";
foreach ($dbo->query($quer2) as $noticia2) {
if($noticia2['id']==@$cat){echo "<option selected value='$noticia2[id]'>$noticia2[servis]</option>"."<BR>";}
else{echo  "<option value='$noticia2[id]'>$noticia2[servis]</option>";}
}
echo "</select>";


echo "<select name='subcat' >";
foreach ($dbo->query($quer) as $noticia) {
echo  "<option value='$noticia[cena]'>$noticia[cena]</option>";
}
echo "</select>";


echo "<input type=submit value=Submit>";
echo "</form>";
?>

Funkce reload

<SCRIPT type="text/javascript" charset="utf-8">
function reload(form)
{
var val=form.cat.options[form.cat.options.selectedIndex].value;
self.location='konfigurator2.php?cat=' + val ;
}
</script>

Připojení k db


<?Php

$dbhost_name = "***"; 
$database = "*****";       
$username = "****";           
$password = "****";          


try {
$dbo = new PDO('mysql:host='.$dbhost_name.';dbname='.$database, $username, $password);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?> 

Věděl by někdo kde mám chybu? Díky moc za radu

Řešení:

Funguje mi ve všech aplikacích tento kód:


   try 
    {
      $dbh = new PDO("mysql:host=$this->MySQL_server;dbname=$this->MySQL_databaze;charset=utf8", $this->MySQL_uzivatel , $this->MySQL_uzivatel_password , 
        array(
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ,
        )
      );

    }
    catch(PDOException $e)
    {
      echo $e->getMessage();
    }
 
Předmět Autor Datum
Ahoj, Ajax přenáší data tuším jen v UTF8, což máš dobře nastavené. Pokud máš ale jinak definované k…
Flash_Gordon 14.02.2019 09:58
Flash_Gordon
právě, že úplně nevím kam a jak to do toho kódu propašovat try { $dbo = new PDO('mysql:host='.$dbh…
Johnyyyyyy 14.02.2019 11:23
Johnyyyyyy
Funguje mi ve všech aplikacích tento kód: try { $dbh = new PDO("mysql:host=$this->MySQL_server;dbn…
hynajs 14.02.2019 12:55
hynajs
Díííííííkyyy mooooc :-) poslední
Johnyyyyyy 14.02.2019 13:42
Johnyyyyyy
a datábazi mám v utf8_czech_ci
Johnyyyyyy 14.02.2019 11:25
Johnyyyyyy

Ahoj,

Ajax přenáší data tuším jen v UTF8, což máš dobře nastavené.
Pokud máš ale jinak definované kódování v databázi, je potřeba
i v druhém případě definovat to:

mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_results=utf8");

Většinou se to dělá tak, že se to přemístí do samostatného "connection" souboru a
ten se jenom includuje.

Funguje mi ve všech aplikacích tento kód:


   try 
    {
      $dbh = new PDO("mysql:host=$this->MySQL_server;dbname=$this->MySQL_databaze;charset=utf8", $this->MySQL_uzivatel , $this->MySQL_uzivatel_password , 
        array(
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
          PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ,
        )
      );

    }
    catch(PDOException $e)
    {
      echo $e->getMessage();
    }
 

Zpět do poradny Odpovědět na původní otázku Nahoru