Autor Zpráva
aladin
Profil *
zdravím,
lidi prosím vás,kde mám chybu?
  mysql_query("SET character_set_client =".$charset, $connect);
  mysql_query("SET character_set_results =".$charset, $connect);
  mysql_query("SET character_set_connection =".$charset, $connect);
  mysql_query("set names ".$charset);
proměnná charset je kodování stránky..
pokud to tam hodím normálně (bez proměnný,prostě tam dám utf-8) tak to jde.Díky za odpověd
Tori
Profil
aladin:
V MySQL se píše utf8, bez pomlčky. A použijte buď jen první tři řádky, nebo jen ten čtvrtý (podle vaší verze MySQL/PHP) - obojí dělá to samé.
aladin
Profil *
Tori:
aha,díky..
ale stejně když to kodování dám do proměnný,a dám to jen do set names tak to nefunguje...
když tam dám pouhej text tak to fakčí,
mysql_query("set names uft8");
ale pokud to chci přes proměnnou tak mě to nechce jít..do meta se to vypíše,ale do mysql query ne..
žeby špatně uvozovky?ale to by vypsalo nějakou chybu ne?
Tori
Profil
aladin:
do meta se to vypíše,ale do mysql query ne
Ale to je rozdíl. Do HTTP hlavičky se píše Content-Type: text/html; charset=utf-8, do MySQL jen SET names utf8. Nemůžete tedy použít stejnou hodnotu/proměnnou pro obojí. SET names utf-8 znamená "utf minus 8", vyhodí chybu, že znaková sada utf neexistuje. (Resp. mysql_query vrátí false a teprv potom pomocí mysql_error() zjistíte tuhle chybu.)
aladin
Profil *
Tori:
to vím,také to tak mám,že v meta mám utf-8 a v mysql jen utf8,ale prostě to nejde...
v erroru to píše chybu
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
mysql_query("set names ".$charset);
Tori
Profil
Když dáte těsně před volání mysql_query toto: echo "set names ".$charset;, vypíše to i kódování?
Podle chybové hlášky to vypadá, že ta proměnná je prázdná (= definujete ji až později, anebo jste ji někde mezitím přepsal). Když používáte totéž v meta tagu, tak máte dvě různé proměnné (pro "utf-8" a "utf8") anebo jen jednu, ze které smažete/přidáte tu pomlčku?
aladin
Profil *
myslím si že jí nikde nepřepisuju..volal jsem jí před a za mysql query a pořád tam je...
<?php
$GETcharset=$_GET['charset'];
$charset="";
if($proGET=="utf-8" xor $proGET=="UTF-8"){  // pokud mám v url charset=utf-8 nebo UTF-8 tak jí podmínka přepíše na uft8,popř nechá jiné kodování,např cp1250 apod..
  $charset="utf8";
}else{
  $charset=$GETcharset;
}
function Database($hostitel = "localhost", $uziv_jmeno = "root", $heslo = "pass",$DB = "table"){
  static $connect; 
  $connect = @mysql_connect($hostitel,$uziv_jmeno,$heslo);
  @mysql_select_db($DB,$connect);
    if(!$connect){
     throw new Exception( mysql_error() );
     return false;
    }   
  mysql_query('set names '.$charset.'') or die ('Nepodařilo se nastavit jazyk'); 
  return true;
}
Database();
echo "<br>".mysql_error()."<br>";
echo "<H1>". $charset . "</H1>"; vypíše utf8



podmínka
if($proGET=="utf-8" xor $proGET=="UTF-8"){
má být takto
if($GETcharset=="utf-8" xor $GETcharset=="UTF-8"){
Tori
Profil
Přidejte znakovou sadu jako další parametr funkce database.

Jinak místo xor můžete zrovna tak použít i or - stejná proměnná nikdy nemůže mít dvě různé hodnoty. Neřešíte nijak situaci, kdy parametr $_GET['charset'] bude prázdný nebo nedefinovaný.
aladin
Profil *
jak to myslíte znakovou sadu?
znaková sada je ten mysql_query('set names ...'); ne?
Tori
Profil
function Database($hostitel, $uziv_jmeno, $heslo, $DB, $charset){ .... }

Database('localhost', 'root', 'pass', 'table', $charset);
aladin
Profil *
hurá..ještě po menší upravě to šlape..díky moc za radu :)

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: