Forum » Programiranje » [PHP] Nepravilen prikaž šumnikov v select tag-ih
[PHP] Nepravilen prikaž šumnikov v select tag-ih
Glodko ::
Imam opisano težavo. Uporabljam AJAX da posodobim samo del ("div") spletne strani. Težava je ker vsebino dobim iz baze (mySQL) in vrednosti vstavim v html "select" tag. Ponavadi (pri običajnih php fajlih, kjer je noter še precej html-ja) težavo rešim tako da v "head" tagu definiram "charset" 1250. Pri uporabi AJAX-a pa omenjene "select" tage zgeneriram v php fajlu ki ne uporablja veliko html-ja (ne potrebujem html, head, body... tagov), pač pa samo php kodo in nekaj html-ja (select, option...). Ali ima kdo kakšno idejo kako bi ta problem rešil? 
DeeJay ::
za pravilen prikaz šumnikov iz mysql v HTML neglede na ajax je najbolje da imaš:
 
mysql
baza mora biti kreirana z: utf8_general_ci
tabela mora biti kreirana z: utf8_general_ci
 
php
takoj po tem, ko se s PHP povežeš na mysql (mysql_connect) nardiš prvi query
 
pri html v
  
 
pomembno:
php ali html datoteka mora biti shranjena v UTF-8 obliki brez BOM-a. Ne vem ker editor nucaš, sam ko shranjuješ imaš ponavadi možnost izbrati tip encodinga.
 
na ta način ti bodo delali vedno vsi šumniki in ostali utf-8 znaki pri shranjevanju in branju iz baze.
 
glede ajaxa je pa najboljša praksa, da podatke dobivaš v JSON obliki in jih na glavni strani potem obdeluješ in injectaš po želji.
 
se pravi želiš preko ajaxa dobit neke podatke o osebi, pošlješ ID osebe ajax.php fajlu, tam nardiš mysql poizvedbo in jo pošlješ nazaj v JSON obliki.
Na drugi strani pa ta JSON prebereš in spišeš podatke v nek DIV.
 
Poglej si:
http://si1.php.net/json_encode
http://stackoverflow.com/questions/4076...
http://stackoverflow.com/questions/1776...
 
lp
mysql
baza mora biti kreirana z: utf8_general_ci
tabela mora biti kreirana z: utf8_general_ci
php
takoj po tem, ko se s PHP povežeš na mysql (mysql_connect) nardiš prvi query
mysql_query("SET NAMES uft8");pri html v
<head>dodaš
<meta charset="utf-8">
pomembno:
php ali html datoteka mora biti shranjena v UTF-8 obliki brez BOM-a. Ne vem ker editor nucaš, sam ko shranjuješ imaš ponavadi možnost izbrati tip encodinga.
na ta način ti bodo delali vedno vsi šumniki in ostali utf-8 znaki pri shranjevanju in branju iz baze.
glede ajaxa je pa najboljša praksa, da podatke dobivaš v JSON obliki in jih na glavni strani potem obdeluješ in injectaš po želji.
se pravi želiš preko ajaxa dobit neke podatke o osebi, pošlješ ID osebe ajax.php fajlu, tam nardiš mysql poizvedbo in jo pošlješ nazaj v JSON obliki.
Na drugi strani pa ta JSON prebereš in spišeš podatke v nek DIV.
Poglej si:
http://si1.php.net/json_encode
http://stackoverflow.com/questions/4076...
http://stackoverflow.com/questions/1776...
lp
Glodko ::
Uau hvala za tako obsežen in dobro spisan odgovor. Nastavitev baze ne morem spreminjati. Drugod nimam s tem težav (vse .php fajle imam sicer shranjene kot ANSI in z 1250 charsetom deluje vse OK). Težava je očitno potem ker nimam v "ajax.php" definiranega tega charseta ker "head" taga sploh nimam. Skušal sem ga dodat vendar ne pomaga. Skušal sem tudi zamenjati šumnike z njihovimi html kodami (npr. Č => Č) brez uspeha. Vztrajno mi namesto šumnikov prikazuje "?" (vprašaje). Opazil sem tudi da tam kjer je zadnja črka "č" mi prikaže tudi del "option" taga. 
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | [UWP] [C#]Oddelek: Programiranje | 4482 (2512) | BivšiUser2 | 
| » | ASP, MySQL, UTF8, GoDaddy, šumnikiOddelek: Programiranje | 1267 (1136) | techfreak :) | 
| » | Šumniki v php-juOddelek: Izdelava spletišč | 4908 (3411) | JoSmo | 
| » | PHP in JS problem :(Oddelek: Programiranje | 1830 (1638) | l0g1t3ch | 
| » | MySQL in czsOddelek: Izdelava spletišč | 3715 (2805) | krho |