PHP & databáze

Gondal
WD Trader: 4.5/5

Příspěvky: 403
Registrace: 15.11.2010
Mám taký problém...Učím sa PHP a dostal som sa teraz k databáze. Dostal som sa k vypísaniu dát z MySQL databázy ale akosi som zakopol pri diakritike. Nejak mi to nechce brať diakritiku. Kuknite na http://stavkujeme.eu/skuska/formular.php .

Kód:
Kód: Vybrat vše
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
   
   <?php
   $db = mysqli_connect('wm16.wedos.net', 'a14770_skuska', 'skuskaskuska', 'd14770_skuska');
   $vysledky = mysqli_query($db, 'SELECT * FROM Osoby');


while($radek = mysqli_fetch_array($vysledky))
{
$meno = $radek[0];
$priezvisko = $radek[1];
$vek = $radek[2];
echo 'Meno: ',$meno,' Priezvisko: ',$priezvisko,' Vek: ',$vek,'<br />';
}


   
   ?>
  </body>
</html>


Skúšal som aj trocha googliť a vložiť tam veci ako:
Kód: Vybrat vše
mysql_query("SET CHARACTER SET UTF-8");


Kód: Vybrat vše
mysql_query("SET CHARACTER SET 'utf8_slovak_ci'", $db);


Kód: Vybrat vše
mysql_query("SET CHARACTER SET 'utf8'", $db);
   mysql_query("SET COLLATION_CONNECTION='utf8_slovak_ci'", $db);


Ale všetko mi hádže chyby nejak. Neviete niekto poradiť čo s tým?

Jan Paluska
Uživatelský avatar

Administrátor
WD Trader: 4.78/5

Příspěvky: 1323
Registrace: 14.02.2011
1) máš v UTF-8 samotný soubor?
2) v jakém formátu máš data uložená v db? myslím tím, jakou znakovou sadu máš v MySQL nastavenou jako "porovnání"
Pomohl jsem? Použij tlačítko [+]
 Dar

Gondal
WD Trader: 4.5/5

Příspěvky: 403
Registrace: 15.11.2010
1)Súbor mám uložený v UTF-8
2)Všetko čo sa dalo som ponastavoval na utf8_slovak_ci...Aj jeden programátor sa mi tam kukal do tej databázy a všetko by malo byť nastavené dobre. Ak však chceš skontrolovať kľudne ti hodím prístup do db.

Otakar Pěnkava

Administrátor
WD Trader: 4.6/5

Příspěvky: 2707
Registrace: 15.10.2010
V phpMyAdminu vyber danou tabulku a dej nahoře vpravo záložku Úpravy. Tam koukni, zda má samotná tabulka vybráno správné porovnávání.

Jan Paluska
Uživatelský avatar

Administrátor
WD Trader: 4.78/5

Příspěvky: 1323
Registrace: 14.02.2011
Zkus ještě toto:

Kód: Vybrat vše
$dbname = 'web';
mysql_select_db($dbname);
mysql_query("SET NAMES 'utf8'");


Kód jsem zkopčil z mého configu, určitě to pochopíš, popřípadě jej upravíš do svého kodu, mě toto pomohlo
Pomohl jsem? Použij tlačítko [+]
 Dar

Gondal
WD Trader: 4.5/5

Příspěvky: 403
Registrace: 15.11.2010
Otakar Pěnkava píše:
V phpMyAdminu vyber danou tabulku a dej nahoře vpravo záložku Úpravy. Tam koukni, zda má samotná tabulka vybráno správné porovnávání.

Mám

Jan Paluska píše:
Zkus ještě toto:

Kód: Vybrat vše
$dbname = 'web';
mysql_select_db($dbname);
mysql_query("SET NAMES 'utf8'");



Kód jsem zkopčil z mého configu, určitě to pochopíš, popřípadě jej upravíš do svého kodu, mě toto pomohlo


Po pridaní tohto mi to vypísalo túto chybu:
Kód: Vybrat vše
Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 13

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 13

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 14

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 14


Kód po úprave:
Kód: Vybrat vše
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
   
   <?php
   $db = mysqli_connect('wm16.wedos.net', 'a14770_skuska', 'skuskaskuska', 'd14770_skuska');
   $dbname = 'd14770_skuska';
   mysql_select_db($dbname);
   mysql_query("SET NAMES 'utf8'");
   $vysledky = mysqli_query($db, 'SELECT * FROM Osoby');


while($radek = mysqli_fetch_array($vysledky))
{
$meno = $radek[0];
$priezvisko = $radek[1];
$vek = $radek[2];
echo 'Meno: ',$meno,' Priezvisko: ',$priezvisko,' Vek: ',$vek,'<br />';
}


   
   ?>
  </body>
</html>

Jan Paluska
Uživatelský avatar

Administrátor
WD Trader: 4.78/5

Příspěvky: 1323
Registrace: 14.02.2011
máš tam totiž 2x výběr databáze ...

