Autor Zpráva
gooner77
Profil
dobrý den, mám problém se skriptem pro ověření zda uživatel zadal do formuláře nějaké údaje a by se mohl zpracovat a odeslat. Mělo by jít o odesílání emailů.

Nevíte někdo co s tím? =(

Přikládám ten skript:
<form action="#" method="post">
    <table>
        <tr>
           <td><strong>Váš email:</strong></td>
           <td><input type="text" name="email_uzivatele" value="<?php if(isset($_POST["email_uzivatele"])){echo $_POST["email_uzivatele"];}?>" size="25" tabindex="1" /></td>    
        </tr>
        <tr>
           <td><strong>Mobil:</strong></td>
           <td><input type="text" name="mobil" value="<?php if(isset($_POST["mobil"])){echo $_POST["mobil"];}?>" size="25" tabindex="1" /></td>    
        </tr>
        <tr>
           <td><strong>Předmět:</strong></td>
           <td><input type="text" name="predmet" value="<?php if(isset($_POST["predmet"])){echo $_POST["predmet"];}?>" size="25" tabindex="1" /></td>    
        </tr>
        <tr>
           <td><strong>Text zprávy:</strong></td>
           <td><textarea name="zpráva" ><?php if(isset($_POST["zprava"])){echo $_POST["zpráva"];}?></textarea></td>
        </tr>
        <tr>
           <td><input type="submit" name="odeslat" value="Odeslat"></td>
        </tr>
    </table>
</form>
    <?php
    if(isset($_POST['submit'])) {
      if($email_uzivatele=="")
      {
        echo'Nebyl vyplněn Váš e-mail!';
      }
      else if($mobil=="")
      {
        echo'Nebyl vyplněn Váš mobil!';
      }
      else if($predmet=="")
      {
        echo'Nebyl vyplněn předmět!';
      }
      else if($zprava=="")
      {
        echo'Nebyla vyplněna zpráva!';
      }
    }
    ?>
jenikkozak
Profil
Nejčastější potíže s PHP (FAQ) » Nefungují proměnné z formuláře nebo z URL (vypnuté register globals)
Týká se to proměnných $email_uzivatele (řádek 30), $mobil, $predmet a $zprava.
gooner77
Profil
místo toho tam má být toto?

$mobil = $_POST["mobil"]

jestli sem to pochopil dobře.
jenikkozak
Profil
Ano. Nebo můžete rovnou otestovat if($_POST["email_uzivatele"]=="")
Dále máte chybu na řádku 17: Testujete existenci $_POST["zprava"], ale vypisujete položku pole $_POST["zpráva"].
gooner77
Profil
Tak sem to poupravil jak si řek. Jenomže když do nějakého políčka nic nevyplním tak skript funguje dál a nevypíše to třeba "Nebyl vyplněn Váš e-mail!".
Alphard
Profil
gooner77 [#5]:
Jaká je aktuální verze kódu?
gooner77
Profil
<form action="#" method="POST">
                <table>
                    <tr>
                       <td><strong>Váš email:</strong></td>
                       <td><input type="text" name="email_uzivatele" value="<?php if(isset($_POST["email_uzivatele"])){echo $_POST["email_uzivatele"];}?>" size="25" tabindex="1" /></td>    
                    </tr>
                    <tr>
                       <td><strong>Mobil:</strong></td>
                       <td><input type="text" name="mobil" value="<?php if(isset($_POST["mobil"])){echo $_POST["mobil"];}?>" size="25" tabindex="1" /></td>    
                    </tr>
                    <tr>
                       <td><strong>Předmět:</strong></td>
                       <td><input type="text" name="predmet" value="<?php if(isset($_POST["predmet"])){echo $_POST["predmet"];}?>" size="25" tabindex="1" /></td>    
                    </tr>
                    <tr>
                       <td><strong>Text zprávy:</strong></td>
                       <td><textarea name="zprava" ><?php if(isset($_POST["zprava"])){echo $_POST["zprava"];}?></textarea></td>
                    </tr>
                    <tr>
                       <td><input type="hidden" name="robot"></td>    
                    </tr>
                    <tr>
                       <td><input type="submit" name="odeslat" value="Odeslat"></td>
                    </tr>
                </table>
            </form>
                <?php
                if(isset($_POST['submit'])) {
                  if($_POST["email_uzivatele"]=="")
                  {
                    echo'Nebyl vyplněn Váš e-mail!';
                  }
                  else if($_POST["mobil"]=="")
                  {
                    echo'Nebyl vyplněn Váš mobil!';
                  }
                  else if($_POST["predmet"]=="")
                  {
                    echo'Nebyl vyplněn předmět!';
                  }
                  else if($_POST["zprava"]=="")
                  {
                    echo'Nebyla vyplněna zpráva!';
                  }
                  else
                      {
                       $email_uzivatele = $_POST["email_uzivatele"];
                       $mobil = $_POST["mobil"];
                       $predmet = $_POST["predmet"];
                       $zprava = $_POST["zprava"];
                       $robot = $_POST["robot"];
                           if (!strlen($robot) > 0) 
                               {

                               $sendmail = mail("huttner.tomas@gmail.com", $predmet, $mobil, $zprava, "From: ".$email_uzivatele);
                                   if ($sendmail) 
                                       {
                                           echo "Email by úspěšně odeslán!";
                                       }
                                           else 
                                             {
                                                 echo "Nastala chyby email nebyl odeslán prosím opakujte!";
                                             }

                               }

                      }
                }
                ?>
Alphard
Profil
Tahle verze opravdu nefunguje? Nejsou tam třeba nějaké mezery? Vypadá to funkčně jestli jsem nepřehlédl nějakou závorku. Obecná rada je vypsat si celé pole $_POST, podívat se, co obsahuje a hledat problém.
gooner77
Profil
Když sem schválně nenapsal předmět a odeslal sem tak mi to nevypsalo hlášku, že předmět nebyl vyplněn. Už nevím co s tím =(
Alphard
Profil
$_POST['submit'] neexistuje, script nepokračuje dál, v [#5] lžete a já 5 minut hledám na úplně blbém místě :-) Naučte se debugovat.

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:

0