Autor Zpráva
BunnyBugs6
Profil *
Zdravím, potřeboval bych poradit se zobrazením odeslaného formuláře, resp. špatně vyplněného formuláře.
Když mi někdo nevyplní povinné políčko ve formuláři, tak se mu pomocí příkazu "echo" zobrazí na nové stránce o tom hláška.
Jak docílit toho, aby se ta hláška vypsala třeba hned pod ten formulář? a zároveň už vyplněná pole zůstala vyplněná?
Díky za radu.
baklazan
Profil *
Co tak spracuvajuci skript a formular dat do jedneho php suboru a action vo forme nechat prazdny ?
dan55
Profil
Formulář přesměrovat přes header, např. takto
header("Location:formular.php?chyba=1");

a na stránce formulář zjistit jestli hláška je 1 a vypsat formulář i hlášku
breeta
Profil *
Podívej se sem
BunnyBugs6
Profil *
Tak už jsem to provedl na jeden soubor PHP s tím, že ACTION jsem nechal prázdný, funguje to, ale mám zase dva problémy:

1) když nevyplním povinné pole, tak mám sice hlášku vypsanou na začátku formuláře, ale data ve formuláři jsou zase prázdná, takže se musí vše vyplnit znovu :-( ... jak tohle mám ošetřit?

2) pokud je vše o.k. a formulář se odešle, objeví se hláška o úspěšnosti, ale opět je tam zobrazen prázdný formulář, tak jak zobrazit pouze samotnou hlášku? samozřejmě v původním obsahu? (formulář je umístěn v obsahu mezi levým a pravým menu)

Díky za pomoc.
panther
Profil
BunnyBugs6:
jak tohle mám ošetřit?
vyplňuj atribut „value“ u jednotlivých polí:
<input type="text" name="policko" value="<?php echo $_POST/$_GET['policko'] ?>">


tak jak zobrazit pouze samotnou hlášku?
buď na samostatné stránce, nebo formulář skryj. Resp. udělej podmínku ve smyslu:
if(vsechno vyplneno) {echo "ok";}
else { ?>
<form>
...
</form>
<?php } ?>
BunnyBugs6
Profil *
[#6] panther

Tak bohužel nefunguje ani jedno, nevím, co dělám špatně.
Pro kontrolu zde uvádím celý kód stránky, tak prosím poraďte (je ten formulář o dost položek očesaný, aby nebyl tak dlouhý, však se to tam jen opakuje, podstata je daná):

<div id="form">

<?php
if (isset($_POST['odeslani'])) {
  $jmeno = $_POST['jmeno'];
  $varianta = $_POST['varianta'];
  $barva = $_POST['barva'];
  $komentar = $_POST['komentar'];
    
  if ($jmeno=="") {
        echo "<h2>Nebylo vyplněno pole JMÉNO!</h2>"; 
      }
  elseif ($varianta=="---") {
        echo "<h2>Nebylo vyplněno pole VARIANTA!</h2>";
      }
  elseif ($barva=="---") {
        echo "<h2>Nebylo vyplněno pole BARVA!</h2>";
      }
  else {
    $odeslani = mail("webmaster@mkgips.cz", "Logo JMR TRIO s.r.o.", 
        "\nJméno: $jmeno\nVarianta: $varianta\nBarva: $barva\nKomentář: $komentar");
    if ($odeslani) {
         echo "<h3>Formulář byl úspěšně odeslán.</h3>";
      }
   }
}
?>


<form action="" method="post">
                
                
      <table>
        <tr><td>Tvé jméno:</td><td><input type="text" name="jmeno" size="30"></td></tr>
        
        <tr height="30px"></tr>
        
        <tr><td>Varianta loga:</td><td><select size="1" name="varianta">
                            <option selected>---</option>
                            <option>Varianta 1</option>
                            <option>Varianta 2</option>
                            <option>Varianta 3</option>
                            <option>Varianta 4</option>
                            </select></td></tr>
        
        <tr><td>Barevnost:</td><td><select size="1" name="barva">
                            <option selected>---</option>
                            <option>Barevnost "A"</option>
                            <option>Barevnost "B"</option>
                            <option>Barevnost "C"</option>
                            <option>Barevnost "D"</option>
                            </select></td></tr>
                                  
        <tr height="30px"></tr>
        
        <tr><td>Tady to můžeš<br />okomentovat:</td><td><textarea rows="6" name="komentar" cols="38"></textarea></td></tr>
        <tr><td></td><td><input type="submit" name="odeslani" value="Odeslat">&nbsp;&nbsp;&nbsp;
                        <input type="reset" value="Vyčistit formulář" name="vycistit"></td></tr>
    </table>
</form>
</div>


Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Koudis
Profil *
ja bych to udělal přes AJAX .. je to rychlé a celkem elegantní .. když si třídy v JS napíšete přehladně dá se to velice snadno udržovat a má to větší možnosti :)
Alphard
Profil
Koudis:
ja bych to udělal přes AJAX .. je to rychlé a celkem elegantní
Stejně musí to musí být funkční i bez javascriptu, takže tohle není řešení.

když si třídy v JS napíšete přehladně dá se to velice snadno udržovat a má to větší možnosti
Tohle radíte začátečníkovi, který má problémy poskládat pár podmínek dohromady...

BunnyBugs6:
Formulář přesuňte do větve podmínky, která ověřuje správnost vyplnění. Pak se nebude zobrazovat po správném odeslání.
Pro předvyplnění hodnot je potřeba využít ty odeslané a upravit formulář, tj. místo
 <option selected>---</option>

dát třeba
<option selected>Varianta 3</option>

předvyplnit textareu apod.
<textarea rows="6" name="komentar" cols="38"><?php if(isset($_POST['komentar'])) echo $_POST['komentar']; ?></textarea>
Koudis
Profil
.. jo no .. to mě nenapadlo :) ... ale aspon ted zná slovo AJAX, jsem zvyklí se pohybova mezi lidmi kteří celí život nedělají nic jiného než programuj programuj atd .. takže mě netrkne že taky existují lidé kteří začínají s programováním/scriptováním ...

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: