Autor | Zpráva | ||
---|---|---|---|
kikinet Profil |
No tak píšu zas. Potřebuju vyřešit jak zapsat proměnné, které vyplnil uživatel ve formuláři, do souboru. Ale s tím, že pokud některé pole nevyplní tak se neodešle. Posílám kód:
$ostatni = array ('ostatni1', 'ostatni2', 'ostatni3', 'ostatni4', 'ostatni5'); foreach ($ostatni as $hodnota){ if (!empty($_POST[$hodnota])){ $saveostatni = '<div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$TADY POTREBUJU DOSTAT VSECHNY PROMENNE.'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$A TADY TAKY.'.JPG"></a></div></div>'; }} $new = StripSlashes ($saveostatni); if (File_Exists ($fileostatni)) { $old = file_get_contents ($fileostatni); file_put_contents ($fileostatni, $new.$old);} Když na místo kde potřebuju dostat ty proměnné dám $ostatni , tak mi to v souboru vypíše array. Když tam dám ostatni1 - 5 , tak to sice zapíše to co vyplnil uživatel, ale vyplní to i ty které nevyplnil.
Pro úplnost: Jedná se o ulehčení vkládání fotek na web (fotky se nahrají jinde - toto je jen html zápis) Doufám, že mě někdo chápe :D |
||
DJ Miky Profil |
Skoro jsi to už vyřešila, jen potřebuješ do proměnné
$saveostatni vkládat ty <div>y postupně, jednu proměnnou po druhé. Před foreach si vytvoříš proměnnou $saveostatni s prázdným obsahem:
$saveostatni = ''; $TADY POTREBUJU DOSTAT VSECHNY PROMENNE a $A TADY TAKY napíšeš $_POST[$hodnota] (vybíráš hodnotu formulářového pole s názvem uloženým v proměnné $hodnota ). A ještě potřebuješ, aby se do proměnné $saveostatni připisovalo, ale nenahradil se současný obsah, to se dělá operátorem .= (tečka a rovnítko):
$saveostatni .= '<div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$_POST[$hodnota].'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$_POST[$hodnota].'.JPG"></a></div></div>'; Co ten skript dělá? foreach postupně projde pole $ostatni a každou položku (tedy ostatni1 , ostatni2 atd. v tvém případě) vždy uloží do proměnné $hodnota . Na dalším řádku kontroluješ, zda je pole z formuláře (tedy $_POST[$hodnota] , což bude postupně formulářové pole ostatni1 , ostatni2 atd.) vyplněné (to kontroluje !empty() ). Pokud je vyplněné, přidá ten řetězec začínající <div... do proměnné $saveostatni za původní obsah (důležité je, že ho nepřepíše, jen přidá na konec). Na konci cyklu foreach tedy bude za sebou až pět (počet hodnot v poli $ostatni ) <div>ů podle toho, které jsou ve formuláři vyplněné.
|
||
abc Profil |
#3 · Zasláno: 8. 9. 2012, 22:45:14
Ahoj,
jak píše DJ Miky a nakonci můžeš použít jenom: file_put_contents($fileostatni, $saveostatni, FILE_APPEND); |
||
kikinet Profil |
DJ Miky, abc:
Super, dík moc fakt :) jen mi to tam ty vyplněná pole vypíše 2x. prvni, druha, prvni, druha. prvni. druha, treti, prvni, druha, treti EDIT: Myslím jako že to vypíše ty vyplněné proměnné a pak je tam vypíše ještě jednou |
||
abc Profil |
#5 · Zasláno: 8. 9. 2012, 23:26:07
kikinet:
Však je tam chceš mít dvakrát ne? Viz „$TADY POTREBUJU DOSTAT VSECHNY PROMENNE“ a „$A TADY TAKY“ Kdyžtak pošli stávající kód a jak si představuješ výsledek |
||
kikinet Profil |
#6 · Zasláno: 8. 9. 2012, 23:35:06
abc:
No jasně. ASi jsem to popsala špatně. Köd je stejný jen s úpravou DJ Miky :) A výsledek potom v $fileostatni vypadá takto:
<div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$PRVNI POLE.'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$PRVNI POLE'.JPG"></a></div></div> <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$DRUHE POLE.'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$DRUHE POLE'.JPG"></a></div></div> <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$PRVNI POLE.'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$PRVNI POLE'.JPG"></a></div></div> <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$DRUHE POLE.'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$DRUHE POLE'.JPG"></a></div></div> A potřebovala bych to bez těch duplicitních řádků: <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$PRVNI POLE.'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$PRVNI POLE'.JPG"></a></div></div> <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$DRUHE POLE.'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$DRUHE POLE'.JPG"></a></div></div> |
||
Keeehi Profil |
#7 · Zasláno: 8. 9. 2012, 23:43:03
kikinet:
Pokud by jsi to upravila tak, jak DJ Miky napsal, měla by jsi to v pořádku. Tudíž jsi tam někde udělala chybu. Proto sem nakopíruj aktuální stav. |
||
kikinet Profil |
#8 · Zasláno: 9. 9. 2012, 14:37:24
Keeehi:
Tady je php: $ostatni = array ('ostatni1', 'ostatni2', 'ostatni3', 'ostatni4', 'ostatni5'); $fileostatni = "include/ostatni.php"; $odeslat = $_POST['odeslat']; $saveostatni = ''; if($odeslat == "Odeslat") { foreach ($ostatni as $hodnota){ if (!empty($_POST[$hodnota])){ $saveostatni .= '<div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/'.$_POST[$hodnota].'.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/'.$_POST[$hodnota].'.JPG"></a></div></div>'; $new = StripSlashes ($saveostatni); if (File_Exists ($fileostatni)) { $old = file_get_contents ($fileostatni); file_put_contents ($fileostatni, $new.$old);}}}} A tohle je formulář: <form method="POST" action="foto.php"> <table> <tr><td><b>Ostatní 1: </b></td><td><input type="text" name="ostatni1" value="<?php if(isset($_POST['ostatni1'])) echo htmlspecialchars($_POST['ostatni1'], ENT_QUOTES); ?>" size="25"></td></tr> <tr><td><b>Ostatní 2: </b></td><td><input type="text" name="ostatni2" value="<?php if(isset($_POST['ostatni2'])) echo htmlspecialchars($_POST['ostatni2'], ENT_QUOTES); ?>" size="25"></td></tr> <tr><td><b>Ostatní 3: </b></td><td><input type="text" name="ostatni3" value="<?php if(isset($_POST['ostatni3'])) echo htmlspecialchars($_POST['ostatni3'], ENT_QUOTES); ?>" size="25"></td></tr> <tr><td><b>Ostatní 4: </b></td><td><input type="text" name="ostatni4" value="<?php if(isset($_POST['ostatni4'])) echo htmlspecialchars($_POST['ostatni4'], ENT_QUOTES); ?>" size="25"></td></tr> <tr><td><b>Ostatní 5: </b></td><td><input type="text" name="ostatni5" value="<?php if(isset($_POST['ostatni5'])) echo htmlspecialchars($_POST['ostatni5'], ENT_QUOTES); ?>" size="25"></td></tr> <tr><td></td><td align="right"><input type="submit" name="odeslat" value="Odeslat"></td></tr> </table> </form> |
||
Nox Profil |
#9 · Zasláno: 9. 9. 2012, 14:46:13
A je ten soubor prázdný? Protože na řádcích 12 a 13 tam bereš co už tam je a přidáváš k tomu ... možná proto je to tam 2x (jinak lepší by byl zmíněný FILE_APPEND, pokud už by se to mělo připisovat)
|
||
kikinet Profil |
#10 · Zasláno: 9. 9. 2012, 14:54:24 · Upravil/a: kikinet
Nox:
Ne ten soubor není prázdný. Už tam jsou zapsané i jiné fotky. Ale i tak nechápu proč by to tam vypisovalo 2x? Nox: Jo a FILE_APPEND dává připisovaný obsah na konec že? Já ho potřebuju dát nahoru. |
||
Nox Profil |
#11 · Zasláno: 9. 9. 2012, 14:59:15
A co je tedy v tom $fileostatni před uložením a po? Resp. to co je v [#6] je celý obsah souboru, nebo jen vybrané, co se změnilo?
|
||
abc Profil |
#12 · Zasláno: 9. 9. 2012, 15:02:12
Doporučuji zkusit soubor smazat a vyzkoušet znovu
|
||
kikinet Profil |
#13 · Zasláno: 9. 9. 2012, 15:10:18 · Upravil/a: kikinet
Nox:
V v tom souboru je přesně tohle (odkaz na stránku s fotkami). A v [#6] je příklad kdy odešlu 2 vyplněná políčka (zapíše se první a druhé a pak zase první a druhé) abc: Dobře vyzkouším abc: Takže výsledek při zapsání do prázdného souboru, při zápisu 2 proměnných: <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/PRVNI POLE FORMULARE.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/PRVNI POLE FORMULARE.JPG"></a></div></div> <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/DRUHE POLE FORMULARE.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/DRUHE POLE FORMULARE.JPG"></a></div></div> <div class="photobox"><div class="photo"><a href="WEB FOTKY/ostatni/PRVNI POLE FORMULARE.JPG" rel="lightbox[ostatni]"><img src="WEB FOTKY/maleostatni/PRVNI POLE FORMULARE.JPG"></a></div></div> |
||
Časová prodleva: 13 let
|
0