Formulier probleem

Status
Niet open voor verdere reacties.

Gregg

Gebruiker
Lid geworden
8 okt 2008
Berichten
68
Hallo iedereen,
ik heb problemen met mijn formulier..
er zit een error check in om te zien of het een geldig email adres is.
Alles werkt voor de rest prima, alleen als ik geen geldig email adres ingeef zegt hij

Notice: Undefined index: 1 in *** on line 189

Notice: Undefined variable: valid in *** on line 195


Kan er mij iemand zeggen waarom hij die fout geeft?
De foutboodschap zelf (gelieve alle gegevens correct in te geven), geeft hij ook.

PHP:
<?php

include('connect.php'); 
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$voornaam = $_POST['voornaam'];
$naam = $_POST['naam'];
$email = $_POST['email'];
$sub = $_POST['sub'];

function checkmail($mail){ 
    $email_host = explode("@", $mail); 
    $email_host = $email_host['1'];
    $email_resolved = gethostbyname($email_host); 

    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
        $valid = 1; 

    return $valid; 
};

if($sub == 'inschrijven'){
	if($voornaam != '' AND $naam != '' AND $email != '' AND checkmail($email) == 1){
		$query ="INSERT INTO `nieuwsbrief` (`voornaam`, `naam`, `email`) VALUES ('$voornaam', '$naam', '$email')";
		mysql_query($query) or die (mysql_error());
		echo '<div class="phpsuccess"><center>Dank u voor uw inschrijving!</center></div>';
		//include ("nieuwsbrief.php");
	}else{
		echo '<div class="phperror"><center>Gelieve alle gegevens correct in te vullen!</center></div>';
		//include ("nieuwsbrief.php");
	};
	
}elseif($sub == 'uitschrijven'){
	if($voornaam != '' AND $naam != '' AND $email != '' AND checkmail($email) == 1){
		$query ="DELETE FROM nieuwsbrief WHERE voornaam = '$voornaam' AND naam = '$naam' AND email = '$email'; "; 
		mysql_query($query) or die (mysql_error());
		echo '<h6><center>U bent succesvol uitgeschreven!</center></h6>';
		//include ("nieuwsbrief.php");
	}else{
		
		echo '<h7><center>Gelieve alle gegevens correct in te vullen!</center></h7>';
		//include ("nieuwsbrief.php");
	};
};
};
?>
 
Je returnt alleen bij een if, niet bij een else. Het is overigens gebruikelijker om return TRUE en return FALSE te gebruiken.

PHP:
function isA($var){

 if($var == 'a'){

    return TRUE;

  }else{

   return FALSE;

  }
}

Verder is dit wellicht een interessant artikel voor je:
http://wiki.phpfreakz.nl/Overzichtelijk_programmeren
 
Nu blijft die de foutmelding geven...
ben vrij nieuw in PHP en probeer zo veel mogelijk uit mijn fouten te leren.. vandaar al mijn vragen hier. Hopelijk is dit geen probleem?

Heb ook de code een beetje gesorteerd.

PHP:
<?php
include('connect.php'); 
if($_SERVER['REQUEST_METHOD'] == 'POST'){
	$voornaam = $_POST['voornaam'];
	$naam = $_POST['naam'];
	$email = $_POST['email'];
	$sub = $_POST['sub'];

			function checkmail($mail){ 
    			$email_host = explode("@", $mail); 
    			$email_host = TRUE;
   				$email_resolved = gethostbyname($email_host); 

    				if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
    				return TRUE; 
			};

	if($sub == 'inschrijven'){
		if($voornaam != '' AND $naam != '' AND $email != '' AND checkmail($email) == TRUE){
			$query ="INSERT INTO `nieuwsbrief` (`voornaam`, `naam`, `email`) VALUES ('$voornaam', '$naam', '$email')";
			mysql_query($query) or die (mysql_error());
			echo '<div class="phpsuccess"><center>Dank u voor uw inschrijving!</center></div>';
			//include ("nieuwsbrief.php");
		}else{
			echo '<div class="phperror"><center>Gelieve alle gegevens correct in te vullen!</center></div>';
			//include ("nieuwsbrief.php");
	};
	
	}elseif($sub == 'uitschrijven'){
		if($voornaam != '' AND $naam != '' AND $email != '' AND checkmail($email) == TRUE){
			$query ="DELETE FROM nieuwsbrief WHERE voornaam = '$voornaam' AND naam = '$naam' AND email = '$email'; "; 
			mysql_query($query) or die (mysql_error());
			echo '<div class="phpsuccess"><center>U bent succesvol uitgeschreven!</center></div>';
			//include ("nieuwsbrief.php");
		}else{
		
			echo '<div class="phperror"><center>Gelieve alle gegevens correct in te vullen!</center></div>';
			//include ("nieuwsbrief.php");
		};
	};
};
?>
 
6u zonder reactie is heus nog geen dood topic.. sommige mensen werken ook overdag.

In elk geval kan ik je foutmelding niet linken aan het stuk code dat je hier post:
Notice: Undefined variable: valid in *** on line 195
dat wil zeggen dat in de file *** (staan die daar echt, of heb jij er *** van gemaakt?) op rond lijn 195 de variabele met naam valid ongekend is.
In de code die je hier post staat nergens een variabele valid, dus daar ligt het vermoedelijk niet echt aan..

Wat andere tips: Om te controleren of een variabele leeg is, kan je beter gebruik maken van trim($var), zo wordt witruimte ook genegeerd. (is_empty() kan ook helpen).

Ik zou ook je if-structuur wijzigen, aangezien je nu tweemaal de code hebt staan om je invoer na te kijken en dezelfde foutmelding geeft. Ook is het meestal niet nodig om blockstatements met een puntkomma af te sluiten.
PHP:
if(trim($voornaam) != '' && trim($naam) != '' && trim($email) != '' && checkmail($email) == true){
        if($sub == 'inschrijven'){
            $query ="INSERT INTO `nieuwsbrief` (`voornaam`, `naam`, `email`) VALUES ('$voornaam', '$naam', '$email')";
            mysql_query($query) or die (mysql_error());
            echo '<div class="phpsuccess"><center>Dank u voor uw inschrijving!</center></div>';
        }elseif($sub == 'uitschrijven'){
            $query ="DELETE FROM nieuwsbrief WHERE voornaam = '$voornaam' AND naam = '$naam' AND email = '$email'; "; 
            mysql_query($query) or die (mysql_error());
            echo '<div class="phpsuccess"><center>U bent succesvol uitgeschreven!</center></div>';
        }
}else{
        echo '<div class="phperror"><center>Gelieve alle gegevens correct in te vullen!</center></div>';
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan