isset error werkt niet
ik ben net begonnen met HBO informatica en om te oefenen moet ik in xampp dus een formulier maken.
Dit formulier is al gedeeltelijk voorgeschreven dus ik hoef maar een beetje aan te vullen.
Nu stuit ik echter op het volgende probleem:
Wanneer ik na de index op "versturen" druk moet er aan de hand van ingevulde waarden dus aangegeven worden of het goed is gegaan of niet.
Dit is het script die de fout moet aangeven (of juist niet):
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
if (isset($_POST['submit'])) {
if ($_POST['voornaam'] == "") { $error = "Je bent vergeten om je voornaam in te vullen!<br />"; }
if ($_POST['achternaam'] == "") { $error .= "Je bent vergeten om je achternaam in te vullen!<br />"; }
if ($_POST['postcode'] == "" ) { $error .= "Je bent vergeten om je postcode in te vullen!<br />"; }
if ($_POST['tijdschrijft'] == "" ) { $error .= "Je moet minimaal 1 tijdschrijft aankruisen!"; }
if (!isset($error)) {
echo "Gegevens zijn succesvol verzonden.";
} else {
echo "Gelieve alle formuliervelden netjes in te vullen !<br /><br />";
}
} else {
echo "U moet eerst het formulier invullen !";
}
?>
if (isset($_POST['submit'])) {
if ($_POST['voornaam'] == "") { $error = "Je bent vergeten om je voornaam in te vullen!<br />"; }
if ($_POST['achternaam'] == "") { $error .= "Je bent vergeten om je achternaam in te vullen!<br />"; }
if ($_POST['postcode'] == "" ) { $error .= "Je bent vergeten om je postcode in te vullen!<br />"; }
if ($_POST['tijdschrijft'] == "" ) { $error .= "Je moet minimaal 1 tijdschrijft aankruisen!"; }
if (!isset($error)) {
echo "Gegevens zijn succesvol verzonden.";
} else {
echo "Gelieve alle formuliervelden netjes in te vullen !<br /><br />";
}
} else {
echo "U moet eerst het formulier invullen !";
}
?>
Nu geeft hij elke keer "U moet eerst het formulier invullen !" aan. Maakt niet uit hoe ik het formulier invul hij geeft altijd deze melding.
Wat doe ik nou fout?
P.S. ik ben echt nog een COMPLETE leek op dit gebied, heb er echt 0 verstand van.
anders zou het gewoon moeten werken..
van
naar
complete code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['voornaam'] == "") {
$error = "Je bent vergeten om je voornaam in te vullen!<br />";
}
if ($_POST['achternaam'] == "") {
$error .= "Je bent vergeten om je achternaam in te vullen!<br />";
}
if ($_POST['postcode'] == "" ) {
$error .= "Je bent vergeten om je postcode in te vullen!<br />";
}
if ($_POST['tijdschrijft'] == "" ) {
$error .= "Je moet minimaal 1 tijdschrijft aankruisen!";
}
if (!isset($error)) {
echo "Gegevens zijn succesvol verzonden.";
}
else {
echo "Gelieve alle formuliervelden netjes in te vullen !<br /><br/>".$error;
}
}
else {
echo "U moet eerst het formulier invullen !";
}
?>
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['voornaam'] == "") {
$error = "Je bent vergeten om je voornaam in te vullen!<br />";
}
if ($_POST['achternaam'] == "") {
$error .= "Je bent vergeten om je achternaam in te vullen!<br />";
}
if ($_POST['postcode'] == "" ) {
$error .= "Je bent vergeten om je postcode in te vullen!<br />";
}
if ($_POST['tijdschrijft'] == "" ) {
$error .= "Je moet minimaal 1 tijdschrijft aankruisen!";
}
if (!isset($error)) {
echo "Gegevens zijn succesvol verzonden.";
}
else {
echo "Gelieve alle formuliervelden netjes in te vullen !<br /><br/>".$error;
}
}
else {
echo "U moet eerst het formulier invullen !";
}
?>
Gewijzigd op 11/10/2012 17:02:27 door Marvin H
Als je submit-knop er zo uit ziet:
<input type="submit" name="submit" value="Verzend">
zal dit wel werken. Ik vermoed dat je die name="submit" niet hebt.
----
Maar, ik zou altijd afraden of dit te gebruiken:
Ik zou dat altijd vervangen door:
Jij vraagt: "heeft iemand op de knop gedrukt?"
Ik vraag: "Is er een POST formulier verzonden?"
De tweede is beter.
Gewijzigd op 11/10/2012 17:01:27 door Kris Peeters
If($_SERVER['REQUET_METHOD']='POST')
{
// jou code
}
Plaatsen
Toevoeging op 11/10/2012 17:03:21:
Sorry moet =="post")
{
}
Zijm
De submit knop miste inderdaad de name.
Echter nu geeft hij dit:
Notice: Undefined index: voornaam in C:\Program Files (x86)\xampp\htdocs\CollegePHP\panoramix\verwerken3.php on line 4
Notice: Undefined index: achternaam in C:\Program Files (x86)\xampp\htdocs\CollegePHP\panoramix\verwerken3.php on line 5
Notice: Undefined index: postcode in C:\Program Files (x86)\xampp\htdocs\CollegePHP\panoramix\verwerken3.php on line 6
Notice: Undefined index: tijdschrijft in C:\Program Files (x86)\xampp\htdocs\CollegePHP\panoramix\verwerken3.php on line 7
Gelieve alle formuliervelden netjes in te vullen !
En Kris, ik moet het eerst met een submit knop doen om te oefenen maar bedankt voor je input!
Ik heb overigens alleen de submit knop gewijzigd, verder niks. Ik gebruik PPTs van school en wil graag die wijze eerst aanhouden.
Gewijzigd op 11/10/2012 17:07:26 door kaas stengel
@kaas: Plaats je volledige code eens inclusief het formulier...
<tr><td>Vul je voornaam in:</td><td> <input type ="text" name="voornaam" size="25">*</td></tr>
<tr><td>Vul je achternaam in:</td><td> <input type ="text" name="achternaam" size="25">*</td></tr>
<tr><td>Vul je telefoonnummer in:</td><td> <input type ="text" name="telefoonnummer" size="25"></td></tr>
<tr><td>Vul je postcode in:</td><td> <input type ="text" name="postcode" size="25">*</td></tr>
</table>
</form>
<FORM METHOD="post" ACTION=“verwerken3.php" >
Ben je een jongen of een meisje:
<INPUT NAME="guide" TYPE="radio" VALUE="jongen">Jongen
<INPUT NAME="guide" TYPE="radio" VALUE="meisje">Meisje<p>
</FORM>
<FORM METHOD="post" ACTION="verwerken3.php">
Kies minimaal 1 tijdschrijft:
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="gamez">Stuur mij informatie over het tijdschrijft GAMEZ <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="girlz" >Stuur mij informatie over het tijdschrijft GIRLZ <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="uitgaan">Stuur mij informatie over het tijdschrijft UITGAAN <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="mode">Stuur mij informatie over het tijdschrijft MODE <br>
</FORM>
<FORM METHOD="post" ACTION= "verwerken3.php" >
<INPUT TYPE="submit" name= "submit" VALUE="Verzend het formulier">
<tr><td>Tekstvelden met een * zijn verplicht!</td></tr>
</FORM>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<table> <form method="post" action="verwerken3.php">
<tr><td>Vul je voornaam in:</td><td> <input type ="text" name="voornaam" size="25">*</td></tr>
<tr><td>Vul je achternaam in:</td><td> <input type ="text" name="achternaam" size="25">*</td></tr>
<tr><td>Vul je telefoonnummer in:</td><td> <input type ="text" name="telefoonnummer" size="25"></td></tr>
<tr><td>Vul je postcode in:</td><td> <input type ="text" name="postcode" size="25">*</td></tr>
</table>
Ben je een jongen of een meisje:
<INPUT NAME="guide" TYPE="radio" VALUE="jongen">Jongen
<INPUT NAME="guide" TYPE="radio" VALUE="meisje">Meisje<p>
Kies minimaal 1 tijdschrijft:
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="gamez">Stuur mij informatie over het tijdschrijft GAMEZ <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="girlz" >Stuur mij informatie over het tijdschrijft GIRLZ <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="uitgaan">Stuur mij informatie over het tijdschrijft UITGAAN <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="mode">Stuur mij informatie over het tijdschrijft MODE <br>
<INPUT TYPE="submit" name= "submit" VALUE="Verzend het formulier">
<tr><td>Tekstvelden met een * zijn verplicht!</td></tr>
</FORM>
<tr><td>Vul je voornaam in:</td><td> <input type ="text" name="voornaam" size="25">*</td></tr>
<tr><td>Vul je achternaam in:</td><td> <input type ="text" name="achternaam" size="25">*</td></tr>
<tr><td>Vul je telefoonnummer in:</td><td> <input type ="text" name="telefoonnummer" size="25"></td></tr>
<tr><td>Vul je postcode in:</td><td> <input type ="text" name="postcode" size="25">*</td></tr>
</table>
Ben je een jongen of een meisje:
<INPUT NAME="guide" TYPE="radio" VALUE="jongen">Jongen
<INPUT NAME="guide" TYPE="radio" VALUE="meisje">Meisje<p>
Kies minimaal 1 tijdschrijft:
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="gamez">Stuur mij informatie over het tijdschrijft GAMEZ <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="girlz" >Stuur mij informatie over het tijdschrijft GIRLZ <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="uitgaan">Stuur mij informatie over het tijdschrijft UITGAAN <br>
<INPUT TYPE="checkbox" NAME="tijdschrift" VALUE="mode">Stuur mij informatie over het tijdschrijft MODE <br>
<INPUT TYPE="submit" name= "submit" VALUE="Verzend het formulier">
<tr><td>Tekstvelden met een * zijn verplicht!</td></tr>
</FORM>
zoiets moet het worden, al moet ik wel zeggen dat dit wel een beetje een zooitje is met die tabellen en formulieren door elkaar heen.
Gewijzigd op 11/10/2012 17:14:11 door Bo Ter Ham
Verstuur je drie verschillende forms in 1x? omdat ik meerdere keren <FORM METHOD="post" ACTION= "verwerken3.php" > tegenkom...
En Bo, met jouw code verdwijnt het stukje witregel voor de submit knop waardoor hij dus nogal tegen de tekst erboven staat aangeplakt. Dit moet niet.
@kaas: de opmaak is niet het belangrijkste, je moet eerste testen of het werkt en daarna kan je altijd de opmaak nog beter maken...
Anyway hij geeft nu dit als ik niks invul:
Notice: Undefined index: tijdschrijft in C:\Program Files (x86)\xampp\htdocs\CollegePHP\panoramix\verwerken3.php on line 7
Gelieve alle formuliervelden netjes in te vullen !
Vul ik overal wat in doet ie dit:
Notice: Undefined index: tijdschrijft in C:\Program Files (x86)\xampp\htdocs\CollegePHP\panoramix\verwerken3.php on line 7
Gelieve alle formuliervelden netjes in te vullen !
Maar goed hij geeft dan nog dezelfde fout (maar dan niet tijdschrijft :P)
NAME="tijdschrift[]"
in je verwerken3.php doe je dan het volgende:
Als ik helemaal niks invul geeft hij geen error maar hij laat ook niet zien wat nog ingevuld moet worden.
Vul ik bv. de voornaam in, geeft hij een error bij de achternaam? Vul ik de achternaam in, geeft hij hetzelfde aan als dat ik helemaal niks invul.
Snap er niks meer van.. hier een voorbeeld van de error:
Notice: Undefined variable: error in C:\Program Files (x86)\xampp\htdocs\CollegePHP\panoramix\verwerken3.php on line 5
Gelieve alle formuliervelden netjes in te vullen !
Ik moet eigenlijk heel simpel gewoon hebben dat er wordt aangegeven dat er wat niet is ingevuld en ook precies wat.
Er wordt daar prima uitgelegd hoe de opbouw zou kunnen zijn.
Als ik nu gegevens niet invul geeft hij de juiste error weer alleen kom(t)en er onder de error(rs) altijd 3 zwarte balletjes te staan. Dit zijn de zelfde balletjes die voor een error komt. Dit zit natuurlijk ergens in de code maar ik weet niet waar.
Dit is mijn code nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
$aErrors = array();
if ( !isset($_POST['voornaam'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['voornaam'] )
or trim($_POST['voornaam']) == ''
) {
$aErrors['voornaam'] = 'Je bent vergeten je voornaam in te vullen!';
}
if ( !isset($_POST['achternaam'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['achternaam'] )
or trim($_POST['achternaam']) == ''
) {
$aErrors['achternaam'] = 'Je bent vergeten je achternaam in te vullen!';
}
if ( !isset($_POST['postcode']) or !preg_match( '~^\d{4} ?[a-zA-Z]{2}$~', $_POST['postcode'] ) ) {
$aErrors['postcode'] = 'Je bent vergeten je postcode in te vullen!';
}
if ( isset($aErrors) and count($aErrors) > 0 ) {
print '<ul class="errorlist">';
foreach ( $aErrors as $error ) {
print '<li>' . $error . '</li>';
}
print '</ul>';
}
echo isset($aErrors['voornaam']) ? '<li class="error">' : '<li>';
echo isset($aErrors['achternaam']) ? '<li class="error">' : '<li>';
echo isset($aErrors['postcode']) ? '<li class="error">' : '<li>';
echo isset($aErrors['tijdschrift']) ? '<li class="error">' : '<li>';
if (!isset($error)) {
echo "Gegevens zijn succesvol verzonden.";
}
?>
$aErrors = array();
if ( !isset($_POST['voornaam'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['voornaam'] )
or trim($_POST['voornaam']) == ''
) {
$aErrors['voornaam'] = 'Je bent vergeten je voornaam in te vullen!';
}
if ( !isset($_POST['achternaam'])
or !preg_match( '~^[\w\' -]{2,}$~', $_POST['achternaam'] )
or trim($_POST['achternaam']) == ''
) {
$aErrors['achternaam'] = 'Je bent vergeten je achternaam in te vullen!';
}
if ( !isset($_POST['postcode']) or !preg_match( '~^\d{4} ?[a-zA-Z]{2}$~', $_POST['postcode'] ) ) {
$aErrors['postcode'] = 'Je bent vergeten je postcode in te vullen!';
}
if ( isset($aErrors) and count($aErrors) > 0 ) {
print '<ul class="errorlist">';
foreach ( $aErrors as $error ) {
print '<li>' . $error . '</li>';
}
print '</ul>';
}
echo isset($aErrors['voornaam']) ? '<li class="error">' : '<li>';
echo isset($aErrors['achternaam']) ? '<li class="error">' : '<li>';
echo isset($aErrors['postcode']) ? '<li class="error">' : '<li>';
echo isset($aErrors['tijdschrift']) ? '<li class="error">' : '<li>';
if (!isset($error)) {
echo "Gegevens zijn succesvol verzonden.";
}
?>
Klopt dit een beetje? En zo niet kan iemand het even mooi zetten?
Oh ja, ik heb alleen nog een error code nodig voor het tijdschrift. Dus dat er minimaal 1 aangerkuist moet worden.
Gewijzigd op 14/10/2012 15:45:38 door kaas stengel