Autor | Zpráva | ||
---|---|---|---|
Mufna Profil |
#1 · Zasláno: 30. 4. 2009, 14:37:04 · Upravil/a: Mufna
Zdravím Vás. Nevím dost dobře jaký jsem měl dát tomuhle tématu název. Zkusím raději popsat, o co mi jde, doufám, že mi někdo poradí.
V nějakém PHP souboru, který se stará o editaci dat jdoucích do DB, mám pomocí JS řešeno přidávání fotografií (funguje to tak, že po kliknutí na "Přidat" se pomocí JS otevře pop-up okno, kde jsou seřazeny všechny názvy fotografií, tam se klikne na aktivní šipečku u fotografie a ta se následně přidá do seznamu v tom hlavním skriptu, resp. hlavní stránce. Takto přidané fotografie se postupně řadí do formulářového prvku <select>. A pak se zapisují do databáze (zapisují se jen názvy oddělené ; ). A tohle mi právě dělá problémy za jistých okolností, a to tehdy, pokud na hlavní stránce zvolím přidat, tím se otevře pop-up okno, ale v něm už nic nezvolím a zavřu ho. V takovém případě se mi v <select> objeví prázdný řádek. A tohle bych potřeboval nějak ošetřit, aby se (pokud fotku nevyberu) tenhle řádek vůbec neobjevil. A hlavně ne na začátku. Pak tam zůstává ten středník, který způsobuje problémy, když to pak všechno zapíšu do databáze. Pak je třeba v DB řetězec ";;fotka1;fotka2;fotka3;" a při výpisu na web se první fotka vůbec nezobrazí. EDIT: Resp. ono se to všechno sice zobrazí, ale já používám pro hlavní fotku přímo $row([photo][0]) a to mi dělá problémy. Zkoušel jsem to taky řešit mimo JS pomocí PHP přímo před zápisem do DB if (strlen(trim($_POST["photo"]==0))) nebo if (!isset($_POST["photo"])) ale nějak to nedělá to co potřebuju. Ten javascript mám takhle: * v hlavním skriptu <script type="text/javascript"> function add_photo() { var plist=document.forms[0].elements["plist"]; plist.options[plist.length]=new Option(); window.open('selectphoto.php','SelectPhoto'); return; } function remove_photo() { var plist=document.forms[0].elements["plist"]; plist.options[plist.selectedIndex]=null; var photos=""; for (var i=0;i<plist.length;i++) photos+=";"+plist.options[i].value; photos=photos.slice(1); document.forms[0].elements["photos"].value=photos; return; } </script> <select name="plist" id="plist"> <?php $photos=explode(";",$data["photos"]); foreach ($photos as $photo) { if ($photo!="") echo '<option value="'.$photo.'">'.$photo.'</option>'; } ?> </select> <input value="Přidat" onclick="add_photo();"> <input value="Odebrat" onclick="remove_photo();"> * ve skriptu "selectphoto.php" <script type="text/javascript"> function select(file) { var doc=window.opener.document; plist=doc.forms[0].elements["plist"]; plist.options[plist.length-1].text=file; plist.options[plist.length-1].value=file; var photos=""; for (var i=0;i<plist.length;i++) photos+=";"+plist.options[i].value; photos=photos.slice(1); doc.forms[0].elements["photos"].value=photos; window.close(); } </script> |
||
Mufna Profil |
#2 · Zasláno: 30. 4. 2009, 14:43:17
A nebo by mi úplně stačilo jakkoliv ošetřit, aby (pokud tam budou) se nahradili samotné znaky ; na začátku řetězce zapisovaného do DB prázdným místem (resp. "ničím") - pomocí PHP.
|
||
Časová prodleva: 15 let
|
0