[ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.08.12
Prihlásený: 02.01.15
Príspevky: 94
Témy: 29 | 29
NapísalOffline : 25.07.2013 19:53 | MySQL kódovanie znakov

Účim sa PHP a MySQL. A neviem ako kódovať znaky aby si zobrazovalo aj mekčene, dĺžne. Skúšal som nasledovne:
Vytvoril som si databázu:

Kód:
<?php
// Pripojenie k Mysql
$db = mysql_connect('localhost', 'uzivatel', 'heslo') or die ('Nemozem sa pripojit. Zkontrolujte prosim pripojenie k serveru. ');

//Ak hlavna dabaza neexistuje, vytvorim ju
$dotaz = 'CREATE DATABASE IF NOT EXISTS moviesite CHARACTER SET utf8 COLLATE utf8_slovak_ci ';
mysql_query($dotaz, $db) or die (mysql_error($db) );

//Nastavenie novej databazi ako pracovnej
mysql_select_db('moviesite', $db) or die (mysql_error($db));

//vytvorenie tabulku film
$dotaz = 'CREATE TABLE film (
film_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
film_meno VARCHAR(255) NOT NULL,
film_typ TINYINT NOT NULL DEFAULT 0,
film_rok SMALLINT UNSIGNED NOT NULL DEFAULT 0,
film_herci INTEGER UNSIGNED NOT NULL DEFAULT 0,
film_reziser INTEGER UNSIGNED NOT NULL DEFAULT 0,

PRIMARY KEY (film_id),
KEY film_typ (film_typ, film_rok)
)
ENGINE=MyISAM';

$vysledky = mysql_query($dotaz, $db) or die(mysql_error($db));

//VYTVORENIE TABULKY TYPFILMU
$dotaz = 'CREATE TABLE typfilmu (
typfilmu_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
typfilmu_stitok VARCHAR(100) NOT NULL,

PRIMARY KEY (typfilmu_id)
)
ENGINE=MyISAM';

$vysledky = mysql_query($dotaz, $db) or die(mysql_error($db));

// vytvorenie tabulky ludia
$dotaz = 'CREATE TABLE ludia(
ludia_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
ludia_plnemeno VARCHAR(255) NOT NULL,
ludia_herec TINYINT(1) UNSIGNED NOT NULL default 0,
ludia_reziser TINYINT(1) UNSIGNED NOT NULL default 0,

PRIMARY KEY (ludia_id)
)
ENGINE = MyISAM';
$vysledky = mysql_query($dotaz, $db) or die (mysql_error($db));

echo 'Databáza filmov bola úspešne vytvorená!';
?>


Do databázy vkladam údaje takto:

Kód:
// Pripojenie k Mysql.
$db = mysql_connect('localhost', 'uzivatel', 'heslo') or die ('Nemôžem sa pripojit, skotrolujte pripojenie k serveru');

// Nastavenie databazi ako pracovnej
mysql_select_db('moviesite', $db) or die(mysql_error($db));

// Vlozenie udajov do tabulky "film" .
$dotaz = 'INSERT INTO film (film_id, film_meno, film_typ,
          film_rok, film_herci, film_reziser)
          VALUES
            (1, "Božský Bruce", 5, 2003, 1, 2 ),
            (2, "Maléry pana Šikuly", 5, 1999, 5, 6 ),
            (3, "Grand Canyon", 2, 1991, 4, 3 )';
$vysledky = mysql_query($dotaz, $db) or die(mysql_error($db));

// Nova data do tabulky "typfilmu" .
$dotaz = 'INSERT INTO typfilmu (typfilmu_id, typfilmu_stitok)
        VALUES
          (1, "Sci Fi"),
          (2, "Drama"),
          (3, "Dobrodružný"),
          (4, "Vojnový"),
          (5, "Komedia"),
          (6, "Horor"),
          (7, "Akčný"),
          (8, "Detský")';
$vysledky = mysql_query($dotaz, $db) or die(mysql_error($db));

