XML Webshop winkelwagen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yoran Kuiper

Yoran Kuiper

20/10/2013 11:07:35
Quote Anchor link
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...
 
PHP hulp

PHP hulp

17/11/2024 09:27:16
 
- Ariën  -
Beheerder

- Ariën -

20/10/2013 11:17:37
Quote Anchor link
Heb je al gekeken naar SimpleXML ?
 
Yoran Kuiper

Yoran Kuiper

20/10/2013 11:18:34
Quote Anchor link
- Aar - op 20/10/2013 11:17:37:
Heb je al gekeken naar SimpleXML ?


Ja, ik kom er niet uit...
 
- Ariën  -
Beheerder

- Ariën -

20/10/2013 11:22:30
Quote Anchor link
Je wilt data uitlezen uit je XML-bestand? Heb je al wat geprobeerd?
 
Yoran Kuiper

Yoran Kuiper

20/10/2013 11:25:55
Quote Anchor link
- 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...
 
- Ariën  -
Beheerder

- Ariën -

20/10/2013 11:27:34
Quote Anchor link
Laat je relevante code eens zien?
 
Yoran Kuiper

Yoran Kuiper

20/10/2013 11:31:40
Quote Anchor link
- Aar - op 20/10/2013 11:27:34:
Laat je relevante code eens zien?


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

?>


Tot hier kwam ik met de productweergave (deze werkt)

en
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
<?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:
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
<?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 :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
//error_reporting(0);
$url = '../Overig/producten/products.xml';
$temp = file_get_contents($url);
 $db = simplexml_load_string($temp);
?>
 
Yoran Kuiper

Yoran Kuiper

21/10/2013 14:19:27
Quote Anchor link
Weet werkelijk niemand hoe je dit kunt maken?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/10/2013 14:46:43
Quote Anchor link
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.
 
Yoran Kuiper

Yoran Kuiper

21/10/2013 21:45:44
Quote Anchor link
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.


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.

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

Wouter Van Marrum

21/10/2013 23:01:21
Quote Anchor link
Misschien moet je proberen voor regel 6 in je function.php dit aan te geven :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$cart = "";
 
Yoran Kuiper

Yoran Kuiper

21/10/2013 23:04:55
Quote Anchor link
Wouter Van Marrum op 21/10/2013 23:01:21:
Misschien moet je proberen voor regel 6 in je function.php dit aan te geven :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$cart = "";


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
 
Wouter Van Marrum

Wouter Van Marrum

21/10/2013 23:14:44
Quote Anchor link
Aaah oke,
Nee sorry had de errors in me hoofd verwisseld.

Als het goed is staat op regel 6 iets als dit toch ? :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4

// Before using $_POST['value']    
if ($_POST['cart']) {    
...


Als dit zo is probeer dan dit te doen :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if(isset($_POST['cart')) {
...


Sorry voor me eerste reactie ben net uurtje klaar met werk en aardig moe haha.
Ik zal het zo wel lezen.
 
Yoran Kuiper

Yoran Kuiper

21/10/2013 23:23:59
Quote Anchor link
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 ? :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4

// Before using $_POST['value']    
if ($_POST['cart']) {    
...


Als dit zo is probeer dan dit te doen :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
if(isset($_POST['cart')) {
...


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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
foreach($xml->$_GET['id'] as $price) {
?>

dat stukje code moet 'íd' uit de xml veld halen, en bij mysql word het zo gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$price
= mysql_query("SELECT * FROM product WHERE id ='$item'");
?>


en dan lijn 68:
waarbij hij 'cart' niet herkent...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_SESSION
['cart'] = $cart;
?>
 
Wouter Van Marrum

Wouter Van Marrum

22/10/2013 10:07:17
Quote Anchor link
Misschien moet je als eerste in je function.php de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$cart = "";
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 :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$check = $xml->_GET['id'];

// 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.
 
Yoran Kuiper

Yoran Kuiper

22/10/2013 10:23:06
Quote Anchor link
Wouter Van Marrum op 22/10/2013 10:07:17:
Misschien moet je als eerste in je function.php de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$cart = "";
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 :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$check = $xml->_GET['id'];

// 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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$_SESSION
['cart'] = $cart;
?>
Gewijzigd op 22/10/2013 10:24:12 door Yoran Kuiper
 
Wouter Van Marrum

Wouter Van Marrum

22/10/2013 11:44:35
Quote Anchor link
kijk anders eens of de sessie cart wel bestaat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
print_r($_SESSION['cart']);


Toevoeging op 22/10/2013 11:56:57:

probeer eens dit te doen :
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
<?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.
 
Yoran Kuiper

Yoran Kuiper

22/10/2013 12:12:11
Quote Anchor link
Wouter Van Marrum op 22/10/2013 11:44:35:
kijk anders eens of de sessie cart wel bestaat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
print_r($_SESSION['cart']);


Toevoeging op 22/10/2013 11:56:57:

probeer eens dit te doen :
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
<?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
 



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.