| 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