Autor Zpráva
laijk
Profil
Ahojte, mám na stránke možnosť pridávať bb kódy, premieňam ich pomocou funkcie str_ireplace, všetko ide v poriadku len keď tam napíšem nejaké písmeno s diakritikou tak sa mi do DB neuloží nič, môže to byť zlým formátovaním mysql? mám nastavené všetko na windows-1250
Kajman
Profil
Vypište si sestavený dotaz a chybu, ať víte, proč se to neuložilo.
laijk
Profil
Kajman:
prepáč zle som napísal problém, ono mi tam uloží všetko čo treba čiže žiadna chyba sa nevypíše, urobí nový riadok, všeto tam je - čiže napr. čas atd..., len ten text je prázdny keď tam dám napr. mäkčeň
Kajman
Profil
Jak konkrétně vypadá sestavený dotaz, který zlobí?
laijk
Profil
mysql_query("INSERT INTO nepotvrdene(blog_name, blog_cat, blog_text, blog_time, blog_author) VALUES ('$nazov', '$kat', '$text', '$time', '$autor' )")
-toto je ten dotaz, všetko mi správne do DB zapíše iba $text nie

EDIT: problém v dotaze nebude, pretože keď tam nieje diakritika medzi tými bb kódmi tak to zapíše

EDIT2: zistil som kde bol problém, zistil som, že ked som pred vložením do DB ošetril ten text takto:
$text = htmlspecialchars(mysql_real_escape_string($_POST['textblogu'])); tak vtedy keď som tam dal diakritiku tak mi nevložilo do DB nič, ked som to htmlspecialchars odobral tak všetko ide ako má, ako je to možné, netreba to ošetriť?
Kajman
Profil
Vypište si výsledný sestavený dotaz po doplnění těch proměnných - třeba zjistíte, že $text je prázný a hledáte chybu úplně jinde, než máte.
laijk
Profil
Kajman:
zistil som kde bol problém, zistil som, že ked som pred vložením do DB ošetril ten text takto:
$text = htmlspecialchars(mysql_real_escape_string($_POST['textblogu'])); tak vtedy keď som tam dal diakritiku tak mi nevložilo do DB nič, ked som to htmlspecialchars odobral tak všetko ide ako má, ako je to možné, netreba to ošetriť?
Keeehi
Profil
Protože to máte ve špatném pořadí. mysql_real_escape_string(htmlspecialchars()) by bylo správné pořadí, ovšem htmlspecialchars tam nemá při ukládání do databáze co dělat, má být až při výstupu. Takže jste vlastně omylem dosáhl správného stavu.
laijk
Profil
má být až při výstupu.
-ale keď ho dám na výstup tak mi nevypíše zase nič, lebo vlastne html dostane tie html tagy, ktoré som zmenil z bb kódov, skúšam hocičo, ale bud to bude neošetrené, alebo mi nepôjde diakritika :( čo by som nechcel, neviem ako to vyriešiť
Keeehi
Profil
laijk:
Ano, bb tagy převádět také až při výstupu. Nejdříve htmlspecialchars a pak převod bb tagů.
laijk
Profil
stále to nejde, toto je môj kód pri výstupe, údaje v DB sú stále v bb kodoch:
$zalomenyblog = wordwrap($blog_text, 20, "\n", true);
$zalomenyblog = htmlspecialchars($zalomenyblog);
$bb = array("", "", "[u]", "[/u]", "", "");
$html = array("<b>", "</b>", "<u>", "</u>", "<i>", "</i>");
$zalomenyblog = str_ireplace($bb, $html, $zalomenyblog);
echo $zalomenyblog;

-nevypíše stále nič
Tori
Profil
laijk:
htmlspecialchars převádí nebezpečné znaky na entity. Tzn za řádkem 2 už nebude <b> ale &lt;b&gt;.
laijk
Profil
Tori:
áno, ale ja tie údaje ťahám z DB, a v DB je napr. nieco a nie <b>nieco</b> a to nieje nebezbečný znak, to by sa malo po ošetrení zmeniť na html tag;
keď som tento kód upravil tak, že som vymazal 2. riadok (ten htmlspecialchars) tak mi to ide, mne tá funkcia nejako neberie diakritiku neviem prečo

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: