» »

PHP, JS in option HTML tag

PHP, JS in option HTML tag

Glodko ::

Nikakor mi ne uspe. V formi imam dve select vnosni polji. Narejeno imam tako, da ko izbereš prvo vrednost, se na podlagi tega avtomatsko zgenerira drugi select input. Imam takole, recimo:

Izberi kraj .... ko uporabnik izbere kraj se zgenerira drugi drop-down meni z option tagi, kjer lahko izbere osebo.

Težava je v tem, da bi sedaj rad vsaki osebi (ime priimek) dodal še opis v teh option tagih, ki pa je shranjen v bazi kot "text" podatkovni tip.

JS/PHP koda:

    $mod_result = mysql_query("SELECT id, ime, priimek, SUBSTRING(opis, 1, 50) FROM osebe WHERE id='$c_id' ORDER BY id DESC") or die(mysql_error());
    while($m=mysql_fetch_array($mod_result))
    {
	$ime_polno=$m[1].' '.$m[2]; //deluje
        $ime_polno=$m[1].' '.$m[2].' '.$m[3]; //ne deluje
    ?>
      selbox.options[selbox.options.length] = new Option("<?=$ime_polno;?>","<?=$m[0];?>");
    <?
    }


Se pravi rad bi še tisti opis, skrajšan na 50 znakov dodal v option tag. Kar pa nikakor noče delat. Ko dodam poleg "opis" vse skupaj neha delati. Če pustim, tako kot je sedaj v kodi, ko prikaže samo ime in priimek pa je vse v redu. Edina razlika je v tem da je opis v bazi podatkovnega tipa "text". Kakšna ideja kako bi tole lahko rešil?

DeeJay ::

Imaš v opisu kake dvojne narekovaje? Če imaš potem jih morš "eskejpat" z htmlspecialchars()
new Option("<?=htmlspecialchars($ime_polno);?>","<?=$m[0];?>");


Druga stvar, ki pa ni povezana s tvojim problemom, je pa bolj pregledna... zamenjaj mysql_fetch_array() z mysql_fetch_assoc() in potem kliči $m['id'], $m['ime'], $m['priimek'] namesto $m[0], $m[1], .... tko boš imel manj napak in ne bo ti treba vedno gledat kateri index spada h katerem polju. Poleg tega pa ni potreben pravilen vrstni red klicanja polj v SELECT stavku.
edino pri SUBSTRING(opis, 1, 50) boš moral dodat alias :
SELECT id, ime, priimek, SUBSTRING(opis, 1, 50) AS kratek_opis FROM osebe WHERE id='$c_id' ORDER BY id DESC


In upam, da $c_id preverjaš preden ga nucaš za bazo? Drugače ga daj vsaj mysql_real_escape_string(). Mal varnosti ne škodi.
SELECT id, ime, priimek, SUBSTRING(opis, 1, 50) AS kratek_opis FROM osebe WHERE id='" . mysql_real_escape_string($c_id) . "' ORDER BY id DESC

Zgodovina sprememb…

  • spremenil: DeeJay ()

Glodko ::

Hvala sem spremenil. Vendar še vedno zadeva ne deluje. :8)

DeeJay ::

pa si sprobal, če ti SUBSTRING(opis, 1, 50) sploh kej vrne?

Glodko ::

Da vrne tekst.

DeeJay ::

Probi še tole:

<?php
$mod_result = mysql_query("SELECT id, ime, priimek, SUBSTRING(opis, 1, 50) AS kratek_opis FROM osebe WHERE id='" . mysql_real_escape_string($c_id) . "' ORDER BY id DESC") or die(mysql_error());
while ($m = mysql_fetch_assoc($mod_result))
{
	$ime_polno = $m['ime'] . ' ' . $m['priimek'] . ' ' . $m['kratek_opis'];
	$ime_polno = str_replace(array ("\r\n", "\n", "\r"), " ", $ime_polno);
	$ime_polno = htmlspecialchars($ime_polno);
	?>
	selbox.options[selbox.options.length] = new Option("<?php echo $ime_polno;?>","<?php echo $m['id'];?>");
	<?php
}
mysql_free_result($mod_result);
?>

Zgodovina sprememb…

  • spremenil: DeeJay ()

Glodko ::

Hvala tole pa zdaj deluje. :)

Sedaj moram samo še ugotoviti, kako odstranim razne " in podobne zadeve iz teksta ven.

DeeJay ::

Se mi je zdelo da bo :)
problem je v "nevidnih" znakih za novo vrstico "\n" "\r\n", ki jih očitno potem Option ne zna prežvečit.

hobbit ::

Glodko je izjavil:

Hvala tole pa zdaj deluje. :)

Sedaj moram samo še ugotoviti, kako odstranim razne " in podobne zadeve iz teksta ven.


str_replace

hobbit ::



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Spletni obrazec s pogojem

Oddelek: Izdelava spletišč
311473 (995) alenkah
»

Samodejno odpiranje slik v mapi

Oddelek: Pomoč in nasveti
9853 (765) mayhem
»

[php, mysql] sortiranje izpisa iz baze

Oddelek: Izdelava spletišč
262591 (2110) Binji
»

MSN Messenger 7

Oddelek: Programska oprema
103462 (3044) Tilen
»

Podtke iz baze v Listbox

Oddelek: Izdelava spletišč
6820 (761) Trubadur

Več podobnih tem