Autor Zpráva
Filips
Profil
Ahoj, chtěl bych se zeptat jak docílím toho, že se mi vypíše více chyb najednou. Zatim mám ten formulář začatý. Takže pokud vyplním třeba špatně jméno tak se vyhodí že jsem zadal špatně jméno. Pokud zadám špatně více údajů, tak se vždy vypíše to co je výše (v tomto případě jméno). Pokud to opravím tak se vypíše třeba příjmení atp. Jene já chci, že když dám odeslat, tak se tam vyhodí: Zadali jste špatně: Jméno, Příjmení, Adresu (Třeba). Snad jste mne pochopili :-)
Tady je kód:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Registrační formulář</title>
</head>
<body>
<h1>Registrační formulář</h1>

<?php
$header = "From: " . $email."\nContent-Type: text/plain; charset=utf-8\n";
if(isset($_POST['jmeno'])) $jmeno = $_POST['jmeno'];
if(isset($_POST['prijmeni'])) $prijmeni = $_POST['prijmeni'];
if(isset($_POST['prezdivka'])) $prezdivka = $_POST['prezdivka'];
if(isset($_POST['narozeni'])) $narozeni = $_POST['narozeni'];
if(isset($_POST['ulice'])) $ulice = $_POST['ulice'];
if(isset($_POST['mesto'])) $mesto = $_POST['mesto'];
if(isset($_POST['pcs'])) $pcs = $_POST['pcs'];
if(isset($_POST['tel'])) $tel = $_POST['tel'];
if(isset($_POST['email'])) $email = $_POST['email'];
if(isset($_POST['icq'])) $icq = $_POST['icq'];
if(isset($_POST['spam'])) $spam = $_POST['spam'];
if(isset($_POST['zprava'])) $zprava = $_POST['zprava'];


if ( $email!="" and $zprava!="" and $spam=="5" ) {
  if(strlen($icq)==9){//kontrola na delku cisla icq musi byt 9 znaku, ale ne kazdy ma icq takze je to cele blbost kontrolovat to na icq
  if(strlen($jmeno)>=3){
  if(strlen($prijmeni)>=3){
    $zprava="Jméno: ".$jmeno."\nPříjmení: ".$prijmeni."\nPřezdívka: ".$prezdivka."\nDtaum narození: ".$narozeni."\n\nUlice: ".$ulice."\nMěsto: ".$mesto."\nPSČ: ".$pcs."\n\nTelefon: ".$tel."\nicq: ".$icq."\n\n".$zprava;

    if(mail("neco@neco.cz", Registrace, $zprava, $header )){
      echo "<p><strong>Registrační formulář byl úspěšně odeslán</strong>.</p>";
    }
  }else{
    echo "Příliš krátké příjmení";
  }
  
  }else{
    echo "Špatně zadané jméno";
  }
  
  }else{
    echo "Špatně zadané ICQ!";
  }

  
}else{
  echo "<p>Váš formulář se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo jste zadali špatně odpověď na kontrolní otázku!</p>";
}

?>

</body>
</html>


Str4wberry
Profil
Odpovídám Filipsovi:
Jednoduše by šlo použít několik podmínek při neúspěšném odeslání:
if (odeslano)  {
// mail
}
else  {
  if (empty|strlen($_POST['jmeno']))	{
    echo "<p>Příliš krátké příjmení.</p>"; 
  }
  if ()  {
  }
}
A tak dále… Snad je to srozumitelné.
Filips
Profil
Str4wberry
Srozumitelné určitě, ale jsem trochu víc lama a snažím se na tomhle naučit :-)
Takže prosím ještě o radu.

Tu podmínku odeslano vložím kam? To mě moc není jasné ještě. Zruším to if (strlen($icq.... a dám to místo toho nebo jak? Kdybys byl tak hodný a zapasoval mě to do toho mého kódu. Děkuji moc
Str4wberry
Profil
Odpovídám Filipsovi:
„Tu podmínku odeslano vložím kam?“
Zvolil jsem špatný název, což Tě zřejmě zmátlo. Místo toho tam bude kontrola údajů — tedy zřejmě:
$email!="" and $zprava!="" and $spam=="5"
Když bude úspěšná, bude se odesílat mail. Když úspěšná nebude, přejde se na vypisování chyb.
Filips
Profil
Str4wberry
Tak bohužel, ale nefunguje mi to... nevím teda jestli jsem tam nedal něco špatně.

if ( $email!="" and $zprava!="" and $spam=="5" ) {

  if(strlen($jmeno)>=3){

    $zprava="Jméno: ".$jmeno."\nPříjmení: ".$prijmeni."\nPřezdívka: ".$prezdivka."\nDtaum narození: ".$narozeni."\n\nUlice: ".$ulice."\nMěsto: ".$mesto."\nPSČ: ".$pcs."\n\nTelefon: ".$tel."\nicq: ".$icq."\n\n".$zprava;

    if(mail("fvymola@seznam.cz", Registrace, $zprava, $header )){
      echo "<p><strong>Registrační formulář byl úspěšně odeslán</strong>.</p>";
    }
  
 else  {
  if (empty|strlen($_POST['jmeno']))	{
    echo "<p>Příliš krátké příjmení.</p>"; 
  }

  }
}
Str4wberry
Profil
Odpovídám Filipsovi:
Tak bohužel, ale nefunguje mi to
To je jasné. Ani to fungovat nemohlo. Já psal pseudokód; ne již hotové řešení. Všimni si řádky:
if (empty|strlen($_POST['jmeno']))
Samozřejmě použiješ buď empty nebo („|“) strlen (strlen($_POST['jmeno'])>=3).
Filips
Profil
No i tak, stejně to nefunguje. A navíc jsem ani nepochopil jak by to mělo fungovat :-)
Jack Finger
Profil
Filips
příklad:

if($_GET['action'] == 'new'){
  $error = '';
  if(empty($_POST['jmeno'])){
    $error .= 'vyplň jméno<br>';
  }
  if(empty($_POST['prijmeni'])){
    $error .= 'vyplň příjmení<br>';
  }
  if(empty($error)){
    // zpracování ...
  }
}

if(!empty($error)){
  // zpracování chyb, např:
  echo '
    <font style="color:red;">
      Nastaly následující chyby:<br>
      '.$error.'
    </font>
  ';
}

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