Kód: Vybrat vše
$db = mysqli_connect('wm16.wedos.net', 'a14770_skuska', 'skuskaskuska', 'd14770_skuska');

a

Kód: Vybrat vše
$dbname = 'd14770_skuska';
   mysql_select_db($dbname);


a to nejde :)
Pomohl jsem? Použij tlačítko [+]
 Dar

Gondal
WD Trader: 4.5/5

Příspěvky: 403
Registrace: 15.11.2010
jo, najskôr som to hodil aj bez toho...ale hádzalo to ešte viac chýb a nevypísalo to vôbec :P Vtedy to hádže takúto chybu:
Kód: Vybrat vše
Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 13

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 13

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 14

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 14

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 18

Jan Paluska
Uživatelský avatar

Administrátor
WD Trader: 4.78/5

Příspěvky: 1323
Registrace: 14.02.2011
Tady máš zdroják celého mého připojení k DB včetně nastavení parametrů:

Kód: Vybrat vše
<?php
$dbhost = 'localhost';
$dbuser = 'xxx'; // uziv. jmeno
$dbpass = 'xxx'; // heslo

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Nemohu se připojit k databázi');

$dbname = 'web'; // databaze
mysql_select_db($dbname);
mysql_query("SET NAMES 'utf8'");
?>
Pomohl jsem? Použij tlačítko [+]
 Dar

Gondal
WD Trader: 4.5/5

Příspěvky: 403
Registrace: 15.11.2010
Už som z toho dosť zúfalý :D

Momentálne to vypadá takto:
Kód: Vybrat vše
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
   
   <?php
   
   $host = 'wm16.wedos.net';
   $user = 'a14770_skuska';
   $heslo = 'skuskaskuska';
   $db = mysqli_connect($host, $user, $heslo);
   if (!$db)
    die('Nepodarilo sa pripojiť k db');
   $dbname = 'd14770_skuska';
   mysql_select_db($dbname);
   mysql_query("SET NAMES 'utf8'");
   $vysledky = mysqli_query($db, 'SELECT * FROM Osoby');


while($radek = mysqli_fetch_array($vysledky))
{
$meno = $radek[0];
$priezvisko = $radek[1];
$vek = $radek[2];
echo 'Meno: ',$meno,' Priezvisko: ',$priezvisko,' Vek: ',$vek,'<br />';
}


   
   ?>
  </body>
</html>


A nefunguje vôbec nič a vypisuje to:
Kód: Vybrat vše
Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 19

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 19

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 20

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 20

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /data/web/virtuals/14770/virtual/www/skuska/formular.php on line 24


-- 27.02.2012 21:45 --

Je to vyriešené. Funkčný kód je:
Kód: Vybrat vše
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
   
   <?php
   
   $host = 'wm16.wedos.net';
   $user = 'a14770_skuska';
   $heslo = 'skuskaskuska';
   $db = mysqli_connect($host, $user, $heslo);
   if (!$db)
    die('Nepodarilo sa pripojiť k db');
   $dbname = 'd14770_skuska';
   mysqli_select_db($db, $dbname);
   mysqli_query($db, "SET NAMES 'utf8'");
   $vysledky = mysqli_query($db, 'SELECT * FROM Osoby');


while($radek = mysqli_fetch_array($vysledky))
{
$meno = $radek[0];
$priezvisko = $radek[1];
$vek = $radek[2];
echo 'Meno: ',$meno,' Priezvisko: ',$priezvisko,' Vek: ',$vek,'<br />';
}


   
   ?>
  </body>
</html>


Som na seba patrične hrdý :D

Gondal
WD Trader: 4.5/5

Příspěvky: 403
Registrace: 15.11.2010
Pri prijímaní údajov z databázy to hádzalo v nejakom zlom kódovaní a bolo treba zadefinovať v akom kódovaní to má posielať. Jan Paluska mi radil dobre, neviem prečo to nechcelo fungovať, ale proste mi nechcelo zobrať:
Kód: Vybrat vše
mysql_select_db($dbname);
mysql_query("SET NAMES 'utf8'");


Chcelo to pri obidvoch, aby malo mysql_select_db aj mysql_query určené dva parametre. Tak po úprave to vypadá takto:

Kód: Vybrat vše
mysqli_select_db($db, $dbname);
mysqli_query($db, "SET NAMES 'utf8'");

($db je pripojenie k databáze - > mysqli_connect)

Jan Paluska
Uživatelský avatar

Administrátor
WD Trader: 4.78/5

Příspěvky: 1323
Registrace: 14.02.2011
:) tak to jsem rád, že se ti problém nakonec podařilo vyřešit
Pomohl jsem? Použij tlačítko [+]
 Dar

Pro plnohodnotné využívání fóra, vč. psaní příspěvků se musíte registrovat nebo se přihlásit.
Registrovat se nebo Přihlásit se