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 | 4176 (2206) | BivšiUser2 |
» | ASP, MySQL, UTF8, GoDaddy, šumnikiOddelek: Programiranje | 1159 (1028) | techfreak :) |
» | Šumniki v php-juOddelek: Izdelava spletišč | 4746 (3249) | JoSmo |
» | PHP in JS problem :(Oddelek: Programiranje | 1715 (1523) | l0g1t3ch |
» | MySQL in czsOddelek: Izdelava spletišč | 3600 (2690) | krho |