Hallo allemaal,

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?


<?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>';
}
?>

Tot hier kwam ik met de productweergave (deze werkt)

en <?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;
?> en deze geeft aan dat hij $cart niet herkent.. en dan zijn er nog de functies:
<?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>&euro;'.$price.'</td>';
$output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
$output[] = '<td>&euro;'.($price * $qty).'</td>';
$total += $price * $qty;
$output[] = '</tr>';
}
$output[] = '</table>';
$output[] = '<p>Totaal: <strong>&euro;'.$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 :

<?php
//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?
Wat is de reden dat je met XML werkt?

[size=xsmall]Toevoeging op 21/10/2013 14:51:45:[/size]

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?

[size=xsmall]Toevoeging op 21/10/2013 14:51:45:[/size]

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)

[size=xsmall]Toevoeging op 21/10/2013 21:49:53:[/size]

Ger van Steenderen op 21/10/2013 14:46:43

Wat is de reden dat je met XML werkt?

[size=xsmall]Toevoeging op 21/10/2013 14:51:45:[/size]

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
Misschien moet je proberen voor regel 6 in je function.php dit aan te geven :
$cart = "";

Reageren