checkbox waarde "vast" laten houden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mar kla

mar kla

23/07/2013 20:17:13
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2" checked>Bek';


IK ben zover gekomen :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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 ';'
 
PHP hulp

PHP hulp

22/01/2021 16:48:34
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/07/2013 21:21:53
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
Gewijzigd op 23/07/2013 22:20:02 door Frank Nietbelangrijk
 
Jules Kreutzer

Jules Kreutzer

23/07/2013 22:27:55
Quote Anchor link
Moet achter je if($_POST['arrayValue[]']) geen ;??

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2"' if($_POST['arrayValue[]']); echo "checked"' />Bek';
 
Erwin H

Erwin H

23/07/2013 22:35:54
Quote Anchor link
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.
 
Mar kla

mar kla

23/07/2013 23:00:39
Quote Anchor link
dat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($_POST['arrayValue[]'])
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.
 
Erwin H

Erwin H

23/07/2013 23:15:11
Quote Anchor link
Dat if statement is niets mis mee, maar je kan dat niet zo midden in een string plaatsen.
 
- SanThe -

- SanThe -

23/07/2013 23:15:47
Quote Anchor link
Die geeft een array in $_POST.
name="arrayValue[]"

Is dat de bedoeling?
Je weet nu niet welke waarde bij welke checkbox hoort.
 
Mar kla

mar kla

23/07/2013 23:26:10
Quote Anchor link
@SanThe

De primaire bedoeling is dat de gekozen checkboxen na de submit aangevinkt blijven.
 
- SanThe -

- SanThe -

23/07/2013 23:36:22
Quote Anchor link
Dat snap ik, maar waarom gebruik je een array?
 
Mar kla

mar kla

23/07/2013 23:44:21
Quote Anchor link
Nou wordt het voor mij een beetje moeilijk

maar wat ik doe is de value van de checkboxen zet ik in een array
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$checkBoxValue = join(", ", $_POST['arrayValue']);;


om die dan weer in een select statement
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
AND
    gt.gametype IN ($checkBoxValue)


mee te geven.

is dit het antwoord op je vraag of begrijp ik je verkeerd?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

23/07/2013 23:45:10
Quote Anchor link
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
 
Mar kla

mar kla

23/07/2013 23:52:26
Quote Anchor link
de keuzeopties zijn overigens zeer beperkt.

te weten:
com met value =1
bek met value =2
oef met value =3
eur met value =4
 
- SanThe -

- SanThe -

23/07/2013 23:59:43
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo'<input type="checkbox" name="arrayValue[]" id="bek" value="2"' . (isset($_POST['arrayValue']) and in_array(2, $_POST['arrayValue']) ? ' checked' : '') . '/>Bek';
?>
 
Mar kla

mar kla

24/07/2013 00:13:21
Quote Anchor link
@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)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
?>
Gewijzigd op 24/07/2013 00:14:09 door mar kla
 
Kris Peeters

Kris Peeters

24/07/2013 11:34:05
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 '';
}

?>
 
Mar kla

mar kla

24/07/2013 12:13:24
Quote Anchor link
YES!!! dat is hem helemaal top :-)))

Iedereen wederom bedankt voor het meedenken en samenwerken.
Gewijzigd op 24/07/2013 12:13:41 door mar kla
 
- SanThe -

- SanThe -

24/07/2013 12:24:22
Quote Anchor link
@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.
 
Mar kla

mar kla

24/07/2013 12:28:49
Quote Anchor link
@San

kan dat misschien iets met de php versie op de server te maken hebben of misschien de gebruikte browser?
 
- SanThe -

- SanThe -

24/07/2013 12:31:25
Quote Anchor link
Volgens mij zou het gewoon moeten werken.
 
Mar kla

mar kla

24/07/2013 12:34:16
Quote Anchor link
Dan is het inderdaad dus vreemd dat jou oplosing bij mij niet werkt :-?

Maar ik ben voor nu weer heel erg geholpen.
 
Kris Peeters

Kris Peeters

24/07/2013 12:34:45
Quote Anchor link
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
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.