Autor Zpráva
Tomashek
Profil
Dobrý den,
mám formulář a chci aby se po odeslání naplnila proměnná a pak vypsala nad celým formulářem ve funkci. Jde o chybové hlášky.
Zkoušel jsem to přes SESSIONS, ale u toho by byla potřeba přesměrování stránky, což nechci, protože by se vymazaly vyplňené údaje v formuláři.
Zkoušel jsem to také přes GET, ale to je to stejné - vymažou se vyplněné údaje.

echo $PROMENNA;

if(prazny input){$PROMENNA = 'spatne';}
(něco v tom stylu);

Děkuji za rady,
Tomashek
Nox
Profil
Takže se to má odeslat, ale vlastně nemá a pak se má po načtení před načtením vepsat hláška :)

do session si ulož a odeslané hodnoty máš přece v postu...a pokud je cílová stránka pouze skript, bez html výstupu, tak můžeš post uožit taky do session např.
Majkl578
Profil
K tomu nelze říct nic jiného než že je to problém návrhu. :)
Tomashek
Profil
Nox:
Není to pouze skript bohužel. Když se odešle formulář, tak se stránka nepřesměruje, ale se načte znovu. a Když to uložím do session, tak se to zobrazí až po přesměrování.
Jedině že bych ty data z formuláře také uložil do session.
Nox
Profil
Tomashek:
Tím je to jednodušší, jelikož se po vykonání nikam nepřesměruje, tak přece máš hodnoty stále v $_POST a můžeš je do formuláře vepsat, aby tam uživatel měl, co vyplnil

pak dokonce nepotřebuješ SESSION vůbec, můžeš hlášku vepsat do normální proměnné, příp. přímo do stránky
unlucky
Profil
<?php 
if ($_POST['ok'] =="" xor !isset($_POST['ok']) ){$promenna="spatne";}
?>

<form method="post" action=<?php echo "$_SERVER['REQUEST_URI']; ?>" >
<input type=text name=neco>
<input type=submit name=ok value=ok>
</form>


muzes nahradit vsude to post na get
Tomashek
Profil
Takhle to používám normálně, ale kdybych chtěl použít například error div, v kterém by se vypisovaly všechny chybov hlášky a ten by byl nad celým obsahem (takže by to nešlo normálně vepsat, ale bylo by to potřeba nějak dostat do toho divu - proměnné)
Nox
Profil
Tomashek
V čem je problém?

<?php
// logická vrstva
if( $_POST ){
  // zpracování
  // nastala chyba
  $error = "Je to rozbitý";
  }
  
// prezentační vrstva
?>
<h1>Formulář</h1>

<?php if(isset($error)) echo "<div class='message_error'>$error</div>"?>

<form method="post" action="..." >
<input type="text" name="neco" value="<?php if($_POST) echo $_POST["neco"]?>">
...
</form>
Tomashek
Profil
No asi to půjde použít jenom takhle. Myslel jsem, že třeba kdyby ten Error byl možná i v nadřazeném souboru (index) a formulář v includovaném, ale to asi nepůjde.
unlucky
Profil
si to vyzkousej :P

index 
vypis promenne s errorem

includnuty obsah kde je promenna s errorem

Nox
Profil
Tomashek:
Jasně že jo, to je jedno jestli se to includuje, nebo je to tam dané napevno
unlucky
Profil
Nox:
o

Jenom bych chtel dodat,
že zde záleží na poradi kde to vypisujes a kde je ta promenna
Tomashek
Profil
Píšu něco jinho než myslím
Index - error (promenna)

include obsah,kde je ten formular a vlastne tady by se to jedine mohlo kontrolovat zda je prazdne, cili vytvoreni promenne zde
Nox
Profil
Klidně si ty includy odmysli a představ si, že to pokopíruješ přes ctrl+c/v do jednoho souboru
AM_
Profil
zkus na začátek toho includovaného souboru dát "global $promenna;"
ono includované soubory se chovají pokud vím jako funkce
Tomashek
Profil
ten global nepomohl
Nox
Profil
AM:
ono includované soubory se chovají pokud vím jako funkce

"When a file is included, the code it contains inherits the variable scope of the line on which the include occurs. "

Globál podle mě není potřeba, to by se musel používat skoro neustále
AM_
Profil
Nox:
Jo, pravda, spletl jsem se; global je potřeba jen v tomhle případě:
include "a.php"; //obsah: $test=1;
include "b.php"; //obsah: global test; echo $test;

alespoň tohle už mi bez globalu nefungovalo :)

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: