Checkbox issue?!
Nu worden alle overige velden middels een functie gechecked, bv. als volgt:
Dan vervolgens:
Code (php)
1
2
3
4
2
3
4
// CONTROLEER VELDEN:
if ($_POST["verzendbutton"] != "Verzenden" ||
!valid_achternaam($_POST["achternaam"]))
{
if ($_POST["verzendbutton"] != "Verzenden" ||
!valid_achternaam($_POST["achternaam"]))
{
En het betreffende in te vullen veld 'Achternaam' als volgt in het formulier:
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
<tr>
<td class="noemer">
<?php
if ($_POST["verzendbutton"] && !valid_achternaam($_POST["achternaam"])) {
echo "<label class=\"error\">Achternaam:*</label>";
}
else
{
echo "<label>Achternaam:*</label>";
}
?>
</td>
<td class="invoer"><input type="text" name="achternaam" class="formulierveld" value="<?php echo $achternaam ?>" size="50" maxlength="50" tabindex="50" /></td>
</tr>
<td class="noemer">
<?php
if ($_POST["verzendbutton"] && !valid_achternaam($_POST["achternaam"])) {
echo "<label class=\"error\">Achternaam:*</label>";
}
else
{
echo "<label>Achternaam:*</label>";
}
?>
</td>
<td class="invoer"><input type="text" name="achternaam" class="formulierveld" value="<?php echo $achternaam ?>" size="50" maxlength="50" tabindex="50" /></td>
</tr>
Dit zodat het <label> rood wordt weergegeven als er iets fout gaat.
Maar...ik begrijp niet hoe ik een soortgelijke functie toepas op een checkbox?!
Nu wordt de checkbox gecontroleerd op 'aangevinkt of niet' zolang er ook een ander veld in het formulier niet correct is ingevuld. Als echter de rest correct is ingevuld, behalve het vinkje bij de Algemene Voorwaarden checkbox, wordt het formulier gewoon verzonden.
De betreffende checkbox staat als volgt in het formulier:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<tr>
<td class="noemer" valign="top">
<?php
if ($_POST["verzendbutton"] && !isset($_POST['akkoord_algemene_voorwaarden'])) {
echo "<label class=\"error\">Algemene voorwaarden:*</label>";
}
else
{
echo "<label>Algemene voorwaarden:*</label>";
}
?>
</td>
<td class="invoer">
<input type="checkbox" name="akkoord_algemene_voorwaarden" class="checkbox" value="Akkoord"
<?php
if (isset($_POST['akkoord_algemene_voorwaarden']))
{
echo 'checked="checked"';
}
?>
tabindex="170"/>
</td>
</tr>
<td class="noemer" valign="top">
<?php
if ($_POST["verzendbutton"] && !isset($_POST['akkoord_algemene_voorwaarden'])) {
echo "<label class=\"error\">Algemene voorwaarden:*</label>";
}
else
{
echo "<label>Algemene voorwaarden:*</label>";
}
?>
</td>
<td class="invoer">
<input type="checkbox" name="akkoord_algemene_voorwaarden" class="checkbox" value="Akkoord"
<?php
if (isset($_POST['akkoord_algemene_voorwaarden']))
{
echo 'checked="checked"';
}
?>
tabindex="170"/>
</td>
</tr>
De checkbox moet natuurlijk ook gechecked blijven wanneer de pagina ververst maar het formulier niet wordt verzonden vanwege niet correct ingevulde overige verplichte velden.
Iemand suggesties?
Gewijzigd op 22/03/2012 05:58:08 door Erick Schluter
Code (php)
LETOP: ik hen de hoofdletter van akkoord een kleine gemaakt.
Bedankt voor je input, deze had ik echter zelf ook al geprobeerd en dit lijkt ook niet te werken.
Het gaat erom dat ik met een functie controleer of de checkbox is aangevinkt...zodat als deze niet is aangevinkt het formulier niet wordt verzonden. Het lijkt nu wel alsof de checkbox qua controles niet met de rest van de controle functies wordt meegenomen...en alleen 'ter plekke' wordt gecontroleerd.
De volgende functie, zoals ik hem gebruik, controleert het invoerveld 'naam'. Hier mogen alleen letters worden ingevuld en doe ik als volgt:
Maar voor de checkbox? Ik wil iets als dit:
Code (php)
1
2
3
2
3
function valid_algemene_voorwaarden ($str) {
// Wat er ook moet gebeuren om de checkbox te checken!
}
// Wat er ook moet gebeuren om de checkbox te checken!
}
Zodat deze netjes wordt meegenomen met de overige controles.
Heb er inmiddels hoofdpijn van :-)
edit:
Even met dit stukje code gekeken. En als zo een checkbox niet is aangevinkt stuurt ie het veld ook niet mee:
Code (php)
Gewijzigd op 22/03/2012 16:29:12 door Mebus Hackintosh
Erick Schluter op 22/03/2012 05:56:07:
return(ereg ('^[a-zA-Z. -]+$', $str));
ereg is vervallen. Je kunt het gebruiken maar geeft foutmeldingen.
Erick Schluter op 22/03/2012 05:56:07:
echo "<label class=\"error\">Achternaam:*</label>";
Waarom al die "? Gebruik in php (echo) ' en binnen html " :
echo '<label class="error">Achternaam:*</label>';
En wat betreft je vraag: je wilt dus geen controle _nadat_ het formulier verzonden is, maar je wilt dat je pas kunt verzenden als de checkbox is aangevinkt. Daarover zijn (recentelijk) meer topics geweest. Weet zo niet meer of het javascript, jquery en/of Ajax oplossing geboden werd.
@Obelix en Idefix - Ereg is vervallen inderdaad...dat weet ik. Dat zou ik kunnen aanpassen. Maar daarmee is het probleem niet opgelost. En wat betreft de " en ' daarin heb je gelijk, daar maak ik altijd een zooitje van. Bedankt voor de reminder!
En...ik heb enkele javascrip oplossingen geprobeerd...maar ben weer niet kundig genoeg om dit werkend te krijgen in combinatie met PHP.
Maar...hoe zorg ik dat de checkbox met Javascript aangevinkt blijft als de pagina wordt ververst maar het formulier niet wordt verzonden vanwege niet correct ingevulde velden...dat kreeg ik niet voor elkaar, vandaar dat ik het ging proberen op te lossen met louter PHP.
edit: Nadat ik je eerste bericht nogmaals heb gelezen zag ik geen enkele javascript code. Wees duidelijk en bied zelf ook eventuele oplossingen zodat wij je kunnen helpen.
edit: Even wat gemaakt voor je.
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
$aNotice = array();
$Form = true;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(empty($_POST['voornaam']) || strlen(trim($_POST['voornaam'])) == 0)
{
$aNotice[] = 'Voornaam is niet ingevult.';
$Form = false;
} else { $voornaam = $_POST['voornaam']; }
if(empty($_POST['achternaam']) || strlen(trim($_POST['achternaam'])) == 0)
{
$aNotice[] = 'Achternaam is niet ingevult.';
$Form = false;
} else { $achternaam = $_POST['achternaam']; }
if(empty($_POST['vinkbox']) || $_POST['vinkbox'] != 'yes')
{
$aNotice[] = 'U bent niet akkoord gegaan met de algemene voorwaarden.';
$Form = false;
} else { $vinkbox = true; }
if(!$Form)
{
print_r($aNotice);
}
else
{
//Verstuur email.
}
}
else
{
$Form = false;
}
if(!$Form)
{
?>
<form action="check.php" method="post">
Voornaam: <input type="text" name="voornaam" value="<?php if(isset($voornaam)) { echo $voornaam; } ?>" /><br />
Achternaam: <input type="text" name="achternaam" value="<?php if(isset($achternaam)) { echo $achternaam; } ?>" /><br />
Check: <input type="checkbox" name="vinkbox" value="yes"<?php if(isset($vinkbox)) { echo 'checked="checked"'; } ?> />
<input type="submit" value="Verzenden" />
</form>
<?php
}
?>
$aNotice = array();
$Form = true;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(empty($_POST['voornaam']) || strlen(trim($_POST['voornaam'])) == 0)
{
$aNotice[] = 'Voornaam is niet ingevult.';
$Form = false;
} else { $voornaam = $_POST['voornaam']; }
if(empty($_POST['achternaam']) || strlen(trim($_POST['achternaam'])) == 0)
{
$aNotice[] = 'Achternaam is niet ingevult.';
$Form = false;
} else { $achternaam = $_POST['achternaam']; }
if(empty($_POST['vinkbox']) || $_POST['vinkbox'] != 'yes')
{
$aNotice[] = 'U bent niet akkoord gegaan met de algemene voorwaarden.';
$Form = false;
} else { $vinkbox = true; }
if(!$Form)
{
print_r($aNotice);
}
else
{
//Verstuur email.
}
}
else
{
$Form = false;
}
if(!$Form)
{
?>
<form action="check.php" method="post">
Voornaam: <input type="text" name="voornaam" value="<?php if(isset($voornaam)) { echo $voornaam; } ?>" /><br />
Achternaam: <input type="text" name="achternaam" value="<?php if(isset($achternaam)) { echo $achternaam; } ?>" /><br />
Check: <input type="checkbox" name="vinkbox" value="yes"<?php if(isset($vinkbox)) { echo 'checked="checked"'; } ?> />
<input type="submit" value="Verzenden" />
</form>
<?php
}
?>
Gewijzigd op 23/03/2012 09:28:28 door Mebus Hackintosh