checkbox
Ik heb dus een pagina wat een map uitleest van een gebruiker qua .jpg's. Die jpg's komen in een lus en onder elke foto komt een input checkbox, select box en een text field.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
echo '
<input type="checkbox" name="fotos[]" value="'.$file.'">
<select name="formaat[]">
<option value="21x30">21x30
<option value="10x15">10x15
<option value="7x12">7x12
<option value="4x6">4x6
</select>
Aantal:<input size="1" type="text" name="aantal[]" value="1"'>
';
?>
echo '
<input type="checkbox" name="fotos[]" value="'.$file.'">
<select name="formaat[]">
<option value="21x30">21x30
<option value="10x15">10x15
<option value="7x12">7x12
<option value="4x6">4x6
</select>
Aantal:<input size="1" type="text" name="aantal[]" value="1"'>
';
?>
De form (waarin de input's staan) heeft de actie factuur.php. Factuur.php moet een overzicht gaan geven van wat is AANGEVINKT met de checkbox, dus zoals de checkbox niet is aangevinkt komen: de fotonaam, formaat en aantallen NIET in de $_SESSION['bestel'] array. Zowel, dan wel!
Ik heb al iets wat werkt qua overzicht alleen die werkt niet als je er bijvoorbeeld 1 overslaat, dan fucktie heel de array :(
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
for ($i = 0; $i < 5; $i++) // even handmatig 5 ingevuld, er zijn namelijk 5 foto's aanwezig in de map van de gebruiker
{
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos'][$i],
"formaat" => $_POST['formaat'][$i],
"aantal" => $_POST['aantal'][$i]
);
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
for ($i = 0; $i < 5; $i++) // even handmatig 5 ingevuld, er zijn namelijk 5 foto's aanwezig in de map van de gebruiker
{
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos'][$i],
"formaat" => $_POST['formaat'][$i],
"aantal" => $_POST['aantal'][$i]
);
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
Help mijn, alstublieft! Ik strompel al een week met deze onwetenheid.
Gewijzigd op 02/04/2006 01:01:00 door Nick
moet aantal[] hier niet buiten de '' en met een $ ervoor getypt worden?
Aantal hoeft niet buiten de "'s. De volgende PHP pagina begrijpt bij het uitlezen van de POST dat ik met aantal[] een array bedoel.
Gewijzigd op 02/04/2006 01:13:00 door Nick
ok.. heb zelf ook niet zo heel veel verstand van array's, dat wil ik nog gaan leren;) maar t was te proberen..
Ja, ik raak altijd in de knoei met lussen etc. Bedankt in iedergeval. Ik hoop dat iemand mij kan helpen.
Nee, ik kom er nog steeds niet uit :(
De fotos[] array wordt alleen gevuld met een element als het vinkje gezet is (geloof ik). De andere array's worden welke wel voor elke foto gevuld. Dus als je 5 foto's hebt en je vinkt er 2 aan zitten er 2 elementen in de fotos array en 5 elementen in de formaat[] en aantal[] array. En je weet niet meer welk fotos element bij welk welk formaat en aantal element hoort.
Ik zou elke foto expliciet een nummer geven en dat in de veldnaam verwerken.
Dus:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
for ($foto_nr = 0; $foto_nr < 5; $foto_nr++) {
echo '
<input type="checkbox" name="fotos_' . $foto_nr . '"
value="'.htmlentities($file).'">
<select name="formaat_' . $foto_nr . '">
etc...
}
echo '
<input type="checkbox" name="fotos_' . $foto_nr . '"
value="'.htmlentities($file).'">
<select name="formaat_' . $foto_nr . '">
etc...
}
Dan kan je ze in php weer oproepen met:
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
<?php
for ($i = 0; $i < 5; $i++) {
if (empty($_POST['fotos_' . $i]) {
continue;
}
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos_' . $i],
"formaat" => $_POST['formaat_' . $i],
"aantal" => $_POST['aantal_' . $i]
);
}
for $i = 0; $i < count($_SESSION['bestel']); $i++) {
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
for ($i = 0; $i < 5; $i++) {
if (empty($_POST['fotos_' . $i]) {
continue;
}
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos_' . $i],
"formaat" => $_POST['formaat_' . $i],
"aantal" => $_POST['aantal_' . $i]
);
}
for $i = 0; $i < count($_SESSION['bestel']); $i++) {
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
(ik heb dit allemaal uit mn hoofd ingetiept dus misschien dat er ergens iets niet helemaal klopt :)
Ik ga even kijken bedankt! :D
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
echo '
<input type="checkbox" name="fotos[]" value="'.$file.'">
<select name="formaat_'.$file.'">
<option value="21x30">21x30
<option value="10x15">10x15
<option value="7x12">7x12
<option value="4x6">4x6
</select>
Aantal:<input size="1" type="text" name="aantal_'.$file.'" value="1">';
?>
echo '
<input type="checkbox" name="fotos[]" value="'.$file.'">
<select name="formaat_'.$file.'">
<option value="21x30">21x30
<option value="10x15">10x15
<option value="7x12">7x12
<option value="4x6">4x6
</select>
Aantal:<input size="1" type="text" name="aantal_'.$file.'" value="1">';
?>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
foreach ($_POST['fotos'] as $value) {
// voeg toe aan mandje:
$_POST['formaat_' . $value];
$_POST['aantal_' . $value];
}
?>
foreach ($_POST['fotos'] as $value) {
// voeg toe aan mandje:
$_POST['formaat_' . $value];
$_POST['aantal_' . $value];
}
?>
Jan Koehoorn, sorry ik begrijp niet wat je bedoeld? Kun je nader uitleggen?
Probeer deze testopstelling maar eens uit:
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
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
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<pre>';
print_r ($_POST);
echo '</pre>';
if (is_array ($_POST['check'])) {
foreach ($_POST['check'] as $value) {
echo '<p>' . $_POST['sel_' . $value] . '</p>';
echo '<p>' . $_POST['aantal_' . $value] . '</p>';
}
}
else {
echo '<p>Je moet wel iets aanvinken!</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<input name="check[]" type="checkbox" value="een">
<select name="sel_een">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input name="aantal_een" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="twee">
<select name="sel_twee">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input name="aantal_twee" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="drie">
<select name="sel_drie">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input name="aantal_drie" type="text" value="1">
</p>
<p>
<input type="submit" value="go">
</p>
</form>
</body>
</html>
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<pre>';
print_r ($_POST);
echo '</pre>';
if (is_array ($_POST['check'])) {
foreach ($_POST['check'] as $value) {
echo '<p>' . $_POST['sel_' . $value] . '</p>';
echo '<p>' . $_POST['aantal_' . $value] . '</p>';
}
}
else {
echo '<p>Je moet wel iets aanvinken!</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<input name="check[]" type="checkbox" value="een">
<select name="sel_een">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input name="aantal_een" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="twee">
<select name="sel_twee">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input name="aantal_twee" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="drie">
<select name="sel_drie">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input name="aantal_drie" type="text" value="1">
</p>
<p>
<input type="submit" value="go">
</p>
</form>
</body>
</html>
Nu zit ik bij de code vast:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
for ($i = 0; $i < 5; $i++)
{
if(empty($_POST['fotos_' . $i])
{
continue;
}
else
{
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos_' . $i],
"formaat" => $_POST['formaat_' . $i],
"aantal" => $_POST['aantal_' . $i]
);
}
}
for $i = 0; $i < count($_SESSION['bestel']); $i++)
{
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
for ($i = 0; $i < 5; $i++)
{
if(empty($_POST['fotos_' . $i])
{
continue;
}
else
{
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos_' . $i],
"formaat" => $_POST['formaat_' . $i],
"aantal" => $_POST['aantal_' . $i]
);
}
}
for $i = 0; $i < count($_SESSION['bestel']); $i++)
{
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
Parse error: syntax error, unexpected '{' in factuur.php on line 45
Gewijzigd op 02/04/2006 09:55:00 door Nick
Beste Jan Koehoorn, ik zie idd uit je print_array dat hij nog steeds alle values houd alleen dat hij erna alleen degene uithaalt die ik wil! Ik begrijp alleen niet hoe ik dit in mijn session en zooi ga zetten
online voorbeeldje voor je gemaakt.
Je session zou je in de foreach kunnen vullen:
$_SESSION['fotonaam']['afmeting']['aantal']
dan kan je gebruiker een foto ook in verschillende afmetingen bestellen.
Ik heb nog een Je session zou je in de foreach kunnen vullen:
$_SESSION['fotonaam']['afmeting']['aantal']
dan kan je gebruiker een foto ook in verschillende afmetingen bestellen.
Voor diegene die denken hey ik heb hier wat aan ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
for ($i = 0; $i < 5; $i++)
{
if(empty($_POST["fotos_$i"]))
{
continue;
}
else
{
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos_' . $i],
"formaat" => $_POST['formaat_' . $i],
"aantal" => $_POST['aantal_' . $i]
);
}
}
for ($i = 0; $i < count($_SESSION['bestel']); $i++)
{
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
for ($i = 0; $i < 5; $i++)
{
if(empty($_POST["fotos_$i"]))
{
continue;
}
else
{
$_SESSION['bestel'][] = Array (
"fotos" => $_POST['fotos_' . $i],
"formaat" => $_POST['formaat_' . $i],
"aantal" => $_POST['aantal_' . $i]
);
}
}
for ($i = 0; $i < count($_SESSION['bestel']); $i++)
{
echo "<tr><td>".$_SESSION['bestel'][$i]['fotos']."</td><td>".$_SESSION['bestel'][$i]['formaat']."</td><td>".$_SESSION['bestel'][$i]['aantal']."</td></tr>";
}
?>
Gewijzigd op 02/04/2006 10:10:00 door Nick
Mooi zo!
mijn voorbeeld:
Voor de volledigheid nog even de uiteindelijke code van 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
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
<?php
session_start ();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (is_array ($_POST['check'])) {
foreach ($_POST['check'] as $value) {
echo '<p>Naam: '.$_POST['naam_' . $value];
echo ', afmeting:' . $_POST['sel_' . $value];
echo ', aantal: ' . $_POST['aantal_' . $value] . '</p>';
$_SESSION[$_POST['naam_' . $value]][$_POST['sel_' . $value]] = $_POST['aantal_' . $value];
}
}
else {
echo '<p>Je moet wel iets aanvinken!</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>PHP Basket example</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<input name="check[]" type="checkbox" value="een">
<input name="naam_een" value="foto1.jpg">
<select name="sel_een">
<option value="21x30">21x30</option>
<option value="10x15">10x15</option>
<option value="7x12">7x12</option>
<option value="4x6">4x6</option>
</select>
<input name="aantal_een" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="twee">
<input name="naam_twee" value="foto2.jpg">
<select name="sel_twee">
<option value="21x30">21x30</option>
<option value="10x15">10x15</option>
<option value="7x12">7x12</option>
<option value="4x6">4x6</option>
</select>
<input name="aantal_twee" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="drie">
<input name="naam_drie" value="foto3.jpg">
<select name="sel_drie">
<option value="21x30">21x30</option>
<option value="10x15">10x15</option>
<option value="7x12">7x12</option>
<option value="4x6">4x6</option>
</select>
<input name="aantal_drie" type="text" value="1">
</p>
<p>
<input type="submit" value="go">
</p>
</form>
<h1>Inhoud van je winkelmandje:</h1>
<?php
echo '<pre>';
print_r ($_SESSION);
echo '</pre>';
?>
</body>
</html>
session_start ();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (is_array ($_POST['check'])) {
foreach ($_POST['check'] as $value) {
echo '<p>Naam: '.$_POST['naam_' . $value];
echo ', afmeting:' . $_POST['sel_' . $value];
echo ', aantal: ' . $_POST['aantal_' . $value] . '</p>';
$_SESSION[$_POST['naam_' . $value]][$_POST['sel_' . $value]] = $_POST['aantal_' . $value];
}
}
else {
echo '<p>Je moet wel iets aanvinken!</p>';
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>PHP Basket example</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<input name="check[]" type="checkbox" value="een">
<input name="naam_een" value="foto1.jpg">
<select name="sel_een">
<option value="21x30">21x30</option>
<option value="10x15">10x15</option>
<option value="7x12">7x12</option>
<option value="4x6">4x6</option>
</select>
<input name="aantal_een" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="twee">
<input name="naam_twee" value="foto2.jpg">
<select name="sel_twee">
<option value="21x30">21x30</option>
<option value="10x15">10x15</option>
<option value="7x12">7x12</option>
<option value="4x6">4x6</option>
</select>
<input name="aantal_twee" type="text" value="1">
</p>
<p>
<input name="check[]" type="checkbox" value="drie">
<input name="naam_drie" value="foto3.jpg">
<select name="sel_drie">
<option value="21x30">21x30</option>
<option value="10x15">10x15</option>
<option value="7x12">7x12</option>
<option value="4x6">4x6</option>
</select>
<input name="aantal_drie" type="text" value="1">
</p>
<p>
<input type="submit" value="go">
</p>
</form>
<h1>Inhoud van je winkelmandje:</h1>
<?php
echo '<pre>';
print_r ($_SESSION);
echo '</pre>';
?>
</body>
</html>