cookie en array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Olly Jansen

Olly Jansen

23/06/2010 11:05:03
Quote Anchor link
Hoi beste mensen,

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)
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
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">');
    }

?>




code mailform.php
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
<?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">';
        ?>


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
 
PHP hulp

PHP hulp

22/12/2024 03:56:40
 
Mark L

Mark L

23/06/2010 11:45:58
Quote Anchor link
de setcookie-functie moet altijd worden aangeroepen VOORDAT er iets naar de browser gestuurd word (dus voor een echo).
Dit is waarschijnlijk jouw fout.

Kreeg je ook geen error-codes?
 
Olly Jansen

Olly Jansen

23/06/2010 12:35:52
Quote Anchor link
Nee ik kreeg/krijg ook geen fout melding.
Dat vind ik het rare eraan...

update:
ik heb nu iets veranderd:

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
<?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" />');

?>


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
 

23/06/2010 13:22:18
Quote Anchor link
Ik zou als ik jou was eerder gebruik maken van sessions.
Verder moet je eerst eens op php.net kijken voordat je een functie gebruikt.
Zie ook array.
 
Mark L

Mark L

23/06/2010 16:02:02
Quote Anchor link
Je kunt dus - zoals in de setcookie-foutmelding is aangegeven - geen array meesturen.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
        }
    }

?>


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)
 

23/06/2010 16:06:27
 
Olly Jansen

Olly Jansen

23/06/2010 17:37:01
Quote Anchor link
Na veel puzzel en speurwerk. is het probleem op gelost.

Spoedig volgt de uitleg hoe ik het heb gedaan.


iedereen bedankt voor de suggesties.
 



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.