checkbox waarde "vast" laten houden
maar na een submit staan ze allemaal weer in de default waarde die in het form is gedefinieerd.
Ik wil graag dat de gekozen waarde "vast" blijft staan zodat het rsultaat een de aangevinkt checkboxen overeenkomen.
Dit is één van de checkbox regels.
IK ben zover gekomen :
Code (php)
1
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2"' if($_POST['arrayValue[]']) echo "checked"' />Bek';
maar dan krijg ik de fout melding syntax error, unexpected T_IF, expecting ',' or ';'
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
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
<?php
/*
functie die voor ons de HTML aanmaakt voor de checkboxen die we willen zien
$checkboxes is een array met teksten die we voor de checkbox willen zien
$checkedFields is ook een lijst van teksten maar dan van diegene waarvan we willen dat de checkbox 'checked' is.
*/
function getCheckboxes($checkboxes, $checkedFields)
{
$html = '';
// we lopen de items in de array $checkboxes één voor één door en geven het item dat aan de beurt is de naam $value
foreach($checkboxes as $value)
{
$checked = '';
// als $value in de array $checkedFields voorkomt dan willen we de checkbox checked hebben
if(in_array($value, $checkedFields))
$checked=' checked="checked"';
// maak de html aan voor deze checkbox en voeg dat aan de $html string toe.
$html .= '<input type="checkbox" name="arrayValue[]" id="' . $value . '" value="' .
$value . '"' . $checked . ' /><label for="' . $value . '">'. $value . '</label><br/>' . "\n";
}
// geef met het verlaten van de functie de $html mee terug
return $html;
}
// de array met checkboxen die we willen zien
$checkboxes = array('bek', 'poot', 'staart');
// de array $checkedFields = in eerste instantie een lege array
$checkedFields = array();
// als de request method POST is dan is het formulier blijkbaar naar ons verzonden
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// dump de $_POST array zodat we even kunnen spieken wat de inhoud is
print_r($_POST);
// als de variable $_POST['arrayValue'] bestaat dan kopieren we die in $checkedFields
if(isset($_POST['arrayValue']))
{
$checkedFields = $_POST['arrayValue'];
}
}
?>
<form action="" method="post" >
<?php echo getCheckboxes($checkboxes, $checkedFields); ?>
<button>Verzenden</button>
</form>
/*
functie die voor ons de HTML aanmaakt voor de checkboxen die we willen zien
$checkboxes is een array met teksten die we voor de checkbox willen zien
$checkedFields is ook een lijst van teksten maar dan van diegene waarvan we willen dat de checkbox 'checked' is.
*/
function getCheckboxes($checkboxes, $checkedFields)
{
$html = '';
// we lopen de items in de array $checkboxes één voor één door en geven het item dat aan de beurt is de naam $value
foreach($checkboxes as $value)
{
$checked = '';
// als $value in de array $checkedFields voorkomt dan willen we de checkbox checked hebben
if(in_array($value, $checkedFields))
$checked=' checked="checked"';
// maak de html aan voor deze checkbox en voeg dat aan de $html string toe.
$html .= '<input type="checkbox" name="arrayValue[]" id="' . $value . '" value="' .
$value . '"' . $checked . ' /><label for="' . $value . '">'. $value . '</label><br/>' . "\n";
}
// geef met het verlaten van de functie de $html mee terug
return $html;
}
// de array met checkboxen die we willen zien
$checkboxes = array('bek', 'poot', 'staart');
// de array $checkedFields = in eerste instantie een lege array
$checkedFields = array();
// als de request method POST is dan is het formulier blijkbaar naar ons verzonden
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// dump de $_POST array zodat we even kunnen spieken wat de inhoud is
print_r($_POST);
// als de variable $_POST['arrayValue'] bestaat dan kopieren we die in $checkedFields
if(isset($_POST['arrayValue']))
{
$checkedFields = $_POST['arrayValue'];
}
}
?>
<form action="" method="post" >
<?php echo getCheckboxes($checkboxes, $checkedFields); ?>
<button>Verzenden</button>
</form>
Gewijzigd op 23/07/2013 22:20:02 door Frank Nietbelangrijk
Dus:
Nee natuurlijk.... Een ; sluit een statement af. Het probleem hier is dat TS een if statement in een string wil stoppen en dat kan natuurlijk helemaal niet.
heb ik in diverse variaties via verschrillende zoekopdrachten op internet gevonden. Daarbij stond dat het werkte maar dus niet bij mij
ik ga nu de post van Frank Nietbelangrijk proberen te bergijpen.
Dat if statement is niets mis mee, maar je kan dat niet zo midden in een string plaatsen.
name="arrayValue[]"
Is dat de bedoeling?
Je weet nu niet welke waarde bij welke checkbox hoort.
De primaire bedoeling is dat de gekozen checkboxen na de submit aangevinkt blijven.
Dat snap ik, maar waarom gebruik je een array?
maar wat ik doe is de value van de checkboxen zet ik in een array
om die dan weer in een select statement
mee te geven.
is dit het antwoord op je vraag of begrijp ik je verkeerd?
Toevoeging op 23/07/2013 23:51:46:
haha mar komt net met het feit dat ze het in een database wil zetten
te weten:
com met value =1
bek met value =2
oef met value =3
eur met value =4
hier is de code zoals ik die nu gebruik (excuus voor alle echo's maar daar door kanik het zelf een beetje beter lezen en begrijpen)
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
echo'<form action="" method="post" >';
echo'<tr bgcolor=#006400 height="45">';
echo'<td align="center" colspan="10" ><strong> Kies het type wedstrijd : ';
echo'<input type="checkbox" name="arrayValue[]" id="com" value="1"' . (isset($_POST['arrayValue']) and in_array(1, $_POST['arrayValue']) ? ' checked' : '') . '/>Com';
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2"' . (isset($_POST['arrayValue']) and in_array(2, $_POST['arrayValue']) ? ' checked' : '') . '/>Bek';
echo'<input type="checkbox" name="arrayValue[]" id="oef" value="3"' . (isset($_POST['arrayValue']) and in_array(3, $_POST['arrayValue']) ? ' checked' : '') . '/>Oef';
echo'<input type="checkbox" name="arrayValue[]" id="eur" value="4"' . (isset($_POST['arrayValue']) and in_array(4, $_POST['arrayValue']) ? ' checked' : '') . '/>Eur';
echo'<button>Verzenden</button>';
echo'</strong>';
echo'</td>';
echo'</tr>';
if ( $_POST['arrayValue'] )
{
$checkBoxValue = join(", ", $_POST['arrayValue']);;
} else {
$checkBoxValue = 1;
}
echo'</form>';
?>
echo'<form action="" method="post" >';
echo'<tr bgcolor=#006400 height="45">';
echo'<td align="center" colspan="10" ><strong> Kies het type wedstrijd : ';
echo'<input type="checkbox" name="arrayValue[]" id="com" value="1"' . (isset($_POST['arrayValue']) and in_array(1, $_POST['arrayValue']) ? ' checked' : '') . '/>Com';
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2"' . (isset($_POST['arrayValue']) and in_array(2, $_POST['arrayValue']) ? ' checked' : '') . '/>Bek';
echo'<input type="checkbox" name="arrayValue[]" id="oef" value="3"' . (isset($_POST['arrayValue']) and in_array(3, $_POST['arrayValue']) ? ' checked' : '') . '/>Oef';
echo'<input type="checkbox" name="arrayValue[]" id="eur" value="4"' . (isset($_POST['arrayValue']) and in_array(4, $_POST['arrayValue']) ? ' checked' : '') . '/>Eur';
echo'<button>Verzenden</button>';
echo'</strong>';
echo'</td>';
echo'</tr>';
if ( $_POST['arrayValue'] )
{
$checkBoxValue = join(", ", $_POST['arrayValue']);;
} else {
$checkBoxValue = 1;
}
echo'</form>';
?>
Gewijzigd op 24/07/2013 00:14:09 door mar kla
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
echo'<form action="" method="post" >';
echo'<tr bgcolor=#006400 height="45">';
echo'<td align="center" colspan="10" ><strong> Kies het type wedstrijd : ';
echo'<input type="checkbox" name="arrayValue[]" id="com" value="1"' . check_box(1) . '/>Com';
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2"' . check_box(2) . '/>Bek';
echo'<input type="checkbox" name="arrayValue[]" id="oef" value="3"' . check_box(3) . '/>Oef';
echo'<input type="checkbox" name="arrayValue[]" id="eur" value="4"' . check_box(4) . '/>Eur';
echo'<button>Verzenden</button>';
echo'</strong>';
echo'</td>';
echo'</tr>';
echo'</form>';
function check_box($val) {
if (isset($_POST['arrayValue']) && in_array($val, $_POST['arrayValue'])) {
return ' checked="checked" ';
}
return '';
}
?>
echo'<form action="" method="post" >';
echo'<tr bgcolor=#006400 height="45">';
echo'<td align="center" colspan="10" ><strong> Kies het type wedstrijd : ';
echo'<input type="checkbox" name="arrayValue[]" id="com" value="1"' . check_box(1) . '/>Com';
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2"' . check_box(2) . '/>Bek';
echo'<input type="checkbox" name="arrayValue[]" id="oef" value="3"' . check_box(3) . '/>Oef';
echo'<input type="checkbox" name="arrayValue[]" id="eur" value="4"' . check_box(4) . '/>Eur';
echo'<button>Verzenden</button>';
echo'</strong>';
echo'</td>';
echo'</tr>';
echo'</form>';
function check_box($val) {
if (isset($_POST['arrayValue']) && in_array($val, $_POST['arrayValue'])) {
return ' checked="checked" ';
}
return '';
}
?>
Iedereen wederom bedankt voor het meedenken en samenwerken.
Gewijzigd op 24/07/2013 12:13:41 door mar kla
Ik heb die van jou getest met return ' checked="checked" '; en ook alleen met return ' checked ';
Maar dat maakt geen verschil. Beiden doen het.
kan dat misschien iets met de php versie op de server te maken hebben of misschien de gebruikte browser?
Volgens mij zou het gewoon moeten werken.
Maar ik ben voor nu weer heel erg geholpen.
De operator volgorde die "and" en "?" of zo.
Maar ik zag geen reden om dit niet in een functie te steken