Ik heb een geïntegreerd met php aanmeldformulier "compleet.php" in html gemaakt, met de gebruikelijke controles op het invullen van de velden. Hier is de structuur van het script:
<?php
if (isset($_POST['submit'])) {
if ($voornaam == "") {
echo "fout1!<br/>";
} else if ($achternaam == "") {
echo "fout2!<br/>";
} else if ($adres == "") {
echo "fout3!<br/>";
} else if ($netadres == "") {
echo "fout4!<br/>";
} else if (($aanhef = "alia") && ($aanhef1 = "")) {
echo "fout5!<br/>";
} else {bewerking van ingevoerde gegevens en mail naar mij}
?>
Dan volgt het formulier in HTML met bovenstaande velden, te verzenden naar compleet.php
Als ik niets invul in het formulier en meteen naar compleet.php post, krijg ik vermelding van fout4, terwijl ik volgens mij vermelding van fout 1 zou moeten krijgen, want $voornaam == "".
Ik ben geen beginneling, maar gebruik php-html voor mijn taal Esperanto.
Kan iemand mij alsjeblieft helpen?
$voornaam is ingevuld (of niet, dan blijft het leeg) in het html-gedeelte van het script.
Maar waar komt die variabele dan vandaan? Waar maak je die aan?
html-gedeelte (achter het php-gedeelte, dat binnen een if-statement staat; zie het al gepubliceerde gedeelte) is:


<form name="personalia" method="post" action="compleet.php">            
<table width="70%">
	<tr>
		<td width="15%">Persona nomo <font size="-4">a&#365; nur ties unua litero</font>: </td>
		<td colspan="2"><input type="text" name="voornaam" /></td>
	</tr>
	<tr>
		<td>Familia nomo: </td>
		<td colspan="2"><input type="text" name="achternaam" /></td>
	</tr>
	<tr>
		<td align="right"><font size="-2">Sur la koverto metu mian personan nomon</font></td> 
		<td align="center" width="10%"><select name="volgorde" size="2">
		<option value="0" selected="selected"> anta&#365;</option>
		<option value="1"> malanta&#365;</option>
		</select></td>
		<td width="10%"><font size="-2">la familia nomo.</font></td>
	</tr>
	<tr>
		<td valign="middle">Kiu titolo?</td>
		<td colspan="2"><select name="aanhef" size="5">
			<option value='0' selected="selected">neniu</option>
			<option value='f-ino'>f-ino</option>
			<option value='s-ino'>s-ino</option>
			<option value='s-ro'>s-ro</option>
			<option value='alia'>alia titolo &#265;i-sube</option>
		</select></td>
	</tr>
	<tr>
		<td align="right"><font size="-2">Alia kompleta titolo</font></td><td colspan="2"><input type="text" name="aanhef1" /></td>
	</tr>
	<tr>
		<td align="right"><font size="-2">Kompleta alnomo (plus titolo)<br/>por koverto al alia persono,<br/>se vi volas pagi por li/&#349;i: </font></td>
		<td colspan="2"><textarea name="alternativaricevantonomo" cols="30" rows="5" wrap="on"></textarea></td>
	</tr>
	<tr>
		<td>Adreso de abonanto: </td>
		<td ><input type="text" name="adres" /></td>
	</tr>
	<tr>
		<td>2a linio por adreso: </td>
		<td ><input type="text" name="adres1" /></td>
	</tr>
	<tr>
		<td>Loknomo: </td>
		<td ><input type="text" name="plaats" /></td>
	</tr>
	<tr>
		<td>2a linio por loknomo: </td>
		<td ><input type="text" name="plaats1" /></td>
	</tr>
	<tr>
		<td>Po&#349;tkodo: </td>
		<td ><input type="text" name="postcode" /></td>
	</tr>
	<tr>
		<td>Lando: </td>
		<td ><input type="text" name="land" /></td>
	</tr>
	<tr>
		<td>Numero de fiksa telefono: </td>
		<td ><input type="text" name="huistel" /></td>
	</tr>
	<tr>
		<td>Numero de po&#349;telefono: </td>
		<td ><input type="text" name="zaktel" /></td>
	</tr>
	<tr>
		<td>Retpo&#349;tadreso: </td>
		<td ><input type="text" name="netadres" /></td>
	</tr>
</table>	
<p></p>
<input type="reset" value="Rekomencigu" />&nbsp;&nbsp;&nbsp;<input type="submit" value="Sendu" /> 
</form> 


Het formulier heeft niks met $voornaam te maken.
Alle waarden zitten in het $_POST-array().

Op regel 11 staan toekenningen en geen vergelijkingen. (= is niet ==)
Ik heb de fout op regel 11 eruit gehaald. Bedankt.
Het klopt ook, dat alles al in het $_POST-array staat, want vooraan het php-gedeelte staat:
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;, met resultaat:
voornaam: achternaam: volgorde: 0 aanhef: 0 aanhef1: alternativaricevantonomo: adres: adres1: plaats: plaats1: postcode: land: huistel: zaktel: netadres: Vi ne plenigis vian retpo?tadreson!
Maar waar komt die melding "Vi ne plenigis vian retpo?tadreson!" (fout 4, zie mijn eerste bericht) vandaan?
In Firefox is de interface voor gebruik van Firebug veranderd. Ik snap niet meer, hoe ik daar de fout misschien mee op kan sporen. En ook niet hoe ik ijn cache (zo heet dat toch?) leeg moet maken.
Je maakt dus een $inhoud aan.
Maar gebruik je die?
Nee..

Wat je kan doen (al is het niet handig!):

<?php
foreach($_POST as $key => $value)
{
$$key = $value;
}
?>

Maar wat als $_POST['id'] en $_GET['id'] beide geset zijn?
Gewoon $_POST['voornaam'] gebruiken!
Ik heb je code gebruikt, met als reultaat: "Vi ne plenigis vian retpo?tadreson!"
Ik begrijp daar uit, dat netadres geset is, ook al heb ik het formulier niet verstuurd!
rarara !

[size=xsmall]Toevoeging op 17/06/2015 17:39:56:[/size]

Ik stuur nu maar het hele script op, met excuses voor het Esperanto !

<?php ini_set('display_errors',1);
error_reporting(E_ALL&~E_NOTICE);
foreach ($_POST as $key => $value)  {$$key = $value;};
$headers  = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
$voornaam = $_POST['voornaam'];
$achternaam	= $_POST['achternaam'];
$volgorde = $_POST['volgorde'];
$aanhef	= $_POST['aanhef'];
$alternativaricevantonomo = $_POST['alternativaricevantonomo'];
$adres	= $_POST['adres'];
$adres1	= $_POST['adres1'];
$plaats = $_POST['plaats'];
$plaats1 = $_POST['plaats1'];
$postcode = $_POST['postcode'];
$land = $_POST['land'];
$huistel = $_POST['huistel'];
$zaktel	= $_POST['zaktel'];
$netadres = $_POST['netadres'];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
  <title></title>
  <meta name="description" content=""/>
  <meta name="keywords" content=""/>
  <meta name="author" content="Unregistered User"/>
  <meta name="generator" content="AceHTML Freeware"/>
</head>
<body>
<?php
if (isset($_POST['submit'])) {
	if ($voornaam == "") {
		echo "Vi ne plenigis vian personan nomon!<br/>";
	} else if ($achternaam == "") {
		echo "Vi ne plenigis vian familian nomon!<br/>";
	} else if ($adres == "") {
		echo "Vi ne plenigis la unuan linion de la adreso!<br/>";
	} else if ($plaats == "") {
		echo "Vi ne plenigis la unuan linion de la loknomo!<br/>";
	} else if ($postcode == "") {
		echo "Vi ne plenigis la po&#349;tkodon!<br/>";
	} else if ($lando == "") {
		echo "Vi ne plenigis la landon!<br/>";
	} else if (($huistel == "") && ($zaktel == ""))
		echo "Donu almena&#365; unu telefonnumeron, po&#349;telefonan a&#365; fiksan!<br/>";
	} else if ($netadres == "") {
		echo "Vi ne plenigis vian retpo&#349;tadreson!<br/>"; 
	} else if (($aanhef == "alia") && ($aanhef1 == "")) {
		echo "Vi ne plenigis alian titolon!<br/>";
	} else if (($aanhef == "") && ($aanhef1 !== "")) {
		echo "Vi skribis alian titolon, sed tio ne estas konfirmita en la supra elektujo 'Kiu titolo?'!<br/>";
} else {
	if ($volgorde == "0") {
		$naam = $voornaam." ".$achternaam;
	} else {
		$naam = $achternaam." ".$voornaam;
	};
	if ($adres1 !== "") {
		$adres .= "<br/>".$adres1;
	};
	if ($plaats1 !== "") {
		$plaats .= "<br/>".$plaats1;
	};
	if ($aanhef == "alia") {
		$aanhef = $aanhef1;
	} else if ($aanhef == "0") {
		$aanhef="";
	};
	if (alternativaricevantonomo !== "") {
		$doel="pagas abonon por ".alternativaricevantonomo."<br/> al Balkana Verda Stelo.";
	} else {
		$doel="abonas sin al Balkana Verda Stelo.";
	};
	if (($huistel !== "") && ($poshtel !== "")) {
		$tel = $huistel." a&#365; ".$poshtel;
	} else {
		$tel = $huistel.$poshtel;
	};
	$enhavo = "Nomo: ".$naam.",<br/>".$doel."<br/>Adreso de abonanto: ".$adres."<br/>Loknomo".$plaats.",<br/>".
	"po&#349;tkodo: ".$poshtkodo."en ".$land."<br/>La eldonanto rajtas alvoki min per telefono ".$tel.".<br/>".
	"Miaj personaj donita&#309;oj estos nur uzataj por faciligi la komunikadon rilate al mia abono kaj pago<br/>".
	"kaj por plibonigi la enhavon de Balkana Verda Stelo.<br/>".
	"Mia retpo&#349tadreso estas ".$retposht."."; 

	$temo = "abonanonco de ".$naam;
	mail("[email protected]", $temo, $enhavo, $headers);
};
?>

<form name="personalia" method="post" action="compleet.php">            
<table width="70%">
	<tr>
		<td width="15%">Persona nomo <font size="-4">a&#365; nur ties unua litero</font>: </td>
		<td colspan="2"><input type="text" name="voornaam" /></td>
	</tr>
	<tr>
		<td>Familia nomo: </td>
		<td colspan="2"><input type="text" name="achternaam" /></td>
	</tr>
	<tr>
		<td align="right"><font size="-2">Sur la koverto metu mian personan nomon</font></td> 
		<td align="center" width="10%"><select name="volgorde" size="2">
		<option value="0" selected="selected"> anta&#365;</option>
		<option value="1"> malanta&#365;</option>
		</select></td>
		<td width="10%"><font size="-2">la familia nomo.</font></td>
	</tr>
	<tr>
		<td valign="middle">Kiu titolo?</td>
		<td colspan="2"><select name="aanhef" size="5">
			<option value='0' selected="selected">neniu</option>
			<option value='f-ino'>f-ino</option>
			<option value='s-ino'>s-ino</option>
			<option value='s-ro'>s-ro</option>
			<option value='alia'>alia titolo &#265;i-sube</option>
		</select></td>
	</tr>
	<tr>
		<td align="right"><font size="-2">Alia kompleta titolo</font></td><td colspan="2"><input type="text" name="aanhef1" /></td>
	</tr>
	<tr>
		<td align="right"><font size="-2">Kompleta alnomo (plus titolo)<br/>por koverto al alia persono,<br/>se vi volas pagi por li/&#349;i: </font></td>
		<td colspan="2"><textarea name="alternativaricevantonomo" cols="30" rows="5" wrap="on"></textarea></td>
	</tr>
	<tr>
		<td>Adreso de abonanto: </td>
		<td ><input type="text" name="adres" /></td>
	</tr>
	<tr>
		<td>2a linio por adreso: </td>
		<td ><input type="text" name="adres1" /></td>
	</tr>
	<tr>
		<td>Loknomo: </td>
		<td ><input type="text" name="plaats" /></td>
	</tr>
	<tr>
		<td>2a linio por loknomo: </td>
		<td ><input type="text" name="plaats1" /></td>
	</tr>
	<tr>
		<td>Po&#349;tkodo: </td>
		<td ><input type="text" name="postcode" /></td>
	</tr>
	<tr>
		<td>Lando: </td>
		<td ><input type="text" name="land" /></td>
	</tr>
	<tr>
		<td>Numero de fiksa telefono: </td>
		<td ><input type="text" name="huistel" /></td>
	</tr>
	<tr>
		<td>Numero de po&#349;telefono: </td>
		<td ><input type="text" name="zaktel" /></td>
	</tr>
	<tr>
		<td>Retpo&#349;tadreso: </td>
		<td ><input type="text" name="netadres" /></td>
	</tr>
</table>	
<p></p>
<input type="reset" value="Rekomencigu" />&nbsp;&nbsp;&nbsp;<input type="submit" value="Sendu" /> 
</form> 

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="MPASZA2MRSZDW"/>
<table>
	<tr>
		<td><input type="hidden" name="on0" value="Elektu"/>Elektu</td></tr>
	<tr>
		<td><select name="os0">
			<option value="1 abono por 3 jaroj"> 1 abono  por 3 jaroj: € 14,00 &#265;iujare*</option>
 			<option value="1 abono por 2 jaroj"> 1 abono  por 2 jaroj: € 15,00 &#265;iujare*</option>
			<option value="1 abono por 1 jaro">  1 abono  por 1 jaro : € 16,00 &#265;iujare*</option>
			<option value="2 abonoj por 2 jaroj">2 abonoj por 2 jaroj: € 29,00 &#265;iujare*</option>
			<option value="2 abonoj por 1 jaro"> 2 abonoj por 1 jaro : € 30,00 &#265;iujare*</option>
			<option value="3 abonoj por 2 jaroj">3 abonoj por 2 jaroj: € 42,00 &#265;iujare*</option>
			<option value="3 abonoj por 1 jaro"> 3 abonoj por 1 jaro : € 44,00 &#265;iujare*</option>
			</select></td>
		<td><font size="-3">* &#285;is malabonigo anta&#385; la fino de la elektita de vi periodo</font>
		</td>
	</tr>
</table>

<input type="hidden" name="currency_code" value="EUR"/>
<input type="image" src="https://www.paypalobjects.com/nl_NL/NL/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal, la sekura kaj kompleta maniero por pagi enrete."/>
<img alt="" border="0" src="https://www.paypalobjects.com/nl_NL/i/scr/pixel.gif" width="1" height="1"/>
</form>

</body>
</html>

Waarom al die variabelen aanmaken?
Waarom eerst allerlei variabelen aanmaken en daarna pas controleren of formulier is verzonden?
Je bedoelt: Waarom begin je niet met if (!isset($_POST['submit'])) (als die syntaxis goed is) en eerst het html-gedeelte plaatsen? Ja, dat is overzichtelijker voor de lezer.

Reageren