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?
Als je nou eens start met het eruitslopen van het kopiëren van variabelen ($whatever = $_POST['whatever']) dan:

- maak je je probleemgebied al een stuk kleiner
- wordt je code een stuk beter leesbaar
- zie je direct waar de waarde van een variabele vandaan zou moeten komen
Hier volgt een gestripte versie van mijn script, met excuses aan Aar, dat ik haar opmerking over code niet
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
$foutloos = "";
if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaamFt = $achternaamFt = $adresFt = $plaatsFt = $postcodeFt = "";
$landFt = $telFt = $netadresFt = $aanhefFt1 = $aanhefFt2 = "";
if ($_POST['voornaam'] == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($_POST['achternaam'] == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
$foutloos = $voornaamFt.$achternaamFt.$adresFt.$plaatsFt.$postcodeFt.$landFt.$telFt.$netadresFt.$aanhefFt1.$aanhefFt2;
} else {
$voornaamFt = $achternaamFt = $adresFt = $plaatsFt = $postcodeFt = "";
$landFt = $telFt = $netadresFt = $aanhefFt1 = $aanhefFt2 = "";
$_POST['voornaam'] = $_POST['achternaam'] = $_POST['volgorde'] = $_POST['aanhef'] = $_POST['aanhef1'] = $_POST['poralia'] = $_POST['adres'] = $_POST['adres1'] = "";
$_POST['plaats'] = $_POST['plaats1'] = $_POST['postcode'] = $_POST['land'] = $_POST['huistel'] = $_POST['zaktel'] = $_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"/>

<style type="text/css">
.error {color: #FF0000;}
</style>

</head>

<body>
<form name="personalia" method="post" action="completer.php">
<table border="1" width="60%">
<tr>
<td width="35%">Persona nomo<br/><font size="2">a&#365; nur &#285;ia unua litero:</font></td>
<td><input type="text" name="voornaam" value="<?php echo $_POST['voornaam'];?>" size="30"/>
<span class="error">* <?php echo $voornaamFt;?></span></td>
</tr>
<tr>
<td>Familia nomo: </td>
<td><input type="text" name="achternaam" value="<?php echo $_POST['achternaam'];?>" size="30"/>
<span class="error">* <?php echo $achternaamFt;?></span></td>
</tr>
</table>
<p></p>
<input type="reset" value="Rekomencigu" />&nbsp;&nbsp;&nbsp;<input type="submit" value="Sendu" />
</form>

<?php
if (isset($_POST['submit'])) {
if ($foutloos == "") {
if ($_POST['volgorde'] == "0") {
$naam = $_POST['voornaam']." ".$_POST['achternaam'];
} else {
$naam = $_POST['achternaam']." ".$_POST['voornaam'];
};
};
}
?>

<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"/>
<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."/>
</form>

</body>
</html>
Je hebt twee formulieren.
Het eerste form gaat naar jouw site.
De tweede gaat naar paypal.

Jij hebt:
if (isset($_POST['submit'])) {

En $_POST['submit'] bestaat alleen als het tweede formulier is gepost.
Dan zijn er twee oplossingen: Ik moet de twee formulieren integreren -
Ik weet niet, of het door PayPal geleverde formulier dat toestaat -
of er moet een methode zijn om de twee formulieren apart af te handelen.
Geef gewoon je eerste submit ook een name="...".
Wat is 'gewoon'. Ik heb beide formulieren een naam gegeven en dan het eerste formulier, leeg, opgestuurd. Er verschijnt geen foutmelding.
Hier de formulierelementen waarom het gaat:

<form name="personalia" method="post" action="completer.php"">
<input type="submit" onclick="document.forms['personalia'].submit();" value="La donita&#309;oj estas &#285;ustaj. Sendu ilin."/>

<form action="……" method="post" target="_top" name="betaal">
<input type="image" src="………" border="0" name="submit" onclick="document.forms['betaal'].submit()"/>


[size=xsmall]Toevoeging op 20/06/2015 21:11:58:[/size]

De inputknop voor 'submit' had zelf niet de naam 'submit' en werd dus niet door het php-script herkend en doorgegeven aan het HTML-formulier! Ik werk de zaak nu bij en vermoed, dat alles nu in orde is.
Iedereen bedankt!

[size=xsmall]Toevoeging op 21/06/2015 12:59:39:[/size]

Een laatste - hoop ik - probleempje kan ik nog niet oplossen.
Ik heb een textarea in het invulformulier en wil dat met de ingevulde tekst reproduceren, als - vanwege andere fout ingevulde velden het formulier bij de gebruiker terugkomt. Daarvoor heb ik gebruikt:
<textarea name="poralia" value="<?php echo $_POST['poralia'];?>" cols="30" rows="5" wrap="hard"></textarea>

De variabele $_POST['poralia'] is wel ontvangen door het formulier, maar de textarea blijft leeg.

[size=xsmall]Toevoeging op 21/06/2015 13:43:54:[/size]

Een verbetering is de code
<textarea name="poralia" cols="30" rows="5" wrap="hard">
		<?php (isset($_POST['poralia'])? $_POST['poralia']: '') ?></textarea>
,
maar het werkt nog niet.

[size=xsmall]Toevoeging op 21/06/2015 13:50:15:[/size]

Maar nu is het opgelost:
<textarea name="poralia" cols="30" rows="5" wrap="hard">
		<?php echo $var = isset($_POST['poralia']) ? $_POST['poralia'] : ''; ?>
		</textarea>

Reageren