// Nova data do tabulky "ludia" .
$dotaz = 'INSERT INTO ludia (ludia_id, ludia_plnemeno,
          ludia_herec, ludia_reziser)
          VALUES
           (1, "Jim Carrey", 1, 0 ),
           (2, "Tom Shadyac", 0, 1 ),
           (3, "Lawrence Kasdan", 0, 1 ),
           (4, "Kevin Kline", 1, 0 ),
           (5, "Ron Livingston", 1, 0 ),
           (6, "Mike Judge", 0, 1 )';
$vysledky = mysql_query($dotaz, $db) or die(mysql_error($db));

echo 'Vloženie do databázi prebehlo úspešne!';
?>


No a už teraz keď som si v SQL Buddy prezrel vytvorenú databázu nezobrazovali sa mekčene a dĺžne ale len rôzne znaky namiesto nich. Kódovanie ale bolo nastavené utf8, tak som ručne prepísal všetky slová a uložil databázu, všetko sa zobrazovalo v poriadku.
Ale keď som si dal vypísať obsah databázy do okna prehliadača kódovanie znovu nefungovalo. Viete mi poradiť prečo?

Databázu som vypisoval takto:

Kód:
<?php
$db = mysql_connect('localhost', 'uzivatel', 'heslo')
   or die ('Nemôžem sa pripojiť skontrolujte pripojenie k serveru');
mysql_select_db('moviesite', $db) or die(mysql_error($db));

// vyber názov filmou vyrobených od roku 1990
$dotaz = 'SELECT film_meno, film_typ
         FROM film
         WHERE film_rok > 1990
         ORDER BY film_typ';
$vysledky = mysql_query($dotaz, $db) or die(mysql_error($db));

// zobraz vysledky
while ($riadok = mysql_fetch_array($vysledky)) {
  foreach ($riadok as $hodnota) {
    echo $hodnota . ' ';
  }
  echo '<br/>';
}
?>


_________________
HP ProBook 4520s; CPU: Intel i5-480M 2,67 Ghz; GPU: ATI Radeon HD 6370M 1 GB; MB: Hewlett-Packard 1411; Chipset: IntelHM57 (IbexPeak-M DH); RAM: Hyundai DDR3 4GB (PC3-10600); HDD: Hitachi 500GB 7200RPM SATA-II; Zvuková karta: Axago ADA-X5; Reproduktory: Genius SW-G2.1 1250 GX Gaming; OS: openSUSE 13.1, 64-bit
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.08.12
Prihlásený: 02.01.15
Príspevky: 94
Témy: 29 | 29
Napísal autor témyOffline : 25.07.2013 20:23 | MySQL kódovanie znakov

Skúsil som databázu vytvoriť znovu a znovu do nej vložiť údaje. Keď som si ju prezrel v SQL Buddy vyzeralo to ako predtým ale tento krát som nič neprepisoval. Keď som údaje načítal na stránku všetko sa už zobrazilo tak ako malo. Takže by som sa chcel spýtať prečo mi v SQL Buddy ukazuje slovenské slová ako keby nebolo použité správne kódovanie?


_________________
HP ProBook 4520s; CPU: Intel i5-480M 2,67 Ghz; GPU: ATI Radeon HD 6370M 1 GB; MB: Hewlett-Packard 1411; Chipset: IntelHM57 (IbexPeak-M DH); RAM: Hyundai DDR3 4GB (PC3-10600); HDD: Hitachi 500GB 7200RPM SATA-II; Zvuková karta: Axago ADA-X5; Reproduktory: Genius SW-G2.1 1250 GX Gaming; OS: openSUSE 13.1, 64-bit
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 26.07.2013 18:50 | MySQL kódovanie znakov

JTB píše:
Takže by som sa chcel spýtať prečo mi v SQL Buddy ukazuje slovenské slová ako keby nebolo použité správne kódovanie?
Pretože tie údaje sú v databáze uložené nesprávne. Ten skript vkladá do DB údaje v náhodnom kódovaní, ale keďže rovnaké kódovanie používa aj pri zobrazovaní, tak to vyzerá tak, ako keby tam žiadny problém nebol.

