cookie en array
Ik heb een vraagje c.q. uitdaging.
Ik ben bezig met een bestelsite, waarin op de eerste pagina de producten kunnen worden besteld (d.m.v. checkboxen.) Na een submit, zouden deze gegevens op de 2e pagina moeten staan, nu heb ik geprobeerd dit via een cookie te doen, maar hij zet(setcookie) niets in de cookie, dus ook geen output op de 2 pagina waar het mail/bestel comfirm staat. Ik heb ondertussen van alles gezocht, geprobeerd. Maar ik zie nu helemaal het bos door de bomen niet meer. Alle gegevens komen uit een database, en worden in een array gezet.
code test.php:
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
74
75
76
77
78
79
80
81
82
83
84
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
74
75
76
77
78
79
80
81
82
83
84
<?php
// DATABASE VERBINDEN
$dbhost='localhost';
$dbusername='****';
$dbuserpass='****';
$dbname='****';
$link_id = mysql_connect ($dbhost, $dbusername, $dbuserpass);
$dbname=$dbname;
if (!mysql_select_db($dbname)) die(mysql_error());
// GEGEVENS UIT DATABASE HALEN
$sql = 'SELECT * FROM hih_products ORDER BY id ASC';
// STRINGS ZETTEN MET GEGEVENS UIT DATABASE
if($result = mysql_query($sql)){
$dranken = array();
while($row = mysql_fetch_assoc($result)){
$dranken[]=$row['name'];
}
}
if($result = mysql_query($sql)){
$drank_uitleg = array();
while($row = mysql_fetch_assoc($result)){
$drank_uitleg[]=$row['specs'];
}
}
if($result = mysql_query($sql)){
$drank_prijs = array();
while($row = mysql_fetch_assoc($result)){
$drank_prijs[]=$row['price'];
}
}
// STRINGS ZETTEN MET GEGEVENS VIA ...
$aantal_dranken=count($dranken);
$aantal_dranken1=count($aantal_dranken[$i]);
{
// GEGEVENS LATEN ZIEN. WAT UIT DATABASE EN VASTE GEGEVENS
echo('<form method="POST" ACTION="mailform.php">');
echo ('<input type="hidden" name="todo" value="post" />');
setcookie("dranken", .$dranken., Time()+1800);
setcookie("hvlh", $_POST['hvlh_$i'], Time()+1800);
setcookie("drank_prijs", $_POST['drank_prijs_$i'], Time()+1800);
echo('<table>');
for($i=0; $i<$aantal_dranken; $i++){
echo('<tr><td width="400" height="20">');
echo(''.$dranken[$i]);
echo(' ('.$drank_uitleg[$i]);
echo(' )');
echo('</td>');
echo('<td width="50">');
echo('€ '.$drank_prijs[$i]);
echo('</td>');
echo('<td width="10">');
echo('<input type="checkbox" name="drank_'.$i.'" value=".$dranken[$i].">');
echo('</td>');
echo('<td width="20">');
echo('Aantal');
echo('<td width="10">');
echo('<input type="text" size="1" name="hvlh_'.$i.'" value="1">');
echo('</td>');
echo('</tr>');
echo('<br>');
}
echo('</table>');
echo('Opmerkingen: <textarea name="opmerkingen" id="opmerkingen"></textarea>');
echo('<input type="submit" name="submit" value="Bestellen">');
}
?>
// DATABASE VERBINDEN
$dbhost='localhost';
$dbusername='****';
$dbuserpass='****';
$dbname='****';
$link_id = mysql_connect ($dbhost, $dbusername, $dbuserpass);
$dbname=$dbname;
if (!mysql_select_db($dbname)) die(mysql_error());
// GEGEVENS UIT DATABASE HALEN
$sql = 'SELECT * FROM hih_products ORDER BY id ASC';
// STRINGS ZETTEN MET GEGEVENS UIT DATABASE
if($result = mysql_query($sql)){
$dranken = array();
while($row = mysql_fetch_assoc($result)){
$dranken[]=$row['name'];
}
}
if($result = mysql_query($sql)){
$drank_uitleg = array();
while($row = mysql_fetch_assoc($result)){
$drank_uitleg[]=$row['specs'];
}
}
if($result = mysql_query($sql)){
$drank_prijs = array();
while($row = mysql_fetch_assoc($result)){
$drank_prijs[]=$row['price'];
}
}
// STRINGS ZETTEN MET GEGEVENS VIA ...
$aantal_dranken=count($dranken);
$aantal_dranken1=count($aantal_dranken[$i]);
{
// GEGEVENS LATEN ZIEN. WAT UIT DATABASE EN VASTE GEGEVENS
echo('<form method="POST" ACTION="mailform.php">');
echo ('<input type="hidden" name="todo" value="post" />');
setcookie("dranken", .$dranken., Time()+1800);
setcookie("hvlh", $_POST['hvlh_$i'], Time()+1800);
setcookie("drank_prijs", $_POST['drank_prijs_$i'], Time()+1800);
echo('<table>');
for($i=0; $i<$aantal_dranken; $i++){
echo('<tr><td width="400" height="20">');
echo(''.$dranken[$i]);
echo(' ('.$drank_uitleg[$i]);
echo(' )');
echo('</td>');
echo('<td width="50">');
echo('€ '.$drank_prijs[$i]);
echo('</td>');
echo('<td width="10">');
echo('<input type="checkbox" name="drank_'.$i.'" value=".$dranken[$i].">');
echo('</td>');
echo('<td width="20">');
echo('Aantal');
echo('<td width="10">');
echo('<input type="text" size="1" name="hvlh_'.$i.'" value="1">');
echo('</td>');
echo('</tr>');
echo('<br>');
}
echo('</table>');
echo('Opmerkingen: <textarea name="opmerkingen" id="opmerkingen"></textarea>');
echo('<input type="submit" name="submit" value="Bestellen">');
}
?>
code mailform.php
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
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
<?php
$cookie_1 = $_COOKIE['dranken']; // aanvraag
$cookie_2 = $_COOKIE['hvlh']; // aanvraag
$cookie_3 = $_COOKIE['drank_prijs']; // aanvraag
echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
// MAILPOST SETTEN
if(!empty($_POST)){
$aan="[email protected]";
$header="From: [email protected]";
$onderwerp="Online Bestelling";
$bericht="De volgende bestelling is geplaatst:\n\n";
for($i=0; $i<$aantal_dranken; $i++){
if(isset($_POST["drank_$i"])){
$bericht.="".$_POST["hvlh_$i"]." ";
$bericht.="".$dranken[$i]." ";
$bericht.="".$drank_prijs[$i]. "\r\r\r";
$bericht.= "Aantal" .$cookie_2 . "\n";
}
}
$bericht.="".$_POST['opmerkingen']. "\r";
$bericht.="".$aantal_dranken1."";
mail($aan, $onderwerp, $bericht, $header);
}
echo '<input type="submit" name="submit">';
?>
$cookie_1 = $_COOKIE['dranken']; // aanvraag
$cookie_2 = $_COOKIE['hvlh']; // aanvraag
$cookie_3 = $_COOKIE['drank_prijs']; // aanvraag
echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
// MAILPOST SETTEN
if(!empty($_POST)){
$aan="[email protected]";
$header="From: [email protected]";
$onderwerp="Online Bestelling";
$bericht="De volgende bestelling is geplaatst:\n\n";
for($i=0; $i<$aantal_dranken; $i++){
if(isset($_POST["drank_$i"])){
$bericht.="".$_POST["hvlh_$i"]." ";
$bericht.="".$dranken[$i]." ";
$bericht.="".$drank_prijs[$i]. "\r\r\r";
$bericht.= "Aantal" .$cookie_2 . "\n";
}
}
$bericht.="".$_POST['opmerkingen']. "\r";
$bericht.="".$aantal_dranken1."";
mail($aan, $onderwerp, $bericht, $header);
}
echo '<input type="submit" name="submit">';
?>
Wie kan mij helpen het bos weer te zien.
p.s. ik weet niet of deze post hier hoort.
Laat a.u.b. even weten waar deze dan wel hoort.
Gewijzigd op 23/06/2010 11:38:30 door Olly Jansen
Dit is waarschijnlijk jouw fout.
Kreeg je ook geen error-codes?
Dat vind ik het rare eraan...
update:
ik heb nu iets veranderd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
STRINGS ZETTEN MET GEGEVENS VIA ...
$aantal_dranken=count($dranken);
$aantal_dranken1=count($aantal_dranken[$i]);
{
setcookie("dranken", $dranken, Time()+1800);
setcookie("hvlh", $_POST['hvlh_$i'], Time()+1800);
setcookie("drank_prijs", $_POST['drank_prijs_$i'], Time()+1800);
// GEGEVENS LATEN ZIEN. WAT UIT DATABASE EN VASTE GEGEVENS
echo('<form method="POST" ACTION="mailfrom.php">');
// echo('<form action="'.$_SERVER['PHP_SELF'].'" method=post>');
echo ('<input type="hidden" name="todo" value="post" />');
?>
STRINGS ZETTEN MET GEGEVENS VIA ...
$aantal_dranken=count($dranken);
$aantal_dranken1=count($aantal_dranken[$i]);
{
setcookie("dranken", $dranken, Time()+1800);
setcookie("hvlh", $_POST['hvlh_$i'], Time()+1800);
setcookie("drank_prijs", $_POST['drank_prijs_$i'], Time()+1800);
// GEGEVENS LATEN ZIEN. WAT UIT DATABASE EN VASTE GEGEVENS
echo('<form method="POST" ACTION="mailfrom.php">');
// echo('<form action="'.$_SERVER['PHP_SELF'].'" method=post>');
echo ('<input type="hidden" name="todo" value="post" />');
?>
En nu krijg ik de fout melding:
Warning: setcookie() expects parameter 2 to be string, array given in /test.php on line 44
Gewijzigd op 23/06/2010 12:44:07 door Olly Jansen
sessions.
Verder moet je eerst eens op php.net kijken voordat je een functie gebruikt.
Zie ook array.
Ik zou als ik jou was eerder gebruik maken van Verder moet je eerst eens op php.net kijken voordat je een functie gebruikt.
Zie ook array.
Je kunt dit wel - uit m'n hoofd - anders doen, door bijvoorbeeld array[id] als naam te geven.
Hiervoor kun je bijvoorbeeld een recursieve functie maken.
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
function setcookiearray ($name, $value) {
if (is_array($value)) {
foreach ($value as $key => $val) {
setcookiearray($name.'['.$key.']', $val); // als $value een array is, dan word deze array uitgelezen en word de functie opnieuw aangeroepen, met een aangepaste $name en een verkorte $value.
}
}
else {
setcookie($name, $value);
}
}
?>
function setcookiearray ($name, $value) {
if (is_array($value)) {
foreach ($value as $key => $val) {
setcookiearray($name.'['.$key.']', $val); // als $value een array is, dan word deze array uitgelezen en word de functie opnieuw aangeroepen, met een aangepaste $name en een verkorte $value.
}
}
else {
setcookie($name, $value);
}
}
?>
Ik heb het niet getest. Ik denk dat dit beter werkt. Uiteraard moet dit ook vóór er iets ge-echo'd word, uitgevoerd worden.
Een sessie is denk ik in jouw geval ook wel handig, omdat er dan niet heel veel informatie van de browser gestuurd moet worden naar de server. (cookies mogen niet te lang worden, uiteraard)
Spoedig volgt de uitleg hoe ik het heb gedaan.
iedereen bedankt voor de suggesties.