multidimensional array convert
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
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
echo '<form action="'.$baseHref.'actions/functions.php" method="post">
<input type="hidden" name="action" value="invullenEnquette">
<input type="hidden" name="pagina" value="'.$pagina.'">
<input type="hidden" name="permission" value="'.$userPermission.'">
<input type="hidden" name="userid" value="'.$userId.'">
<input type="hidden" name="secretkey" value="'.$sectetKeyUsers.'">
<input type="hidden" name="basehref" value="'.$baseHref.'">';
$status = 1;
$sql_vraag = "SELECT * FROM enquette_vragen WHERE status = :status ORDER BY positie ASC";
$stmt_vraag = $pdo->prepare($sql_vraag);
$stmt_vraag->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_vraag->execute();
$result_vraag = $stmt_vraag->fetchAll();
foreach($result_vraag as $row_vraag){
echo '<div class="media_box " id="row-'.$row_vraag['id'].'">';
echo '<label>'.$row_vraag['vraag'].'</label><br/>';
$vraag_id = $row_vraag['id'];
$vraag_soort = $row_vraag['soort'];
switch($vraag_soort){
case 1:
echo '<input type="text" name="vr_'.$vraag_id.'" class="form-control"><br/>';
break;
case 2:
$sql_soort = "SELECT * FROM enquette_vragen_soort WHERE status = :status AND enquette_vraag_id = :enquette_vraag_id";
$stmt_soort = $pdo->prepare($sql_soort);
$stmt_soort->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_soort->bindParam(':enquette_vraag_id', $vraag_id, PDO::PARAM_STR);
$stmt_soort->execute();
$result_soort = $stmt_soort->fetchAll();
foreach($result_soort as $row_soort){
echo '<input type="checkbox" name="vr_'.$vraag_id.'[]" value="vr_soort_'.$row_soort['id'].'"> '.$row_soort['optie'].'<br>';
}
break;
case 3:
$sql_soort = "SELECT * FROM enquette_vragen_soort WHERE status = :status AND enquette_vraag_id = :enquette_vraag_id";
$stmt_soort = $pdo->prepare($sql_soort);
$stmt_soort->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_soort->bindParam(':enquette_vraag_id', $vraag_id, PDO::PARAM_STR);
$stmt_soort->execute();
$result_soort = $stmt_soort->fetchAll();
foreach($result_soort as $row_soort){
echo '<input type="radio" name="vr_'.$vraag_id.'" value="'.$row_soort['id'].'"> '.$row_soort['optie'].'<br>';
}
break;
}
echo '<hr></hr>';
echo '</div>';
}
echo '<input type="submit" value="Opslaan">';
echo '</form>';
<input type="hidden" name="action" value="invullenEnquette">
<input type="hidden" name="pagina" value="'.$pagina.'">
<input type="hidden" name="permission" value="'.$userPermission.'">
<input type="hidden" name="userid" value="'.$userId.'">
<input type="hidden" name="secretkey" value="'.$sectetKeyUsers.'">
<input type="hidden" name="basehref" value="'.$baseHref.'">';
$status = 1;
$sql_vraag = "SELECT * FROM enquette_vragen WHERE status = :status ORDER BY positie ASC";
$stmt_vraag = $pdo->prepare($sql_vraag);
$stmt_vraag->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_vraag->execute();
$result_vraag = $stmt_vraag->fetchAll();
foreach($result_vraag as $row_vraag){
echo '<div class="media_box " id="row-'.$row_vraag['id'].'">';
echo '<label>'.$row_vraag['vraag'].'</label><br/>';
$vraag_id = $row_vraag['id'];
$vraag_soort = $row_vraag['soort'];
switch($vraag_soort){
case 1:
echo '<input type="text" name="vr_'.$vraag_id.'" class="form-control"><br/>';
break;
case 2:
$sql_soort = "SELECT * FROM enquette_vragen_soort WHERE status = :status AND enquette_vraag_id = :enquette_vraag_id";
$stmt_soort = $pdo->prepare($sql_soort);
$stmt_soort->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_soort->bindParam(':enquette_vraag_id', $vraag_id, PDO::PARAM_STR);
$stmt_soort->execute();
$result_soort = $stmt_soort->fetchAll();
foreach($result_soort as $row_soort){
echo '<input type="checkbox" name="vr_'.$vraag_id.'[]" value="vr_soort_'.$row_soort['id'].'"> '.$row_soort['optie'].'<br>';
}
break;
case 3:
$sql_soort = "SELECT * FROM enquette_vragen_soort WHERE status = :status AND enquette_vraag_id = :enquette_vraag_id";
$stmt_soort = $pdo->prepare($sql_soort);
$stmt_soort->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_soort->bindParam(':enquette_vraag_id', $vraag_id, PDO::PARAM_STR);
$stmt_soort->execute();
$result_soort = $stmt_soort->fetchAll();
foreach($result_soort as $row_soort){
echo '<input type="radio" name="vr_'.$vraag_id.'" value="'.$row_soort['id'].'"> '.$row_soort['optie'].'<br>';
}
break;
}
echo '<hr></hr>';
echo '</div>';
}
echo '<input type="submit" value="Opslaan">';
echo '</form>';
Met het volgende script wordt het formulier uitgelezen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$status = 1;
$sql_vraag = "SELECT * FROM enquette_vragen WHERE status = :status";
$stmt_vraag = $pdo->prepare($sql_vraag);
$stmt_vraag->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_vraag->execute();
$result_vraag = $stmt_vraag->fetchAll();
foreach($result_vraag as $row_vraag){
echo $row_vraag['id'].'<br/>';
if($row_vraag['soort'] == 1){
foreach($_POST as $key => $value) {
echo "POST parameter '$key' has '$value'<br/>";
}
}
}
print_r($_POST);
$sql_vraag = "SELECT * FROM enquette_vragen WHERE status = :status";
$stmt_vraag = $pdo->prepare($sql_vraag);
$stmt_vraag->bindParam(':status', $status, PDO::PARAM_STR);
$stmt_vraag->execute();
$result_vraag = $stmt_vraag->fetchAll();
foreach($result_vraag as $row_vraag){
echo $row_vraag['id'].'<br/>';
if($row_vraag['soort'] == 1){
foreach($_POST as $key => $value) {
echo "POST parameter '$key' has '$value'<br/>";
}
}
}
print_r($_POST);
Uit de print_r($POST) komt de volgende array:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Array
(
[action] => invullenEnquette
[pagina] => dashbord
[permission] => 3
[userid] => 5
[secretkey] => 0a30ab684ffa8bc0d54e53617d99dd93
[basehref] => http://localhost/BenJijDeMol/
[vr_18] => Array
(
[0] => vr_soort_8
[1] => vr_soort_10
)
[vr_19] => 6
[vr_29] => 20
)
(
[action] => invullenEnquette
[pagina] => dashbord
[permission] => 3
[userid] => 5
[secretkey] => 0a30ab684ffa8bc0d54e53617d99dd93
[basehref] => http://localhost/BenJijDeMol/
[vr_18] => Array
(
[0] => vr_soort_8
[1] => vr_soort_10
)
[vr_19] => 6
[vr_29] => 20
)
Bij de echo van "POST parameter '$key' has '$value' komt er een error in mijn scherm te staan:
Notice: Array to string conversion in .... on line 197.
Ik heb echt geen idee hoe ik deze array zo kan aan passen dat ik de vraagnummers kan vergelijken met de nummers uit mijn database om de antwoorden te inserten in een tabel voor de antwoorden.
Zo te zien gaat het fout bij [vr_18] als key.
Dat is een array() en geen string.
Die moet je dus ook weer doorlopen met een foreach().
Dat ik vr_18 nog een keer moet doorlopen met een foreach had ik al gelezen op internet. Maar mijn enquette kan via een formulier worden aangemaakt.Ik weet van tevoren niet welke vraag ik twee keer met een foreach moet doorlopen. Het kan ook zo zijn dat er meerdere vragen tussen zitten die met een foreach moet doorlopen. In mijn database heb ik in een tabel wel staan wat voor soort vraag het is en kan ik uitlezen welke vragen een checkbox bevatten.
is_array() functie...
Toevoeging op 24/05/2015 10:59:09:
Of je zet dat veld STANDAARD in een array..
Maar het lijkt me toch handiger als je aan enige identificatie doet van het aangeboden.
Klein voorbeeldje:
Stel vraag 18 is een multiplechoice vraag en vraag 19 is een open vraag.
Je kunt met formulieren de mooiste arrays maken.
bijv:
Probeer maar eens te posten en dan met een print_r
Toevoeging op 24/05/2015 11:34:46:
Antwoord:
Toevoeging op 24/05/2015 11:39:35:
Uiteraard kun je van bepaalde formfields hidden fields maken.
even testen van te voren met de Toevoeging op 24/05/2015 10:59:09:
Of je zet dat veld STANDAARD in een array..
Maar het lijkt me toch handiger als je aan enige identificatie doet van het aangeboden.
Klein voorbeeldje:
Stel vraag 18 is een multiplechoice vraag en vraag 19 is een open vraag.
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
Array
(
[0] => Array
(
[id] => 18
[type] => multiplechoice
[answers] => Array
(
[0] => bananen
[1] => appelen
)
)
[1] => Array
(
[id] => 19
[type] => open
[answers] => Array
(
[0] => 6
)
)
)
(
[0] => Array
(
[id] => 18
[type] => multiplechoice
[answers] => Array
(
[0] => bananen
[1] => appelen
)
)
[1] => Array
(
[id] => 19
[type] => open
[answers] => Array
(
[0] => 6
)
)
)
Je kunt met formulieren de mooiste arrays maken.
bijv:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<form method="post">
<input type="text" name="questions[0][id]" value="12"/></br>
<input type="text" name="questions[0][type]" value="multiplechoice"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord A"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord B"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord C"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord D"/></br>
<input type="text" name="questions[1][id]" value="13"/></br>
<input type="text" name="questions[1][type]" value="open"/></br>
<input type="text" name="questions[1][answer][]" value="antwoord A"/></br>
<button type="submit">Test</button>
</form>
<input type="text" name="questions[0][id]" value="12"/></br>
<input type="text" name="questions[0][type]" value="multiplechoice"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord A"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord B"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord C"/></br>
<input type="text" name="questions[0][answer][]" value="antwoord D"/></br>
<input type="text" name="questions[1][id]" value="13"/></br>
<input type="text" name="questions[1][type]" value="open"/></br>
<input type="text" name="questions[1][answer][]" value="antwoord A"/></br>
<button type="submit">Test</button>
</form>
Probeer maar eens te posten en dan met een print_r
Toevoeging op 24/05/2015 11:34:46:
Antwoord:
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
Array
(
[questions] => Array
(
[0] => Array
(
[id] => 12
[type] => multiplechoice
[answer] => Array
(
[0] => antwoord A
[1] => antwoord B
[2] => antwoord C
[3] => antwoord D
)
)
[1] => Array
(
[id] => 13
[type] => open
[answer] => Array
(
[0] => antwoord A
)
)
)
)
(
[questions] => Array
(
[0] => Array
(
[id] => 12
[type] => multiplechoice
[answer] => Array
(
[0] => antwoord A
[1] => antwoord B
[2] => antwoord C
[3] => antwoord D
)
)
[1] => Array
(
[id] => 13
[type] => open
[answer] => Array
(
[0] => antwoord A
)
)
)
)
Toevoeging op 24/05/2015 11:39:35:
Uiteraard kun je van bepaalde formfields hidden fields maken.
Gewijzigd op 24/05/2015 11:37:58 door Frank Nietbelangrijk
heel erg bedankt, mijn script werkt nu zoals ik wil