Lege checkbox posten
In een form toon ik diverse regels uit een tabel tblMeldingen. Deze gegevens kunnen worden aangepast en weer worden opgeslagen in de tabel met knpSave (submit). Zie onderstaande code.
Met knpMeld worden de gegevens uit tabel tblMeldingen in een txt bestand gezet op een bepaalde lokatie. Voor de gebruiker heet de knop 'melden'.
Nu wil ik ook dat een gebruiker per regel kan aangeven of het record niet hoeft worden gemeld en doe dat m.b.v. een checkbox.
Vinkt men de checkbox aan dan wordt een veld 'skip' van betreffend record uit tblMeldingen gevuld met de waarde 1.
Van alle records met de waarde 1 in het veld Skip staat in het formulier de checkbox aangevinkt.
Met onderstaande code gaat het tot nu toe prima.
Wil men de regel/ record toch melden dan moet men de checkbox weer uitvinken. Nu komt het.
Is een checkbox uitgevinkt dan krijg ik het veld 'skip' voor het betreffende record uit tabel tblMeldingen niet meer gewijzigd. Ik zou in dat geval de waarde 0 willen registreren. Zie in de code onderaan vanaf '// Uitzetten overslaan record'
Weet iemand hoe ik mijn code moet aanpassen zodat ik o.b.v. een lege checkbox ook het veld 'skip' kan wijzigen in tabel tblMeldingen.
<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
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
function getNameFromKey($key) {
$array = explode('_', $key);
return $array[0];
}
function getIdFromKey($key) {
$array = explode('_', $key);
return $array[1];
}
$array = array();
foreach($_POST as $key => $value) {
$array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}
foreach($array as $id) {
foreach($id as $key => $value) {
foreach($id as $key => $value) {
if ($key == 'txtId' ) { /*echo $key.'='.$value.' ';*/ $updId = $value; }
if ($key == 'txtDatum' ) { $txtDag = $value; $dag = date_create($value); $updDag = date_format($dag, 'Y-m-d'); } // $txtDag tbv MeldAfleveren.php Niet weggooien dus !!
if ($key == 'cntrDatum' ) { $cntrDag = date_create($value); }
if ($key == 'minDatum' ) { $laatsteDag = date_create($value); $minDag = date_format($laatsteDag, 'Y-m-d'); }
if ($key == 'kzlAfnmr') { $updRelatie = $value; } // in MeldAanwas.php
if ($key == 'cntrAfnmr') { $cntrRelatie = $value; } // in MeldAanwas.php
}
// CONTROLE op gewijzigde velden
// Wijzigen datum
if (!empty($updDag) && $dag <> $cntrDag && $updDag >= $minDag)
{
if($curr_url == $url.'MeldAanwas.php') {$datumveld = "aanwasdm = \"$updDag\" ";}
if($curr_url == $url.'MeldGeboortes.php') {$datumveld = "geb_datum = \"$updDag\" "; $datumbezet = "van = \"$updDag\" ";
$upd_tblBezetting = "UPDATE tblBezetting SET ".$datumbezet." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";
mysqli_query($db,$upd_tblBezetting) or die (mysqli_error($db));
}
if($curr_url == $url.'MeldAfleveren.php') {$datumveld = "afleverdm = \"$updDag\" "; $datumbezet = "tot = \"$updDag\" ";
if ($cntrfase == 'lam') {
$upd_tblBezetting = "UPDATE tblBezetting SET ".$datumbezet." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";
mysqli_query($db,$upd_tblBezetting) or die (mysqli_error($db)); }
}
if($curr_url == $url.'MeldUitval.php') {$datumveld = "uitvaldm = \"$updDag\" ";}
$upd_tblDieren = "UPDATE tblDieren SET ".$datumveld." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";
mysqli_query($db,$upd_tblDieren) or die (mysqli_error($db));
$upd_tblMeldingen = "UPDATE tblMeldingen SET datum = \"$updDag\" WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
// Wijzigen bestemmening
if($curr_url == $url.'MeldAfleveren.php' || $curr_url == $url.'MeldUitval.php') {
if ((!empty($updRelatie) && empty($cntrRelatie)) || (empty($updRelatie) && !empty($cntrRelatie)) || ( !empty($updRelatie) && !empty($cntrRelatie) && $updRelatie <> $cntrRelatie) )
{ if (!empty($updRelatie)) { $toekomst = "ubn_best = ".$updRelatie; } else { $toekomst = "ubn_best = NULL"; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET " . $toekomst . " WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
}
// Wijzigen herkomst
if($curr_url == $url.'MeldAanwas.php') {
if ((!empty($updRelatie) && empty($cntrRelatie)) || (empty($updRelatie) && !empty($cntrRelatie)) || ( !empty($updRelatie) && !empty($cntrRelatie) && $updRelatie <> $cntrRelatie) )
{ if (!empty($updRelatie)) { $herkomst = "ubn_herk = ".$updRelatie; } else { $herkomst = "ubn_herk = NULL"; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET " . $herkomst . " WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
}
// EINDE CONTROLE op gewijzigde velden
// Aanzetten overslaan record
if ($key == 'chbSkip' && !empty($value)) { /* Alleen als checkbox chbSkip_$Id een waarde bevat*/
foreach($id as $key => $value) {
if ($key == 'txtId' ) { echo $key.' key ='.$value.'<br/> '; $updId = $value; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET skip = 1 WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db)); }
} // EINDE Alleen als checkbox chbSkip_$Id een waarde bevat
// Uitzetten overslaan record
if ($key == 'chbSkip' && !isset($value)) { /* Alleen als checkbox chbSkip_$Id GEEN waarde bevat*/
foreach($id as $key => $value) {
if ($key == 'txtId' ) { echo $key.' key ='.$value.'<br/> '; $updId = $value; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET skip = 0 WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db)); }
} // EINDE Alleen als checkbox chbSkip_$Id GEEN waarde bevat
}
}
?>
function getNameFromKey($key) {
$array = explode('_', $key);
return $array[0];
}
function getIdFromKey($key) {
$array = explode('_', $key);
return $array[1];
}
$array = array();
foreach($_POST as $key => $value) {
$array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}
foreach($array as $id) {
foreach($id as $key => $value) {
foreach($id as $key => $value) {
if ($key == 'txtId' ) { /*echo $key.'='.$value.' ';*/ $updId = $value; }
if ($key == 'txtDatum' ) { $txtDag = $value; $dag = date_create($value); $updDag = date_format($dag, 'Y-m-d'); } // $txtDag tbv MeldAfleveren.php Niet weggooien dus !!
if ($key == 'cntrDatum' ) { $cntrDag = date_create($value); }
if ($key == 'minDatum' ) { $laatsteDag = date_create($value); $minDag = date_format($laatsteDag, 'Y-m-d'); }
if ($key == 'kzlAfnmr') { $updRelatie = $value; } // in MeldAanwas.php
if ($key == 'cntrAfnmr') { $cntrRelatie = $value; } // in MeldAanwas.php
}
// CONTROLE op gewijzigde velden
// Wijzigen datum
if (!empty($updDag) && $dag <> $cntrDag && $updDag >= $minDag)
{
if($curr_url == $url.'MeldAanwas.php') {$datumveld = "aanwasdm = \"$updDag\" ";}
if($curr_url == $url.'MeldGeboortes.php') {$datumveld = "geb_datum = \"$updDag\" "; $datumbezet = "van = \"$updDag\" ";
$upd_tblBezetting = "UPDATE tblBezetting SET ".$datumbezet." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";
mysqli_query($db,$upd_tblBezetting) or die (mysqli_error($db));
}
if($curr_url == $url.'MeldAfleveren.php') {$datumveld = "afleverdm = \"$updDag\" "; $datumbezet = "tot = \"$updDag\" ";
if ($cntrfase == 'lam') {
$upd_tblBezetting = "UPDATE tblBezetting SET ".$datumbezet." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";
mysqli_query($db,$upd_tblBezetting) or die (mysqli_error($db)); }
}
if($curr_url == $url.'MeldUitval.php') {$datumveld = "uitvaldm = \"$updDag\" ";}
$upd_tblDieren = "UPDATE tblDieren SET ".$datumveld." WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and levensnummer = '$cntrLevnr' ";
mysqli_query($db,$upd_tblDieren) or die (mysqli_error($db));
$upd_tblMeldingen = "UPDATE tblMeldingen SET datum = \"$updDag\" WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
// Wijzigen bestemmening
if($curr_url == $url.'MeldAfleveren.php' || $curr_url == $url.'MeldUitval.php') {
if ((!empty($updRelatie) && empty($cntrRelatie)) || (empty($updRelatie) && !empty($cntrRelatie)) || ( !empty($updRelatie) && !empty($cntrRelatie) && $updRelatie <> $cntrRelatie) )
{ if (!empty($updRelatie)) { $toekomst = "ubn_best = ".$updRelatie; } else { $toekomst = "ubn_best = NULL"; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET " . $toekomst . " WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
}
// Wijzigen herkomst
if($curr_url == $url.'MeldAanwas.php') {
if ((!empty($updRelatie) && empty($cntrRelatie)) || (empty($updRelatie) && !empty($cntrRelatie)) || ( !empty($updRelatie) && !empty($cntrRelatie) && $updRelatie <> $cntrRelatie) )
{ if (!empty($updRelatie)) { $herkomst = "ubn_herk = ".$updRelatie; } else { $herkomst = "ubn_herk = NULL"; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET " . $herkomst . " WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db));
}
}
// EINDE CONTROLE op gewijzigde velden
// Aanzetten overslaan record
if ($key == 'chbSkip' && !empty($value)) { /* Alleen als checkbox chbSkip_$Id een waarde bevat*/
foreach($id as $key => $value) {
if ($key == 'txtId' ) { echo $key.' key ='.$value.'<br/> '; $updId = $value; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET skip = 1 WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db)); }
} // EINDE Alleen als checkbox chbSkip_$Id een waarde bevat
// Uitzetten overslaan record
if ($key == 'chbSkip' && !isset($value)) { /* Alleen als checkbox chbSkip_$Id GEEN waarde bevat*/
foreach($id as $key => $value) {
if ($key == 'txtId' ) { echo $key.' key ='.$value.'<br/> '; $updId = $value; }
$upd_tblMeldingen = "UPDATE tblMeldingen SET skip = 0 WHERE lidId = ".mysqli_real_escape_string($db,$lidId)." and meldId = '$updId' ";
mysqli_query($db,$upd_tblMeldingen) or die (mysqli_error($db)); }
} // EINDE Alleen als checkbox chbSkip_$Id GEEN waarde bevat
}
}
?>
</code>
Ik kan zo gauw iha 3 oplossingen bedenken, weet niet welke past in jouw geval:
1. als je form submit, zorg je dat alle checkboxen die niet aangevinkt zijn de waarde 0 krijgen, daarna vink je ze alsnog aan. Dit zorgt ervoor dat alle checkboxen worden gepost met een status of ze aangevinkt waren (value 1) of niet (value 0).
2. verwijder alle velden die geassocieerd waren met voorheen aangevinkte checkboxen, en vul deze opnieuw. Maar dit kan resulteren in het verbreken van relaties wat ongewenst kan zijn (cascading deletes). Als je eea in kopppeltabellen hebt opgezet kan dit een valide strategie zijn, maar ik laat dit verder aan jouw oordeel over.
3. alles handmatig vergelijken: je hebt een lijst van alles wat potentieel aangevinkt kan zijn:
aanwezig en nu niet aangevinkt > verwijder
aanwezig en (nog steeds) aangevinkt > skip
afwezig en nu niet aangevinkt > skip
afwezig en nu aangevinkt > voeg toe
Maar als je je database / queries zo hebt opgezet is dit het moment dat je dit zal gaan betreuren
Wat ik je dringend zou aanraaden is bovenstaande code wat meer uit elkaar trekken zodat de werking eenduidiger wordt. Daarnaast mag je best wat ruimer gebruik maken van annotatie (commentaar in code) zodat andere mensen ook (beter) begrijpen waar deze code over gaat en wat deze doet.
Ik heb overtollige code verwijderd en mijn doelstelling nader toelichten.
Met 1 button (knpSave) wil ik meerdere regels in een form tegelijk kunnen opslaan waarbij 1 regel gelijk staat aan een record in de tabel tblMeldingen. Elk veld in het form heeft per regel zijn unieke naam door deze naam aan te vullen met $Id waarbij $Id de unieke sleutel is uit tblMeldingen. Dus het enigste datumveld heet niet <code></code> maar <code></code>. Zo heeft elke regel zijn unieke datumnaam. Omdat ik dat voor elk veld heb gedaan kan ik met onderstaand script per regel en per veld de waarde tonen.
Het script heeft de naam save_meldingen.php dat ik include in een vijftal scripts met elk hun eigen soort melding.
<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
27
28
29
30
31
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
<?php
function getNameFromKey($key) {
$array = explode('_', $key);
return $array[0];
}
function getIdFromKey($key) {
$array = explode('_', $key);
return $array[1];
}
$array = array();
foreach($_POST as $key => $value) {
$array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}
foreach($array as $id) {
foreach($id as $key => $value) { /* $key is de veldnaam $value is de waarde uit het veld */
if ($key == 'txtId' ) { echo $key.'='.$value; $updId = $value;}
if ($key == 'txtDierdm' ) { echo $key.'='.$value; $txtDag = $value; }
if ($key == 'kzlAfnmr') { echo $key.'='.$value."<br/>"; $updRelatie = $value; }
if ($key == 'chbSkip' ) { echo $key.'='.$value."<br/>"; $updSkip = $value; }
}
// Hier allerlei bewerkingen met variabelen $updId, $txtDag, $updRelatie en GRAAG OOK MET $updSkip !!!
} ?>
function getNameFromKey($key) {
$array = explode('_', $key);
return $array[0];
}
function getIdFromKey($key) {
$array = explode('_', $key);
return $array[1];
}
$array = array();
foreach($_POST as $key => $value) {
$array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}
foreach($array as $id) {
foreach($id as $key => $value) { /* $key is de veldnaam $value is de waarde uit het veld */
if ($key == 'txtId' ) { echo $key.'='.$value; $updId = $value;}
if ($key == 'txtDierdm' ) { echo $key.'='.$value; $txtDag = $value; }
if ($key == 'kzlAfnmr') { echo $key.'='.$value."<br/>"; $updRelatie = $value; }
if ($key == 'chbSkip' ) { echo $key.'='.$value."<br/>"; $updSkip = $value; }
}
// Hier allerlei bewerkingen met variabelen $updId, $txtDag, $updRelatie en GRAAG OOK MET $updSkip !!!
} ?>
</code>
Dit is het resultaat :
txtId=4 txtDierdm=01-12-2014 kzlAfnmr=
txtId=5 txtDierdm=01-12-2014 kzlAfnmr=2152444 chbSkip=1
txtId=6 txtDierdm=01-12-2015 kzlAfnmr=1058721 chbSkip=1
txtId=7 txtDierdm= kzlAfnmr=1058721
txtId=8 txtDierdm=01-12-2014 kzlAfnmr=1058721
txtId=9 txtDierdm=01-12-2014 kzlAfnmr=2152444
Als een tekstveld of keuzelijst leeg is wordt toch de naam van het veld getoond, zie resultaat. Echter niet als het veld een checkbox is dat niet is aangevinkt. Van de 5 regels in het from heb ik twee checkboxen aangevinkt. Het resultaat is terug te vinden achter txtId 5 en 6.
Is een checkbox niet aangevinkt wil ik toch een waarde kunnen posten. Nl. de waarde 0.
Sterker nog in mijn voorbeeld blijft de variabele $updSkip vanaf txtId 6 de waarde 1 houden waardoor Id 7 t/m 9 ook de waarde 1 mee krijgen.
Weet iemand hoe ik in mijn code ook een lege checkbox kan posten.
Of weet iemand hoe ik met 1 submit meerdere regels krijg gewijzigd incl. lege checkboxen ?
Gewijzigd op 21/04/2015 22:25:06 door Bas van de Ven
Bas van de Ven op 21/04/2015 21:43:50:
Echter niet als het veld een checkbox is dat niet is aangevinkt.
Een checkbox die niet is aangevinkt wordt niet meeverzonden.
Toevoeging op 21/04/2015 21:57:42:
<code>
Code (php)
1
2
3
4
2
3
4
</code>
Gewijzigd op 21/04/2015 22:06:48 door Bas van de Ven
- elk item een radiobutton geven (melden: (o) ja (o) nee)
- dat je items kunt slepen tussen twee (select) lijsten oid
Niet aangevinkte checkboxen worden in het geheel niet verstuurd, dus die zijn in dit geval niet zo handig omdat de "niet-aangevinkte-toestand" ook betekenis heeft.
EDIT: het is trouwens prima mogelijk om meerdimensionale arrays in je formuliervelden te stoppen, dus je hoeft deze niet na afloop te gaan verbouwen, je kunt deze meteen in de goede vorm in je formulier stoppen volgens mij.
Gewijzigd op 21/04/2015 22:07:11 door Thomas van den Heuvel
Toevoeging op 21/04/2015 22:16:13:
Hmm ... kun je je Edit toelichten met wat code. Of wordt dat te uitgebreid ?
Ook een idee: stuur een hidden veld mee met alle id's, en vergelijk dat dan met de aangevinkte checkboxen. Maar dat is een beetje een gekunstelde oplossing als je het mij vraagt.
Code (php)
In het kader van performance verbetering (waar ik last van heb bij het opbouwen van het formulier) had ik gehoopt een oplossing te vinden in array veldnamen.
Code (php)
1
2
2
<input type = "hidden" name = "chbSkip[]" value = 0 >
<input type = "checkbox" name = "chbSkip[]" value = 1 >
<input type = "checkbox" name = "chbSkip[]" value = 1 >
Ook daar loop ik aan tegen het probleem dat checkboxen niet bestaan na posten als deze op dat moment leeg zijn. Bovendien werkt de oplossing met een hidden veld niet bij array velden.
Daarom heb ik me verdiept in meerdimensionale array's maar kan niet volgen of daar een oplossing ligt voor mijn probleem.
Mijn bovenstaande code is ongewijzigd. De formulier velden zien er nu zo uit. Overtollige code heb ik weer verwijderd om het zo begrijpbaar mogelijk te houden.
<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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
<tr>
<td> <!--meldId:--> <input type= "hidden" echo "name=\"txtId_$Id\" value = $Id"; > </td>
<td> <input type = "text" name = echo " \"txtDierdm_$Id\" value = $date "; > </td>
<td>
<!-- KZLAFNEMER -->
<select echo "name=\"kzlAfnmr_$Id\" "; value = "" >
<option></option>
// **** Opbouw keuze lijst Afnemer uit de database ****
// EINDE KZLAFNEMER
</select>
}
</td>
<td>
<input type = "hidden" name = echo " \"chbSkip_$Id\" "; value = 0 >
<input type = "checkbox" name = echo "chbSkip_$Id" ; value = 1 >
</td>
</tr> ?>
<tr>
<td> <!--meldId:--> <input type= "hidden" echo "name=\"txtId_$Id\" value = $Id"; > </td>
<td> <input type = "text" name = echo " \"txtDierdm_$Id\" value = $date "; > </td>
<td>
<!-- KZLAFNEMER -->
<select echo "name=\"kzlAfnmr_$Id\" "; value = "" >
<option></option>
// **** Opbouw keuze lijst Afnemer uit de database ****
// EINDE KZLAFNEMER
</select>
}
</td>
<td>
<input type = "hidden" name = echo " \"chbSkip_$Id\" "; value = 0 >
<input type = "checkbox" name = echo "chbSkip_$Id" ; value = 1 >
</td>
</tr> ?>
</code>
Gewijzigd op 27/04/2015 14:57:16 door Bas van de Ven
eerdere reactie nog de meest "cleane" oplossing denk ik.
Hieronder een proof-of-concept:
Als je niet na afloop op een of andere manier kunt bepalen welke items er mogelijk allemaal zijn (dmv een query ofzo), dan is optie #1 uit mijn Hieronder een proof-of-concept:
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
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
<?php
header('Content-Type: text/html; charset=UTF-8');
// helper function
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Checkbox test</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
?><pre><?php echo print_r(array_map('escape', $_POST['cb']), true) ?></pre>
<hr /><?php
}
?>
<form id="theForm" action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="post">
<p><input type="checkbox" name="cb[0]" id="cb_1" value="1" /> <label for="cb_1">first</label></p>
<p><input type="checkbox" name="cb[1]" id="cb_2" value="1" /> <label for="cb_2">second</label></p>
<p><input type="checkbox" name="cb[2]" id="cb_3" value="1" /> <label for="cb_3">third</label></p>
<p><input type="checkbox" name="cb[3]" id="cb_4" value="1" /> <label for="cb_4">fourth</label></p>
<p><input type="checkbox" name="cb[4]" id="cb_5" value="1" /> <label for="cb_5">fifth</label></p>
<button type="submit">submit</button>
</form>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
$('#theForm').submit(function(e) {
// inspect all checkboxes starting with cb
$('input[name^=cb]').each(function() {
if ($(this).is(':checked') === false) {
// update value to 0
$(this).val('0');
// check them anyway so they are posted
$(this).prop('checked', true);
}
});
});
});
//]]>
</script>
</body>
</html>
header('Content-Type: text/html; charset=UTF-8');
// helper function
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Checkbox test</title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
?><pre><?php echo print_r(array_map('escape', $_POST['cb']), true) ?></pre>
<hr /><?php
}
?>
<form id="theForm" action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="post">
<p><input type="checkbox" name="cb[0]" id="cb_1" value="1" /> <label for="cb_1">first</label></p>
<p><input type="checkbox" name="cb[1]" id="cb_2" value="1" /> <label for="cb_2">second</label></p>
<p><input type="checkbox" name="cb[2]" id="cb_3" value="1" /> <label for="cb_3">third</label></p>
<p><input type="checkbox" name="cb[3]" id="cb_4" value="1" /> <label for="cb_4">fourth</label></p>
<p><input type="checkbox" name="cb[4]" id="cb_5" value="1" /> <label for="cb_5">fifth</label></p>
<button type="submit">submit</button>
</form>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
$('#theForm').submit(function(e) {
// inspect all checkboxes starting with cb
$('input[name^=cb]').each(function() {
if ($(this).is(':checked') === false) {
// update value to 0
$(this).val('0');
// check them anyway so they are posted
$(this).prop('checked', true);
}
});
});
});
//]]>
</script>
</body>
</html>