XML Webshop winkelwagen
Ik heb eerder een keer een topic geopend om een specifieke reeks van data uit een database te halen, geen antwoord op gehad, zelf opgelost uiteindelijk (heb je hier vragen over kun je dit bij mij stellen)
Maar ik moet nu dus een winkelwagen maken, die contact maakt met mijn XML database.. Ik heb werkelijk geen idee hoe ik dit ga doen..
Weet iemand of heeft iemand hiervoor een code? ik kan op het internet niets vinden...
Heb je al gekeken naar SimpleXML ?
- Aar - op 20/10/2013 11:17:37:
Heb je al gekeken naar SimpleXML ?
Ja, ik kom er niet uit...
Je wilt data uitlezen uit je XML-bestand? Heb je al wat geprobeerd?
- Aar - op 20/10/2013 11:22:30:
Je wilt data uitlezen uit je XML-bestand? Heb je al wat geprobeerd?
Nee, ik wil een shoppingcart maken die gekoppeld zit aan een XML bestand.. de data uitlezen is gelukt, nu er een shoppingcart sessie van maken...
Laat je relevante code eens zien?
- Aar - op 20/10/2013 11:27:34:
Laat je relevante code eens zien?
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
foreach($xml->$_GET['cat'] as $product) {
echo '<div class="product_box">';
echo '<h3>'.$product->name.'</h3>';
echo '<img src="'.$product->image.'" /><br />';
echo $product->description;
echo '<p class="product_price">'.$product->price.'</p>';
echo '<a href="shoppingcart.php?action=add&id='.$product->id.'" class="addtocart"></a>';
echo '<a href="product.php?cat='.$_GET['cat'].'&id='.$product->id.'" class="detail"></a>';
echo '</div>';
}
?>
foreach($xml->$_GET['cat'] as $product) {
echo '<div class="product_box">';
echo '<h3>'.$product->name.'</h3>';
echo '<img src="'.$product->image.'" /><br />';
echo $product->description;
echo '<p class="product_price">'.$product->price.'</p>';
echo '<a href="shoppingcart.php?action=add&id='.$product->id.'" class="addtocart"></a>';
echo '<a href="product.php?cat='.$_GET['cat'].'&id='.$product->id.'" class="detail"></a>';
echo '</div>';
}
?>
Tot hier kwam ik met de productweergave (deze werkt)
en
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
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
<?php
$xml = simplexml_load_file('../overig/producten/products.xml');
require_once('include/global.inc.php');
// Include functions
require_once('include/functions.php');
// Start the session
session_start();
// Process actions
foreach($xml->$_GET['id'] as $price) {
$cart = $_SESSION['cart'];
$action = $_GET['action'];
$id = $_GET['id'];
switch ($action) {
case 'add':
if ($cart) {
$cart .= ','.$id;
} else {
$cart = $id;
}
break;
case 'delete':
if ($cart) {
$items = explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($_GET['id'] != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
$cart = $newcart;
}
break;
case 'update':
if ($cart) {
$newcart = '';
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($newcart != '') {
$newcart .= ','.$id;
} else {
$newcart = $id;
}
}
}
}
}
$cart = $newcart;
break;
}
}
$_SESSION['cart'] = $cart;
?>
$xml = simplexml_load_file('../overig/producten/products.xml');
require_once('include/global.inc.php');
// Include functions
require_once('include/functions.php');
// Start the session
session_start();
// Process actions
foreach($xml->$_GET['id'] as $price) {
$cart = $_SESSION['cart'];
$action = $_GET['action'];
$id = $_GET['id'];
switch ($action) {
case 'add':
if ($cart) {
$cart .= ','.$id;
} else {
$cart = $id;
}
break;
case 'delete':
if ($cart) {
$items = explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($_GET['id'] != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
$cart = $newcart;
}
break;
case 'update':
if ($cart) {
$newcart = '';
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($newcart != '') {
$newcart .= ','.$id;
} else {
$newcart = $id;
}
}
}
}
}
$cart = $newcart;
break;
}
}
$_SESSION['cart'] = $cart;
?>
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
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
<?php
//error_reporting(0);
function writeShoppingCart() {
$cart = $_SESSION['cart'];
if (!$cart) {
return '<p>U heeft geen artikelen in uw winkelwagen</p>';
} else {
// Parse the cart session variable
$items = explode(',',$cart);
$en = (count($items) > 1) ? 'en':'';
return '<p>U heeft <a href="shoppingcart.php">'.count($items).' artikel'.$en.' in uw winkelwagen</a></p>';
}
}
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="shoppingcart.php?action=update" method="post" id="cart">';
$output[] = '<table>';
foreach ($contents as $id=>$qty) {
$sql = $xml->$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td><a href="shoppingcart.php?action=delete&id='.$id.'" class="r">Verwijder</a></td>';
$output[] = '<td>'.$title.' - '.$description.'</td>';
$output[] = '<td>€'.$price.'</td>';
$output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td>€'.($price * $qty).'</td>';
$total += $price * $qty;
$output[] = '</tr>';
}
$output[] = '</table>';
$output[] = '<p>Totaal: <strong>€'.$total.'</strong></p>';
$output[] = '<div><button type="submit">Update winkelwagen</button></div>';
$output[] = '</form>';
} else {
$output[] = '<p>Uw winkelwagen is leeg</p>';
}
return join('',$output);
}
?>
//error_reporting(0);
function writeShoppingCart() {
$cart = $_SESSION['cart'];
if (!$cart) {
return '<p>U heeft geen artikelen in uw winkelwagen</p>';
} else {
// Parse the cart session variable
$items = explode(',',$cart);
$en = (count($items) > 1) ? 'en':'';
return '<p>U heeft <a href="shoppingcart.php">'.count($items).' artikel'.$en.' in uw winkelwagen</a></p>';
}
}
function showCart() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<form action="shoppingcart.php?action=update" method="post" id="cart">';
$output[] = '<table>';
foreach ($contents as $id=>$qty) {
$sql = $xml->$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td><a href="shoppingcart.php?action=delete&id='.$id.'" class="r">Verwijder</a></td>';
$output[] = '<td>'.$title.' - '.$description.'</td>';
$output[] = '<td>€'.$price.'</td>';
$output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td>€'.($price * $qty).'</td>';
$total += $price * $qty;
$output[] = '</tr>';
}
$output[] = '</table>';
$output[] = '<p>Totaal: <strong>€'.$total.'</strong></p>';
$output[] = '<div><button type="submit">Update winkelwagen</button></div>';
$output[] = '</form>';
} else {
$output[] = '<p>Uw winkelwagen is leeg</p>';
}
return join('',$output);
}
?>
maar het werkt niet, de connectie is :
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
//error_reporting(0);
$url = '../Overig/producten/products.xml';
$temp = file_get_contents($url);
$db = simplexml_load_string($temp);
?>
//error_reporting(0);
$url = '../Overig/producten/products.xml';
$temp = file_get_contents($url);
$db = simplexml_load_string($temp);
?>
Weet werkelijk niemand hoe je dit kunt maken?
Toevoeging op 21/10/2013 14:51:45:
Maar zet in ieder geval session_start(); als eerste in het php file dat je aanroept.
Ger van Steenderen op 21/10/2013 14:46:43:
Wat is de reden dat je met XML werkt?
Toevoeging op 21/10/2013 14:51:45:
Maar zet in ieder geval session_start(); als eerste in het php file dat je aanroept.
Toevoeging op 21/10/2013 14:51:45:
Maar zet in ieder geval session_start(); als eerste in het php file dat je aanroept.
De reden dat ik met xml werk is omdat ik een systeem maak waarbij dit geen andere mogelijkheid heeft (een opdracht waarbij er een externe xml file wordt aangeroepen)
Toevoeging op 21/10/2013 21:49:53:
Ger van Steenderen op 21/10/2013 14:46:43:
Wat is de reden dat je met XML werkt?
Toevoeging op 21/10/2013 14:51:45:
Maar zet in ieder geval session_start(); als eerste in het php file dat je aanroept.
Toevoeging op 21/10/2013 14:51:45:
Maar zet in ieder geval session_start(); als eerste in het php file dat je aanroept.
Als je dat doet, denkt de server dat je twee sessies wilt starten, dit is de fout die hij aangeeft waar ik over struikel...
Notice: Undefined index: cart in C:\xampp\htdocs\xampp\website\nieuw\Webshop\include\functions.php on line 6
Wouter Van Marrum op 21/10/2013 23:01:21:
Wat veranderd dit dan? ik heb hierna in shoppingcart.php nog twee foutmeldingen:
Notice: Undefined index: id in C:\xampp\htdocs\xampp\website\nieuw\Webshop\shoppingcart.php on line 9
Notice: Undefined variable: cart in C:\xampp\htdocs\xampp\website\nieuw\Webshop\shoppingcart.php on line 68
Nee sorry had de errors in me hoofd verwisseld.
Als het goed is staat op regel 6 iets als dit toch ? :
Als dit zo is probeer dan dit te doen :
Sorry voor me eerste reactie ben net uurtje klaar met werk en aardig moe haha.
Ik zal het zo wel lezen.
Wouter Van Marrum op 21/10/2013 23:14:44:
Aaah oke,
Nee sorry had de errors in me hoofd verwisseld.
Als het goed is staat op regel 6 iets als dit toch ? :
Als dit zo is probeer dan dit te doen :
Sorry voor me eerste reactie ben net uurtje klaar met werk en aardig moe haha.
Ik zal het zo wel lezen.
Nee sorry had de errors in me hoofd verwisseld.
Als het goed is staat op regel 6 iets als dit toch ? :
Als dit zo is probeer dan dit te doen :
Sorry voor me eerste reactie ben net uurtje klaar met werk en aardig moe haha.
Ik zal het zo wel lezen.
De eerste reactie heeft wel die ene fout opgelost, maar ik weet nu niet of hij nog wel een sessie maakt...
ik zit nu alleen nog dat hij
deze:
Notice: Undefined index: id in C:\xampp\htdocs\xampp\website\nieuw\Webshop\shoppingcart.php on line 9
Notice: Undefined variable: cart in C:\xampp\htdocs\xampp\website\nieuw\Webshop\shoppingcart.php on line 68
errors weergeeft, dat is dit stukje code:
dat stukje code moet 'íd' uit de xml veld halen, en bij mysql word het zo gedaan:
en dan lijn 68:
waarbij hij 'cart' niet herkent...
weghalen waarvan ik dacht dat je die erin moest zetten ?
En dan eerst kijken of je wel een id aan het doorgeven bent.
Misschien door iets als :
En dan kun je een fout afhandeling maken voor als er geen id is gezet.
Ik weet zelf niet hoe SimpleXml werkt met mysql,
Maar zou je niet zoiets als $xml->price kunnen doen ?
En het lijkt erop dat $cart dan leeg is waarschijnlijk en dat zou kunnen kloppen omdat je geen id krijgt.
Maar ik weet het niet zeker gezien dat ik nooit met SimpleXml werk.
Misschien dat iemand anders op het forum hier meer van weet.
Misschien moet je als eerste in je function.php de En dan eerst kijken of je wel een id aan het doorgeven bent.
Misschien door iets als :
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$check = $xml->_GET['id'];
// dan if isset.
if(isset($check)){
// nu foreach aanroepen.
foreach($check as $price){
// dan if isset.
if(isset($check)){
// nu foreach aanroepen.
foreach($check as $price){
En dan kun je een fout afhandeling maken voor als er geen id is gezet.
Ik weet zelf niet hoe SimpleXml werkt met mysql,
Maar zou je niet zoiets als $xml->price kunnen doen ?
En het lijkt erop dat $cart dan leeg is waarschijnlijk en dat zou kunnen kloppen omdat je geen id krijgt.
Maar ik weet het niet zeker gezien dat ik nooit met SimpleXml werk.
Misschien dat iemand anders op het forum hier meer van weet.
Wouter Van Marrum op 22/10/2013 10:07:17:
Misschien moet je als eerste in je function.php de weghalen waarvan ik dacht dat je die erin moest zetten ?
En dan eerst kijken of je wel een id aan het doorgeven bent.
Misschien door iets als :
En dan kun je een fout afhandeling maken voor als er geen id is gezet.
Ik weet zelf niet hoe SimpleXml werkt met mysql,
Maar zou je niet zoiets als $xml->price kunnen doen ?
En het lijkt erop dat $cart dan leeg is waarschijnlijk en dat zou kunnen kloppen omdat je geen id krijgt.
Maar ik weet het niet zeker gezien dat ik nooit met SimpleXml werk.
Misschien dat iemand anders op het forum hier meer van weet.
En dan eerst kijken of je wel een id aan het doorgeven bent.
Misschien door iets als :
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$check = $xml->_GET['id'];
// dan if isset.
if(isset($check)){
// nu foreach aanroepen.
foreach($check as $price){
// dan if isset.
if(isset($check)){
// nu foreach aanroepen.
foreach($check as $price){
En dan kun je een fout afhandeling maken voor als er geen id is gezet.
Ik weet zelf niet hoe SimpleXml werkt met mysql,
Maar zou je niet zoiets als $xml->price kunnen doen ?
En het lijkt erop dat $cart dan leeg is waarschijnlijk en dat zou kunnen kloppen omdat je geen id krijgt.
Maar ik weet het niet zeker gezien dat ik nooit met SimpleXml werk.
Misschien dat iemand anders op het forum hier meer van weet.
De errors gingen weg toen ik dit deed toevoegen, maar ik hou deze error:
Notice: Undefined variable: cart in C:\xampp\htdocs\xampp\website\nieuw\Webshop\shoppingcart.php on line 75
en wanneer ik dan naar een product ga, en druk op toevoegen aan winkelwagen, doet hij de sessie niet starten en blijft hij zeggen 'u heeft geen producten in uw winkelwagen'.
bij de error hoort dit stukje code:
Gewijzigd op 22/10/2013 10:24:12 door Yoran Kuiper
Toevoeging op 22/10/2013 11:56:57:
probeer eens dit te doen :
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
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
<?php
if ($cart) {
$newcart = '';
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($newcart != '') {
$newcart .= ','.$id;
} else {
$newcart = $id;
}
}
}
}
}
}
$ncart = $newcart;
break;
}
}
$_SESSION['cart'] = $ncart;
[/code]
Misschien dat dit werkt.
Weet niet zeker maar denk dat $cart leeg is of niet wordt aangegeven.
if ($cart) {
$newcart = '';
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($newcart != '') {
$newcart .= ','.$id;
} else {
$newcart = $id;
}
}
}
}
}
}
$ncart = $newcart;
break;
}
}
$_SESSION['cart'] = $ncart;
[/code]
Misschien dat dit werkt.
Weet niet zeker maar denk dat $cart leeg is of niet wordt aangegeven.
Wouter Van Marrum op 22/10/2013 11:44:35:
kijk anders eens of de sessie cart wel bestaat.
Toevoeging op 22/10/2013 11:56:57:
probeer eens dit te doen :
Toevoeging op 22/10/2013 11:56:57:
probeer eens dit te doen :
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
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
<?php
if ($cart) {
$newcart = '';
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($newcart != '') {
$newcart .= ','.$id;
} else {
$newcart = $id;
}
}
}
}
}
}
$ncart = $newcart;
break;
}
}
$_SESSION['cart'] = $ncart;
[/code]
Misschien dat dit werkt.
Weet niet zeker maar denk dat $cart leeg is of niet wordt aangegeven.
[/quote]
Hij weergeeft niet print_r niets,
en nu krijg ik deze error (zelfde) maar dan andere naam...
Notice: Undefined variable: ncart in C:\xampp\htdocs\xampp\website\nieuw\Webshop\shoppingcart.php on line 76
if ($cart) {
$newcart = '';
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($newcart != '') {
$newcart .= ','.$id;
} else {
$newcart = $id;
}
}
}
}
}
}
$ncart = $newcart;
break;
}
}
$_SESSION['cart'] = $ncart;
[/code]
Misschien dat dit werkt.
Weet niet zeker maar denk dat $cart leeg is of niet wordt aangegeven.
[/quote]
Hij weergeeft niet print_r niets,
en nu krijg ik deze error (zelfde) maar dan andere naam...
Notice: Undefined variable: ncart in C:\xampp\htdocs\xampp\website\nieuw\Webshop\shoppingcart.php on line 76