Waarom zie ik de eerste "echo" vanwege leeg veld niet?
Zoals Ward al aangaf: Zet de errors aan.
- Aar - op 18/06/2015 17:56:49:
AYYY.
"AYYY en geen "AYYY"
"
- je escaped $_POST['voornaam'] niet
:*(
- geen sluitingsquote voor value="...- je escaped $_POST['voornaam'] niet
:*(
Als ik het volgende script gebruik (ik vermeld steeds maar twee variabelen):
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaam = $achternaam = "";
}
?>
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaam = $achternaam = "";
}
?>
komt er, als het aanmeldformulier voor het eerst verschijnt: "Notice: Undefined variable: voornaamFt", vanwege
<input type="text" name="voornaam" value="" size="30"/>
<span class="error">* </span>
in het formulier. Idem voor achternaamFt.
Als ik het script uitbreid met twee regels om de foutmeldingen op leeg te zetten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaamFt = $achternaamFt = "";
$voornaam = $achternaam = "";
}
?>
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaamFt = $achternaamFt = "";
$voornaam = $achternaam = "";
}
?>
verschijnt het aanmeldformulier zonder Notice, maar als ik het dan leeg verzend, komt er geen echo van voornaamFt en achternaamFt.
Gewijzigd op 19/06/2015 15:20:12 door Johan Derks
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php // $voornaamFt bestaat NIET
if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
// $voornaamFt bestaat NIET
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
else // $voornaamFt bestaat NIET
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
// $achternaamFt bestaat NIET
$voornaam = $achternaam = "";
}
?>
if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
// $voornaamFt bestaat NIET
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
else // $voornaamFt bestaat NIET
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
// $achternaamFt bestaat NIET
$voornaam = $achternaam = "";
}
?>
Simpele oplossing:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php $voornaamFt = '';
$achternaamFt = '';
if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaam = $achternaam = "";
}
?>
$achternaamFt = '';
if (isset($_POST['submit'])) {
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
if ($voornaam == "") {$voornaamFt = "Vi ne plenigis vian personan nomon!";};
if ($achternaam == "") {$achternaamFt = "Vi ne plenigis vian familian nomon!";};
} else {
$voornaam = $achternaam = "";
}
?>
Gewijzigd op 19/06/2015 15:28:03 door - SanThe -
Code (php)
, weliswaar met de voorwaarde if "(isset($_POST['submit']))", voor het formulier staat en dat het misschien pas "gefired" moet worden bij "submit".
Gewijzigd op 19/06/2015 15:29:32 door Johan Derks
Zie ook mijn aanvulling vorige post.
Toevoeging op 19/06/2015 15:40:52:
Ik heb error_reporting(E_ALL | E_STRICT); aan staan.
- 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
Gewijzigd op 19/06/2015 16:03:47 door Thomas van den Heuvel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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'] = "";
}
?>
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ŭ nur ĝia unua litero:</font></td>
<td><input type="text" name="voornaam" value="" size="30"/>
<span class="error">* </span></td>
</tr>
<tr>
<td>Familia nomo: </td>
<td><input type="text" name="achternaam" value="" size="30"/>
<span class="error">* </span></td>
</tr>
</table>
<p></p>
<input type="reset" value="Rekomencigu" /> <input type="submit" value="Sendu" />
</form>
Code (php)
<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>
Gewijzigd op 21/06/2015 13:04:42 door Johan Derks
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.
Gewijzigd op 19/06/2015 17:00:49 door - SanThe -
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.
Gewijzigd op 19/06/2015 21:17:54 door Johan Derks
Geef gewoon je eerste submit ook een name="...".
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ĵoj estas ĝustaj. Sendu ilin."/>
<form action="……" method="post" target="_top" name="betaal">
<input type="image" src="………" border="0" name="submit" onclick="document.forms['betaal'].submit()"/>
Toevoeging op 20/06/2015 21:11:58:
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!
Toevoeging op 21/06/2015 12:59:39:
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:
Code (php)
1
<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.
Toevoeging op 21/06/2015 13:43:54:
Een verbetering is de code
Code (php)
1
2
2
<textarea name="poralia" cols="30" rows="5" wrap="hard">
<?php (isset($_POST['poralia'])? $_POST['poralia']: '') ?></textarea>
<?php (isset($_POST['poralia'])? $_POST['poralia']: '') ?></textarea>
maar het werkt nog niet.
Toevoeging op 21/06/2015 13:50:15:
Maar nu is het opgelost:
Code (php)
Gewijzigd op 21/06/2015 13:42:18 door Johan Derks