Jak sprawdzić czy textarea jest puste?


(Afilatepp) #1

Witam serdecznie. Dodam że jestem początkującym webmasterem :) Mam formularz kontaktowy. Jeśli któreś z pól jest puste wyświetla użytkownikowi komunikat . Niestety nie wyświetla komunikatu dla pola textarea, co więcej, po wypełnieniu pól kontaktowych wysyła pustą wiadomość. Proszę o pomoc. 

 

Oto mój kod php i html :

<?
if (isset($_POST['submitted'])) // sprawdzenie czy formularz został wysłany
{
    $errors=array(); // inicjacja tablicy błędów
    if(empty($_POST['imie']))
    {
         $errors[]='Pole imie jest puste';
    }
    else
    {
        $login=trim($_POST['imie']);
    }
    
   if(empty($_POST['email']))
   {
       $errors[]='Pole email jest puste';
   }
   else
   {
       $email=trim($_POST['email']);
   }
if(empty($_POST['comments']))
{
    $errors[]='Wpisz treść wiadomości';
}
 else {
    $comments=trim($_POST['comments']);
}
   if(empty($errors))
   {
 $first_name=$_POST['imie'];
$to='afilatepp@gmail.com';
$subject = 'PRACAPRZEZINTERNET.INFO';
$message=$_POST['comments'];
$headers = 'From:'.$_POST['email'] . "\r\n" .
    'Reply-To: '.$_POST['email'] . "\r\n";

$mailik=mail($to, $subject, $message, $headers, $first_name);

       if($mailik)
             {
                 echo'<h1 class="green">Dziękujemy!</h1>'
                 .'<p class="green">Twoja wiadomość została pomyślnie wysłana!</p>';
             }
       
            else {
                   echo '<h1>Błąd systemu</h1>'
                . 'Wiadomość nie wysłana z powodu błędu systemu. Przepraszamy za kłopot.';
            }
 } else { // Raportuj błędy.
	
		echo '<h1 class="error">Błąd!</h1>';
                echo '<p class="error">';
		foreach ($errors as $msg) { // Wyświetl komunikat o błędzie.
			echo " $msg<br />\n";
		}
		echo '</p><p class="error">Spróbuj jeszcze raz.</p><p><br /></p>';
		
	} // Koniec instrukcji if (empty($errors)).

} // Koniec głównej instrukcji warunkowej if(submitted).
?>

  

 

 

<b>treść wiadomości</b>
                    
<textarea name="comments" cols="50" rows="20">
               
 </textarea>

(Pablo_Wawa) #2

Teoretycznie pole textarea nie jest puste, ponieważ zawiera on jedną pusta linijkę (znak nowego wiersza) - sugeruję użyć funkcji trim na wartości pola comments (nie tylko jego, ale i innych) - czyli taki warunek

if(empty(trim($_POST['comments'])))

a wcześniej warto sprawdzić, czy to pole (i nie tylko ono) zawiera jakąś wartość funkcją isset.


(Afilatepp) #3

Zastosowałem się do porad, dziękuję bardzo za pomoc ! wszystko działa :slight_smile: