vraagje radio button
dit is wat er staat in mijn php script
Code (php)
en dit staat er in mijn form.
Code (php)
1
2
2
<input type="radio" name="geslacht" value="man">Male<br>
<input type="radio" name="geslacht" value="vrouw">Vrouw
<input type="radio" name="geslacht" value="vrouw">Vrouw
ik krijg alleen maar de fout melding dat ik geen keus zou hebben gemaakt, terwijl ik dat wel heb gedaan.
wat doe ik fout.
Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 07/07/2014 17:28:03 door Bas IJzelendoorn
$_POST['geslacht'] echter......
daarnaast:
checked="checked" bij een van de 2, maakt ook al dat er vrijwel altijd 1 is ingevuld..
Toevoeging op 07/07/2014 17:19:56:
Ik snap niet zo goed wat je bedoeld
verander $_POST['gender'] en $gender naar $_POST['geslacht']
Werkt nog steeds niet helaas
Voornaam vergeten!
Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.
Je laatste opmerking gaat over een gewone text input waar een naam ingevuld moet worden. Dat probleem zal wel in de buurt staan van de code van dit topic, maar heeft er op zich niets mee te maken.
Misschien ook die code erbij posten?
<tr>
<th width="800" scope="col"> <table width="833" height="214" border="0" align="center" style="vertical-align: top;">
<tr>
<th width="299" rowspan="2" scope="col">
<form method="post" action="">
<table width="329" height="260" border="0">
<tr>
<td width="319" height="256" style="vertical-align: top; text-align: left;"><table width="252" border="0">
<tr></tr>
<tr>
<td width="110">Voornaam* <span class="error"> </span></td>
<td width="144" style="vertical-align:top"><input type="text" name="voornaam" value="" />
<span class="error"></span></td>
<td width="107">
</td>
</tr>
<tr>
<td>Achternaam* <span class="error"></span></td>
<td><input type="text" name="achternaam" value="" />
<span class="error"></span></td>
<td>
</td>
</tr>
<tr>
<td>E-mail* <span class="error"></span></td>
<td><input type="text" name="email" value="" />
<span class="error"></span></td>
<td></td>
</tr>
</table>
<table width="200" border="0">
<tr>
<td>Bericht*</td>
<td><textarea name="bericht" rows="5" cols="40"></textarea></td>
</tr>
</table>
<table width="200" border="0" align="left">
<tr>
<td><input type="reset" value="Begin opnieuw" style="background-color: #e5c1b9; color: Black;font-family: Verdana; font-size: 10 pt;"/></td>
<td><input type="submit" name="versturen" value="Verzenden" style="background-color:#e5c1b9; color: Black;font-family: Verdana; font-size: 10 pt;"/></td>
</tr>
</table>
<p> </p>
<p><span class="error"><span style="vertical-align:top">
<input type="radio" name="gender" value="man">Male<br>
<input type="radio" name="gender" value="vrouw">Vrouw
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
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
<?php
// define variables and set to empty values
$nameErr = $emailErr = $geslachtErr = $websiteErr = "";
$name = $email = $geslacht = $comment = $website = "";
$naar = ''; // Waar moet het naartoe?
$onderwerp = 'De zilveren draad'; // Het onderwerp van het bericht
// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
if(isset($_POST['geslacht']))
{
if(empty($_POST['geslacht'])) // Als het voornaam veld niet is ingevuld
{
echo "<p>Bent u man of vrouw?</p>";
$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
}
}
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$fout = false; // Om te kijken straks of er wat fout is
if(empty($gender)) // Als het voornaam veld niet is ingevuld
{
print '<p>Voornaam vergeten!</p>';
$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
}
}
?>
// define variables and set to empty values
$nameErr = $emailErr = $geslachtErr = $websiteErr = "";
$name = $email = $geslacht = $comment = $website = "";
$naar = ''; // Waar moet het naartoe?
$onderwerp = 'De zilveren draad'; // Het onderwerp van het bericht
// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
if(isset($_POST['geslacht']))
{
if(empty($_POST['geslacht'])) // Als het voornaam veld niet is ingevuld
{
echo "<p>Bent u man of vrouw?</p>";
$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
}
}
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$fout = false; // Om te kijken straks of er wat fout is
if(empty($gender)) // Als het voornaam veld niet is ingevuld
{
print '<p>Voornaam vergeten!</p>';
$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$achternaam = trim($_POST['achternaam']); // Alle overbodige spaties uit het achternaam veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($achternaam)) // Als het achternaam veld niet is ingevuld
{
print '<p>Achternaam vergeten!</p>';
$fout = true;
}
}
?>
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$achternaam = trim($_POST['achternaam']); // Alle overbodige spaties uit het achternaam veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($achternaam)) // Als het achternaam veld niet is ingevuld
{
print '<p>Achternaam vergeten!</p>';
$fout = true;
}
}
?>
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$email = trim($_POST['email']); // Alle overbodige spaties uit het email veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($email)) // Als het email veld niet is ingevuld
{
print '<p>email vergeten!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>fout email adres!</p>';
$fout = true;
}
}
?>
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$email = trim($_POST['email']); // Alle overbodige spaties uit het email veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($email)) // Als het email veld niet is ingevuld
{
print '<p>email vergeten!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>fout email adres!</p>';
$fout = true;
}
}
?>
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
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
<?php
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$bericht = trim($_POST['bericht']); // Alle overbodige spaties uit het bericht veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($bericht)) // Als het bericht veld niet is ingevuld
{
print '<p>bericht vergeten!</p>';
$fout = true;
}
if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
{
$headers .= 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
}
?>
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$bericht = trim($_POST['bericht']); // Alle overbodige spaties uit het bericht veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($bericht)) // Als het bericht veld niet is ingevuld
{
print '<p>bericht vergeten!</p>';
$fout = true;
}
if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
{
$headers .= 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
}
?>
</p></td>
</tr>
</table>
</form>
<p><span class="error">Alle velden gemarkeerd met een * zijn verplicht.</span></p>
to the point: zoekop waar de melding Voornaam vergeten vandaan komt en kijk 2 regels eerder waar je op controleert....
verder: die eerste echo met action="". Laat die gewoon achterwege.
Dat is echter wel de enige plek waar je htmlspecialchars gebruikt.
En op alle andere plekken waar je dingen als $name echoot, daar vergeet je dat.
Verder snap ik niet waarom je een keer of 10 controleert of $_POST['versturen'] bestaat.
Dat doe je 1x, en dan check je stuk voor stuk de te verwachten invoers.
Sowieso: ipv controleren op de aanwezigheid van $_POST['versture'], kun je ook doen wat je werkelijk wilt weten: is er een form gepost?
if($_SERVER['REQUEST_METHOD'] == 'POST')
En tenslotte:
die hele stukken PHP komen boven je html te staan, zodat je eventueel $name ook in kunt vullen.
Of het form kunt weg laten als je constateert dat alles ok was
if(isset($_POST['versturen'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$voornaam = trim($_POST['voornaam']); // Alle overbodige spaties uit het voornaam veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($voornaam)) // Als het voornaam veld niet is ingevuld
{
print '<p>Voornaam vergeten!</p>';
$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST') // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$achternaam = trim($_POST['achternaam']); // Alle overbodige spaties uit het achternaam veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($achternaam)) // Als het achternaam veld niet is ingevuld
{
print '<p>Achternaam vergeten!</p>';
$fout = true;
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST') // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$email = trim($_POST['email']); // Alle overbodige spaties uit het email veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($email)) // Als het email veld niet is ingevuld
{
print '<p>email vergeten!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>fout email adres!</p>';
$fout = true;
}
}
if(isset($_POST['geslacht'])) // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$gender = trim($_POST['geslacht']); // Alle overbodige spaties uit het voornaam veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($gender)) // Als het voornaam veld niet is ingevuld
{
print '<p>geslacht vergeten!</p>';
$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
}
}
if($_SERVER['REQUEST_METHOD'] == 'POST') // Check naar POST versturen// Als het formulier verzonden is door op de verzend knop te klikken
{
$bericht = trim($_POST['bericht']); // Alle overbodige spaties uit het bericht veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is
if(empty($bericht)) // Als het bericht veld niet is ingevuld
{
print '<p>bericht vergeten!</p>';
$fout = true;
}
if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
{
$headers .= 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
}
?>
maak daar eens van:
<input type="radio" name="gender" value="man" checked="checked">Male<br>
Daarmee kan een normale gebruiker niet meer vergeten om een geslacht aan te vinken
Toevoeging op 08/07/2014 13:08:20:
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
Als je naar school wilt
Als je je schoenen niet aan hebt,
trek je schoenen aan.
Als je naar school wilt
Als de deur dicht is,
open de deur.
Als je naar school wilt
Als je fiets er staat,
stap de fiets.
Als je naar school wilt,
sla rechts af....
Als je je schoenen niet aan hebt,
trek je schoenen aan.
Als je naar school wilt
Als de deur dicht is,
open de deur.
Als je naar school wilt
Als je fiets er staat,
stap de fiets.
Als je naar school wilt,
sla rechts af....
Leest irritant he?
Als je 1x bepaalt of je naar school wilt, kun je daarna al die handelingen doen die daarbij horen.
Zo ook met je POST
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
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// controle email
// controle naam
// controle geslacht
// etc
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// controle email
// controle naam
// controle geslacht
// etc
}
?>
En niet 10x een lap code copy-pasten onder het mom "het werkte net, dus ik pas het nog een keer toe met kleine aanpassing".
Probeer te snappen wat je script.
maar verder werkt hij nog steeds niet, als je het verstuurt krijg ja alles in je mail zoals voornaam achternaam email en bericht maar niet of je een mannetje of vrouwtje bent
welke var is dan niet ingevuld?
Toevoeging op 08/07/2014 15:17:12:
<input type="radio" name="gender" value="man">man
werkt ook niet
Gender is dus niet ingevuld? Want je krijgt niet "man" op het scherm?
Of gaat het er daar om, dat er "man" op het scherm staat, terwijl je de juiste radio aangevinkt wilt zien?
Toevoeging op 08/07/2014 15:23:27:
sowieso de vraag, waar $gender dan vandaan komt.
Als dat uit de post moet komen, dan zou je daar $_POST ook moeten aanspreken.
bijvoorbeeld met
filter_input(INPUT_POST, 'geslacht')
alles doet het als je op verzenden drukt stuurt hij gewoon voornaam achternaam mail en bericht mee.
maar niet man of vrouw
Geen hele lap code graag.
Ook moet het "name" field van alle radio's in de radiogroep aan elkaar gelijk zijn.
Door geen keuze als default mee te geven kun je mensen verplichten echt een keuze te maken. De ID's moeten daarintegen juist een unieke naam hebben.
Code (php)
1
2
3
4
2
3
4
<input type="radio" id="groep_1" name="groep" value="man">
<input type="radio" id="groep_2" name="groep" value="vrouw">
<input type="radio" id="groep_3" name="groep" value="travestiet" checked>
<input type="radio" id="groep_4" name="groep" value="transgender">
<input type="radio" id="groep_2" name="groep" value="vrouw">
<input type="radio" id="groep_3" name="groep" value="travestiet" checked>
<input type="radio" id="groep_4" name="groep" value="transgender">
Knip en plak bovenstaande code maar eens in je programma, dit geeft in je $_POST voor de variabele groep de waarde travestiet terug.
Het email adres ook
(alle 3 onveilig, maar ach...)
Het bericht zet je in de body van de mail.
Waar precies had je het geslacht willen zien? En waarom denk je dat dat op die plek dan verschijnt?
Ivo P op 08/07/2014 17:24:54:
de voor- en achternaam zet je in de from header.
Niet correct.
http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders