Waarom zie ik de eerste "echo" vanwege leeg veld niet?
Door
Johan Derks
op 17-06-2015 16:18
gewijzigd op 17-06-2015 16:33
2.800 views
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?
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.
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ŝtkodon!<br/>";
} else if ($lando == "") {
echo "Vi ne plenigis la landon!<br/>";
} else if (($huistel == "") && ($zaktel == ""))
echo "Donu almenaŭ unu telefonnumeron, poŝtelefonan aŭ fiksan!<br/>";
} else if ($netadres == "") {
echo "Vi ne plenigis vian retpoŝ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ŭ ".$poshtel;
} else {
$tel = $huistel.$poshtel;
};
$enhavo = "Nomo: ".$naam.",<br/>".$doel."<br/>Adreso de abonanto: ".$adres."<br/>Loknomo".$plaats.",<br/>".
"poŝtkodo: ".$poshtkodo."en ".$land."<br/>La eldonanto rajtas alvoki min per telefono ".$tel.".<br/>".
"Miaj personaj donitaĵ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ŝtadreso 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ŭ 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ŭ</option>
<option value="1"> malantaŭ</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 ĉ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/ŝ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ŝ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ŝtelefono: </td>
<td ><input type="text" name="zaktel" /></td>
</tr>
<tr>
<td>Retpoŝtadreso: </td>
<td ><input type="text" name="netadres" /></td>
</tr>
</table>
<p></p>
<input type="reset" value="Rekomencigu" /> <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 ĉiujare*</option>
<option value="1 abono por 2 jaroj"> 1 abono por 2 jaroj: € 15,00 ĉiujare*</option>
<option value="1 abono por 1 jaro"> 1 abono por 1 jaro : € 16,00 ĉiujare*</option>
<option value="2 abonoj por 2 jaroj">2 abonoj por 2 jaroj: € 29,00 ĉiujare*</option>
<option value="2 abonoj por 1 jaro"> 2 abonoj por 1 jaro : € 30,00 ĉiujare*</option>
<option value="3 abonoj por 2 jaroj">3 abonoj por 2 jaroj: € 42,00 ĉiujare*</option>
<option value="3 abonoj por 1 jaro"> 3 abonoj por 1 jaro : € 44,00 ĉiujare*</option>
</select></td>
<td><font size="-3">* ĝis malabonigo antaƁ 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>
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.