Hulp nodig bij sessies + arrays
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)
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
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++;
}
?>
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
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)
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
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;
?>
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;
?>
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.
Code (php)
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 -
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.
Code (php)
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
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 :)