Ak sú tie údaje v UTF-8 (čo je asi najrozumnejšie kódovanie pri webe), tak po pripojení k DB treba MySQL povedať, že dáta budú práve v UTF-8, napr. takto:
Kód:
mysql_query("SET NAMES utf8;", $db) or die (mysql_error($db) );


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.09
Prihlásený: 08.07.15
Príspevky: 169
Témy: 46 | 46
NapísalOffline : 27.07.2013 21:32 | MySQL kódovanie znakov

V prvom rade by som nepouzival mysql_* na tvojom mieste.. a potom sa zaoberal ostatnym..


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.08.12
Prihlásený: 02.01.15
Príspevky: 94
Témy: 29 | 29
Napísal autor témyOffline : 28.07.2013 12:06 | MySQL kódovanie znakov

Ďakujem za odpoveď!


_________________
HP ProBook 4520s; CPU: Intel i5-480M 2,67 Ghz; GPU: ATI Radeon HD 6370M 1 GB; MB: Hewlett-Packard 1411; Chipset: IntelHM57 (IbexPeak-M DH); RAM: Hyundai DDR3 4GB (PC3-10600); HDD: Hitachi 500GB 7200RPM SATA-II; Zvuková karta: Axago ADA-X5; Reproduktory: Genius SW-G2.1 1250 GX Gaming; OS: openSUSE 13.1, 64-bit
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.08.12
Prihlásený: 02.01.15
Príspevky: 94
Témy: 29 | 29
Napísal autor témyOffline : 28.07.2013 12:08 | MySQL kódovanie znakov

DeiForm píše:
V prvom rade by som nepouzival mysql_* na tvojom mieste.. a potom sa zaoberal ostatnym..


Mohol by si mi aj vysvetliť prečo to nepoužívať a čo namiesto toho používať? Učím sa zatial len z knihy, keď niečomu nerozumiem alebo mi nejde hľadám na fórach s týmto som zatial problém nemal, tak som to zatial neriešil. Ale rád si nechám poradiť.


_________________
HP ProBook 4520s; CPU: Intel i5-480M 2,67 Ghz; GPU: ATI Radeon HD 6370M 1 GB; MB: Hewlett-Packard 1411; Chipset: IntelHM57 (IbexPeak-M DH); RAM: Hyundai DDR3 4GB (PC3-10600); HDD: Hitachi 500GB 7200RPM SATA-II; Zvuková karta: Axago ADA-X5; Reproduktory: Genius SW-G2.1 1250 GX Gaming; OS: openSUSE 13.1, 64-bit
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.09
Prihlásený: 08.07.15
Príspevky: 169
Témy: 46 | 46
NapísalOffline : 28.07.2013 16:58 | MySQL kódovanie znakov

Takže napríklad len z php.net manuálu
Citácia:
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
mysqli_query()
PDO::query()


Pouzivaj mysqli_* alebo PDO.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.08.12
Prihlásený: 02.01.15
Príspevky: 94
Témy: 29 | 29
Napísal autor témyOffline : 28.07.2013 21:08 | MySQL kódovanie znakov

DeiForm píše:
Takže napríklad len z php.net manuálu
Citácia:
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
mysqli_query()
PDO::query()


Pouzivaj mysqli_* alebo PDO.


Ďakujem za radu/upozornenie. Knihu z ktorej sa učím o tom zmienka nebola. Je to už off topic ale napr. tento kód som upravil podľa dokumentácie ktorú som si pozrel. Len by som sa chcel spýtať,ak máš čas, či už by to bolo v poriadku.

Kód:
<?php
      
  $db = mysqli_connect("localhost","uzivatel","heslo","moviesite") or die("Error " . mysqli_error($db));
      
  mysqli_query($db, "SET NAMES utf8;") or die("Error " . mysqli_error($db));
      
  $dotaz = 'SELECT film_meno, film_rok, film_reziser, film_herci, film_typ
       FROM film
       ORDER BY film_meno ASC,
               film_rok DESC'; 
         
  $vysledky = mysqli_query($db, $dotaz);
         
  $pocet_filmov = mysqli_num_rows($vysledky);
               
  while($riadok = mysqli_fetch_array($vysledky))
  {
     extract($riadok);
     echo '<tr>';
     echo '<td>'. $film_meno. '</td>';
     echo '<td>'. $film_rok. '</td>';
     echo '<td>'. $film_reziser. '</td>';
     echo '<td>'. $film_herci. '</td>';
     echo '<td>'. $film_typ. '</td>';
     echo '</tr>';
 }


