Hulp nodig bij sessies + arrays

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas M

Thomas M

08/10/2005 10:52:00
Quote Anchor link
Hallo,

ik ben met een webshop bezig, de producten zet ik in één sessie en deze lees ik als array uit.
Ik zit echter met het probleem dat ik de gegevens in de sessie niet te zien krijg.
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
<?php
if(isset($_POST['taarten'])) {
   if(is_numeric($_POST['aantal'])) {
      if($_POST['aantal'] < 10) {
         $aantal = 10;
      }

      else {
         $aantal = $_POST['aantal'];
      }

      if(isset($_SESSION['product'])) {
         $_SESSION['product'] = "taarten,".$_POST['product'].",".$aantal."\n".$_SESSION['product'];
      }

      else {
         $_SESSION['product'] = "taarten,".$_POST['product'].",".$aantal."";
      }

      echo "<meta http-equiv=\"refresh\" content=\"0;URL=bestellen.php\">";      
   }

   else {
      echo "Error";
   }
}


$delen = explode(",", $_SESSION['product']);
$newline = explode("\n", $delen);
$arraynr = 0;
while($arraynr < count($newline)) {
   echo $newline[$arraynr][0]."<br>".$newline[$arraynr][1]."<br>".$newline[$arraynr][2];
   $arraynr++;
}

?>


Als het formulier wordt gepost wordt (indien de sessie al bestaat) de nieuwe data toegevoegd aan deze sessie.
Ik krijg niet de inhoud van ded sessie te zien maar het volgende:
A
r
r

Hij geeft dus aan dat er een array geechod wordt terwijl ik de inhoud ervan wil laten zien.

Wat moet ik nou aan mijn script veranderen (een heleboel waarschijnlijk :P) om dit doel te bereiken?

Thomas
Gewijzigd op 08/10/2005 10:53:00 door Thomas M
 
PHP hulp

PHP hulp

24/04/2024 21:39:06
 
Arjan Kapteijn

Arjan Kapteijn

08/10/2005 10:54:00
Quote Anchor link
Ik heb gisteren toevallig een voorbeeld gemaakt voor een ander topic, wellicht dat we er wat uit kunnen halen.

Omdat het een array is kan je het bestelde aantal er natuurlijk gewoon naast zetten ipv gescheiden door kommas.


klik HIER voor een voorbeeld

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
<?php
session_start();

//functies

function productToevoegen($productid)
{

    if (empty($_SESSION['winkelwagentje'])){
        $mandje = array();
    }
else{
        $mandje = $_SESSION['winkelwagentje'];
    }


    if(in_array($productid,$mandje))
        {

            echo "product is al toegevoegd<br>";
        }
else{
        $mandje[] = "$productid";
        $_SESSION['winkelwagentje'] = $mandje;
        }
}

function
winkelwagentje()
{

    if (empty($_SESSION['winkelwagentje'])){
        echo "Er staat nog niks in uw winkelwagentje";
    }
else{
        $mandje = $_SESSION['winkelwagentje'];
    }

    
    $aantal = count($mandje);
    for ($product = 0; $product < $aantal; $product++ ) {
         echo $mandje[$product] . "<br>\n";
    }    
}


//wat willen we nu eigenlijk?

if (isset($_GET['actie'])) {
    $actie = $_GET['actie'];
    if($actie == "toevoegen"){
        if(is_numeric($_GET['productid'])){
            $productid = $_GET['productid'];
            productToevoegen($productid);
        }
    }
}


echo "winkelwagentje:<br>";

winkelwagentje();

echo <<<HTML

<ul>
<li><a href="voorbeeld3.php?actie=toevoegen&productid=1">Product 1</a></li>
<li><a href="voorbeeld3.php?actie=toevoegen&productid=2">Product 2</a></li>
<li><a href="voorbeeld3.php?actie=toevoegen&productid=3">Product 3</a></li>
<li><a href="voorbeeld3.php?actie=toevoegen&productid=4">Product 4</a></li>
<li><a href="voorbeeld3.php?actie=toevoegen&productid=5">Product 5</a></li>
</ul>

HTML
;

?>
 
Thomas M

Thomas M

08/10/2005 10:57:00
Quote Anchor link
Het gaat er bij mij om dat er per product 3 gegevens worden geset en dat ik ze straks dus mooi in een tabelletje kan uitlezen.
 
- SanThe -

- SanThe -

08/10/2005 11:23:00
Quote Anchor link
Je moet je array eens bekijken met print_r. Volgens mij haal je ze verkeerd uit elkaar met explode.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$delen
= explode(",", $_SESSION['product']);
$newline = explode("\n", $delen);
?>


In $delen zit nu volgens mij dit
$delen[0] => "taarten"
$delen[1] => product // $_POST['product']
$delen[2] => 10\n // $aantal
$delen[3] => "taarten"
$delen[4] => product // $_POST['product']
$delen[5] => 20 // $aantal

En dat is, lijkt mij, niet de bedoeling.

Edit: Ik denk dat je meer aan dit hebt:
$delen[0] => "taarten, product, 10"
$delen[1] => "taarten, product, 20"

En dat doe je door
$delen = explode("\n", $_SESSION['product']);

En vandaar uit kan je ze weer uit elkaar halen.
Gewijzigd op 08/10/2005 11:28:00 door - SanThe -
 
S -

S -

08/10/2005 12:08:00
Quote Anchor link
ik wilde eerst ook met sessions werken. Totdat ik erachter kwam dat ik een bevestigings mail wilde versturen nadat men had aangemeld met hun gegevens. Dat betekend dat ze met die mail hun account bevestigen, maar dat ze ook in een nieuw venster bezig zijn. Zodra het venster word gesloten zijn de opgeslagen sessions weg. Daarom heb ik een script een beetje veranderd zodat het op cookies werkt.

Werkt voor mijn gevoel beter. Alleen de update_cart.php (voor het updaten van de aantallen in de winkelwagen) lukt nog niet. ;) sessions zijn makkelijker, maar ik zou cookies gebruiken.
 
Thomas M

Thomas M

08/10/2005 12:17:00
Quote Anchor link
Ik heb het laatste stukje nu veranderd in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$newline
= explode("\n", $_SESSION['product']);
$arraynr = 0;
while($arraynr < count($newline)) {
   $delen = explode(",", $newline[$arraynr]);
   echo $delen[$arraynr][0]."<br>".$delen[$arraynr][1]."<br>".$delen[$arraynr][2]."<br><br>";
   $arraynr++;
}

?>


Als ik nu de pagina open krijg ik te zien:
t
a
a

de 3 eerste letters van het eerste onderdeel van de sessie dus. Ik heb nu 1 product toegevoegd, als ik er meerdere toevoeg krijg ik een rare mix van id's en aantallen te zien.

Kunnen jullie me verder helpen?
Gewijzigd op 08/10/2005 12:23:00 door Thomas M
 
- SanThe -

- SanThe -

08/10/2005 12:23:00
Quote Anchor link
Zo dan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $delen[0]."<br>".$delen[1]."<br>".$delen[2]."<br><br>";
?>
 
Thomas M

Thomas M

08/10/2005 15:11:00
Quote Anchor link
Dank je wel het werkt nu, ik had er even niet bij nagedacht dat je in een loopje de array $newline niet apart hoeft uit te lezen (of hoe zeg je dat), het werkt nu bedankt :)
 



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.