checkbox waarde "vast" laten houden
Voor mijn website geef ik de bezoekers de mogelijkheid om via checkboxen de data die ze willen zit te "filteren'
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 :
maar dan krijg ik de fout melding syntax error, unexpected T_IF, expecting ',' or ';'
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 ';'
Dit voorbeeld stond gisteren eigenlijk ook al op het forum maar was toen een multiselect (een selectbox waar je meer dan één item kunt kiezen). Maar goed omdat het vakantie is komt ie hier op maat voor de checkboxen.
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
Moet achter je if($_POST['arrayValue[]']) geen ;??
Dus:
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.
dat
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.
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.
Die geeft een array in $_POST.
name="arrayValue[]"
Is dat de bedoeling?
Je weet nu niet welke waarde bij welke checkbox hoort.
name="arrayValue[]"
Is dat de bedoeling?
Je weet nu niet welke waarde bij welke checkbox hoort.
@SanThe
De primaire bedoeling is dat de gekozen checkboxen na de submit aangevinkt blijven.
De primaire bedoeling is dat de gekozen checkboxen na de submit aangevinkt blijven.
Dat snap ik, maar waarom gebruik je een array?
Nou wordt het voor mij een beetje moeilijk
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?
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?
San, dat is toch logisch.. als je een lusje maakt die alle opties uit een database laat zien dan wil je dat de code werkt ook als er een optie bij komt.
Toevoeging op 23/07/2013 23:51:46:
haha mar komt net met het feit dat ze het in een database wil zetten
Toevoeging op 23/07/2013 23:51:46:
haha mar komt net met het feit dat ze het in een database wil zetten
de keuzeopties zijn overigens zeer beperkt.
te weten:
com met value =1
bek met value =2
oef met value =3
eur met value =4
te weten:
com met value =1
bek met value =2
oef met value =3
eur met value =4
@San die is een stuk korter. alleen blijven de checkboxen niet aangevinkt staan.
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)
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 '';
}
?>
YES!!! dat is hem helemaal top :-)))
Iedereen wederom bedankt voor het meedenken en samenwerken.
Iedereen wederom bedankt voor het meedenken en samenwerken.
Gewijzigd op 24/07/2013 12:13:41 door mar kla
@Kris: Waarom doet ie het van jou wel en die van Mar Kla (met mijn oplossing) niet?
Ik heb die van jou getest met return ' checked="checked" '; en ook alleen met return ' checked ';
Maar dat maakt geen verschil. Beiden doen het.
Ik heb die van jou getest met return ' checked="checked" '; en ook alleen met return ' checked ';
Maar dat maakt geen verschil. Beiden doen het.
@San
kan dat misschien iets met de php versie op de server te maken hebben of misschien de gebruikte browser?
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.
Dan is het inderdaad dus vreemd dat jou oplosing bij mij niet werkt :-?
Maar ik ben voor nu weer heel erg geholpen.
Maar ik ben voor nu weer heel erg geholpen.
Het was me eigenlijk ook niet zo duidelijk. Ik veronderstel dat het strategisch plaatsen van extra ronde haakjes zou geholpen hebben.
De operator volgorde die "and" en "?" of zo.
Maar ik zag geen reden om dit niet in een functie te steken
De operator volgorde die "and" en "?" of zo.
Maar ik zag geen reden om dit niet in een functie te steken