Samozrejme chýba k tomu kód HTML ale ten je myslím v tomto prípade nepotrebný.


_________________
HP ProBook 4520s; CPU: Intel i5-480M 2,67 Ghz; GPU: ATI Radeon HD 6370M 1 GB; MB: Hewlett-Packard 1411; Chipset: IntelHM57 (IbexPeak-M DH); RAM: Hyundai DDR3 4GB (PC3-10600); HDD: Hitachi 500GB 7200RPM SATA-II; Zvuková karta: Axago ADA-X5; Reproduktory: Genius SW-G2.1 1250 GX Gaming; OS: openSUSE 13.1, 64-bit
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 27.08.09
Prihlásený: 08.07.15
Príspevky: 169
Témy: 46 | 46
NapísalOffline : 29.07.2013 12:29 | MySQL kódovanie znakov

Myslim ze malo by to byt ok, Ja osobne pouzivam mysqli v OOP a precitaj si PM ak tak tam budes mat viac info


 [ Príspevkov: 9 ] 


MySQL kódovanie znakov



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Kodovanie znakov

v Operačné systémy Microsoft

0

410

16.05.2010 18:20

sasori1512

V tomto fóre nie sú ďalšie neprečítané témy.

MySQL kodovanie

v Databázy

3

1050

28.02.2008 14:26

emer

V tomto fóre nie sú ďalšie neprečítané témy.

Kódovanie MySQL databázy

v PHP, ASP

2

588

23.04.2011 18:30

richo9996

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena kodovanie pri MySQL 4.0

v Databázy

5

787

27.08.2009 20:50

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

Vkladanie dát cez mysql konzolu - kódovanie

v Databázy

6

690

24.09.2011 19:54

camo

V tomto fóre nie sú ďalšie neprečítané témy.

Mapa znakov

v Operačné systémy Microsoft

2

2464

18.11.2009 19:36

Lukas9

V tomto fóre nie sú ďalšie neprečítané témy.

Minimálny počet znakov

v PHP, ASP

3

588

27.07.2007 7:56

zero0x

V tomto fóre nie sú ďalšie neprečítané témy.

c - pocet znakov

v Assembler, C, C++, Pascal, Java

9

671

17.09.2011 11:21

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

Nespravne zobrazovanie znakov

v Redakčné systémy

1

717

12.10.2006 22:11

itsgoingd

V tomto fóre nie sú ďalšie neprečítané témy.

Redukovanie množstva znakov

v PHP, ASP

5

320

30.04.2013 15:36

BX

V tomto fóre nie sú ďalšie neprečítané témy.

Množstvo rovnakých znakov

v PHP, ASP

1

540

14.05.2011 10:53

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

C++ Čitanie znakov/čísel

v Assembler, C, C++, Pascal, Java

6

612

09.05.2014 12:04

Lukys12345

V tomto fóre nie sú ďalšie neprečítané témy.

Textarea limit znakov onkeypress

v JavaScript, VBScript, Ajax

4

1168

14.05.2019 22:13

neopagan

V tomto fóre nie sú ďalšie neprečítané témy.

Vypísanie znakov v C

v Assembler, C, C++, Pascal, Java

4

509

18.04.2012 20:48

Fico

V tomto fóre nie sú ďalšie neprečítané témy.

nastavenie znakov na klávesnici

v Externé zariadenia

2

397

31.07.2014 11:12

DonnieBrasco

V tomto fóre nie sú ďalšie neprečítané témy.

Sirka divu - vela znakov

v Ostatné

3

535

06.04.2009 17:11

exoomer



© 2005 - 2024 PCforum, edited by JanoF