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 = '';
Za $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
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
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
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
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
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
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
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
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
Doporučuji zkusit soubor smazat a vyzkoušet znovu
kikinet
Profil
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>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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