Shopping Cart

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Shopping Cart

Δημοσίευση από korgr » 08 Μάιος 2011 21:36

Δάσκαλε άλλο καπέλο αν έχεις σύνθετο καλάθι.
Εγώ λέω για περιπτώσεις "αυτό είναι, τόσο κάνει, πόσα θες?"

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Shopping Cart

Δημοσίευση από fafos » 08 Μάιος 2011 22:13

kontopatrioth milao genika gia sosto plano tou programmatisth pou asxoleitai epaggelmatika.. den mporo se kathe eshop na feiaxno nees functions h classes.. exo mia class kai emfanizo sto kathe katasthma oti zhtaei o idiokthths.. kati san framework..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Shopping Cart

Δημοσίευση από Pavlos1316 » 14 Μάιος 2011 21:28

Καλησπέρα,

Μου βγάζει blank page με αυτό το error, ενώ την ίδια ώρα ο κώδικας δουλεύει:
Undefined index: cart in ..... line 13.
Η line 13 είναι αυτή:
$cart = $_SESSION['cart'];
σε αυτόν το κώδικα (τον οποίο έχω ξαναποστάρει):

Κώδικας: Επιλογή όλων

<?php
error_reporting&#40;E_ALL&#41;; 
ini_set&#40;"display_errors", 1&#41;;  
// Include MySQL class
require_once&#40;'x1.php'&#41;;
// Include database connection
require_once&#40;'x2.php'&#41;;
// Include functions
require_once&#40;'x3.php'&#41;;
// Start the session
session_start&#40;&#41;;
// Process actions
&#91;b&#93;$cart = $_SESSION&#91;'cart'&#93;;&#91;/b&#93;
$action = $_GET&#91;'action'&#93;;
switch &#40;$action&#41; &#123;
	case 'add'&#58;
		if &#40;$cart&#41; &#123;
			$cart .= ','.$_GET&#91;'id'&#93;;
		&#125; else &#123;
			$cart = $_GET&#91;'id'&#93;;
		&#125;
		break;
	case 'delete'&#58;
		if &#40;$cart&#41; &#123;
			$items = explode&#40;',',$cart&#41;;
			$newcart = '';
			foreach &#40;$items as $item&#41; &#123;
				if &#40;$_GET&#91;'id'&#93; != $item&#41; &#123;
					if &#40;$newcart != ''&#41; &#123;
						$newcart .= ','.$item;
					&#125; else &#123;
						$newcart = $item;
					&#125;
				&#125;
			&#125;
			$cart = $newcart;
		&#125;
		break;
	case 'update'&#58;
	if &#40;$cart&#41; &#123;
		$newcart = '';
		foreach &#40;$_POST as $key=>$value&#41; &#123;
			if &#40;stristr&#40;$key,'qty'&#41;&#41; &#123;
				$id = str_replace&#40;'qty','',$key&#41;;
				$items = &#40;$newcart != ''&#41; ? explode&#40;',',$newcart&#41; &#58; explode&#40;',',$cart&#41;;
				$newcart = '';
				foreach &#40;$items as $item&#41; &#123;
					if &#40;$id != $item&#41; &#123;
						if &#40;$newcart != ''&#41; &#123;
							$newcart .= ','.$item;
						&#125; else &#123;
							$newcart = $item;
						&#125;
					&#125;
				&#125;
				for &#40;$i=1;$i<=$value;$i++&#41; &#123;
					if &#40;$newcart != ''&#41; &#123;
						$newcart .= ','.$id;
					&#125; else &#123;
						$newcart = $id;
					&#125;
				&#125;
			&#125;
		&#125;
	&#125;
	$cart = $newcart;
	break;
&#125;
&#91;b&#93;$_SESSION&#91;'cart'&#93; = $cart;&#91;/b&#93;
?>
Καμιά εισήγηση?

Ευχαριστώ

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Shopping Cart

Δημοσίευση από Christianago » 14 Μάιος 2011 21:56

Ο κωδικας δουλευει δηλαδη συνεχιζει αφου βρηκε το λαθος επειδη η php δεν πεταει fatal error σε αυτην την περιπτωση.
Eίσαι σίγουρος οτι εχεις ορισει το $_SESSION['cart'] σε προηγουμενη συνεδρια;

Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Shopping Cart

Δημοσίευση από Pavlos1316 » 14 Μάιος 2011 22:25

Όχι... σίγουρος δεν είμαι... έχω μπλεχτεί... μια δίνει το σφάλμα και μια όχι... επί μια ώρα έδινε blank page χωρίς το σφαλμα...

μετά ξαφνικά πέταξε και το σφάλμα...

Μετά ο ie δεν το έδινε και το δίνει ο firefox!!!!

Δεν ξέρω...

To μόνο που έχω (είναι η τευλευταία γραμμή του κώδικα:
$_SESSION['cart'] = $cart;

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Shopping Cart

Δημοσίευση από Christianago » 14 Μάιος 2011 22:36

Δινεις τιμη στο $_SESSION['cart'] μονο στη συγκεκριμενη σελιδα που εδωσες ή και σε άλλες;
Αν ισχυει το 2ο τοτε πρεπει να ποσταρεις και τον κωδικα απο τις αλλες σελιδες,
τουλαχιστον οσες εχουν σχεση με τη συνεδρια.
Γιατι αν ισχυει το 1ο καταλαβαινεις οτι ο πινακας $_SESSION['cart'] θα ειναι παντα ιδιος αφου δεν τον εχεις αρχικοποιησει:
Δηλαδη κανεις $cart = $_SESSION['cart'], που σημαινει $cart = NULL

Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Shopping Cart

Δημοσίευση από Pavlos1316 » 14 Μάιος 2011 22:53

Αυτό $cart = $_SESSION['cart']; υπάρχει και σε αυτό τον κώδικα.
Αλλά εδώ δεν υπάρχει το $_SESSION['cart'] = $cart;

Κώδικας: Επιλογή όλων

<?php
function writeShoppingCart&#40;&#41; &#123;
	$cart = $_SESSION&#91;'cart'&#93;;
	if &#40;!$cart&#41; &#123;
		return 'no items';
	&#125; else &#123;
		// Parse the cart session variable
		$items = explode&#40;',',$cart&#41;;
		$s = &#40;count&#40;$items&#41; > 1&#41; ? 's'&#58;'';
		return ''.count&#40;$items&#41;.' item'.$s.'';
	&#125;
&#125;

function showCart&#40;&#41; &#123;
	global $db;
	$cart = $_SESSION&#91;'cart'&#93;;
	if &#40;$cart&#41; &#123;
		$items = explode&#40;',',$cart&#41;;
		$contents = array&#40;&#41;;
		foreach &#40;$items as $item&#41; &#123;
			$contents&#91;$item&#93; = &#40;isset&#40;$contents&#91;$item&#93;&#41;&#41; ? $contents&#91;$item&#93; + 1 &#58; 1;
		&#125;
		$output&#91;&#93; = '<form action="cart-add.php?action=update" method="post" id="cart">';
		$output&#91;&#93; = '<table class="tblcart">';
		foreach &#40;$contents as $id=>$qty&#41; &#123;
			$sql = 'SELECT * FROM stock WHERE ID = '.$id;
			$result = $db->query&#40;$sql&#41;;
			$row = $result->fetch&#40;&#41;;
			extract&#40;$row&#41;;
			$output&#91;&#93; = '<tr>';
			$output&#91;&#93; = '<td class="tdcart">
				     <a href="cart-add.php?action=delete&id='.$id.'">Remove</a>
				     </td>';
			$output&#91;&#93; = '<td class="tdcart">'.$Item.' by '.$Description.'</td>';
			$output&#91;&#93; = '<td class="tdcart">&pound;'.$Price.'</td>';
			$output&#91;&#93; = '<td class="tdcart"><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" style="text-align&#58; center;"/></td>';
			$output&#91;&#93; = '<td class="tdcart">&pound;'.&#40;$Price * $qty&#41;.'</td>';
			$total += $Price * $qty;
			$output&#91;&#93; = '</tr>';
		&#125;
		$output&#91;&#93; = '<tr>';
		$output&#91;&#93; = '<td class="tdcart">
			     <p>Grand total&#58; <strong>&pound;'.$total.'</strong></p>
			     </td>';
		$output&#91;&#93; = '</tr>';
		
		$output&#91;&#93; = '<tr>';		
		$output&#91;&#93; = '<td class="tdcart">
			     <button type="submit" name="submit">Update Cart</button>
			     </td>';
		$output&#91;&#93; = '</tr>';
		$output&#91;&#93; = '</table>';
		$output&#91;&#93; = '</form>';
	&#125; else &#123;
		$output&#91;&#93; = 'Your shopping cart is empty.';
	&#125;
	return join&#40;'',$output&#41;;
&#125;
?>

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Shopping Cart

Δημοσίευση από Christianago » 14 Μάιος 2011 23:17

Τι ακριβως θες να κρατησει η $_SESSION['cart']?
Εστω σε μια σελιδα πρεπει να υπαρχει: $_SESSION['cart'] = $cart;
Και το $cart φυσικα πρεπει να περιεχει την τιμη που θες ωστε η μεταβλητη συνοδου
$_SESSION['cart'] να ειναι προσπελασιμη απο ολες τις υπολοιπες σελιδες.

Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Shopping Cart

Δημοσίευση από Pavlos1316 » 14 Μάιος 2011 23:30

Μάλιστα... γι αυτό δηλ, όταν ο κώδικας του cart-add Βρισκόταν μέσα στο cart.php όλα δούλευαν (ή τουλάχιστον έτσι νομίζω)...

Ενώ μετά που έφτιαξα ξεχωριστό αρχείο για να έχω τον κώδικα (αυτό που τώρα ονομάζω cart-add.php) δεν υπάρχει πουθενά το $_SESSION['cart'] = $cart;

Δηλ να το προσθέσω π.χ. στο αρχείο items.php ή sto cart.php όπου και βρισκόταν από την αρχή..

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Shopping Cart

Δημοσίευση από Christianago » 14 Μάιος 2011 23:35

Δες εδω: http://gr.php.net/manual/en/function.session-start.php
Τα πρωτα παραδειγματα ειναι απλα θα καταλαβεις τη λογικη.

Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Shopping Cart

Δημοσίευση από Pavlos1316 » 14 Μάιος 2011 23:57

Τη λογική... την έχω καταλάβει, ορίζεις μια τιμή για το $_SESSION['xxx'] και μετά το καλείς όποτε θες και σου δίνει την τιμή που καθόρισες.
το γμν το cart δεν καταλαβαίνω...

Πρώτα έρχεται και λέει
$cart = $_SESSION['cart'];
και μετά έρχεται και ορίζει το
$_SESSION['cart'] = $cart;

και αυτό δε δίνει το σφάλμα από την πρώτη φορά που πατάς το add, αλλά μόνο όταν κάνεις κλικ σε άλλο λινκ και επιστρέψεις ξανά για να ξανακάνεις add.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Shopping Cart

Δημοσίευση από fafos » 15 Μάιος 2011 00:04

h session ths cart prepei na einai array.. an p.x. paro 1 kilo patates kai synexiso ta psonia kai gyriso na valo ena kilo ntomates xrhsimopoio thn array_push() gia na prostheso tis ntomates sthn array..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Shopping Cart

Δημοσίευση από Christianago » 15 Μάιος 2011 00:17

Νομιζω καταλαβα τι λες. Αυτο ειναι ενα λογικο λαθος.
Πρεπει να κανεις unset($_SESSION['cart']) τη στιγμη που η $_SESSION['cart'] θα εχει λαβει τη νεα τιμη. Δηλαδη:

Κώδικας: Επιλογή όλων

$_SESSION&#91;'cart'&#93; = $cart;
unset&#40;$_SESSION&#91;'cart'&#93;&#41; ;
Ετσι η $_SESSION['cart'] θα παρει τη νεα τιμη απο το καλαθι σου. Στο ειπα αυτο για να το θυμασαι.
Αλλαζοντας θεμα, το προβλημα σου λοιπον μπορει να ειναι στο οτι νεο προιον που προσθετεις να μην το περνας στην $cart. Αυτο σημαινει το:
Undefined index: cart in ..... line 13.
Επισης αυτην writeShoppingCart() απο που την καλεις;
Αυτη η συναρτηση δεν ανανεωνει το καλαθι σου λογικα οταν το κανεις update;

Edit: Αυτο που λεει ο fafos ειναι σωστο. Πρεπει να συμπεριφερθεις στη $_SESSION['cart'] σαν πινακα

Pavlos1316
Δημοσιεύσεις: 44
Εγγραφή: 30 Απρ 2011 02:11

Shopping Cart

Δημοσίευση από Pavlos1316 » 15 Μάιος 2011 00:35

Έχω το λινκ στο <div header> και τον κώδικα στο 2o αρχείο που έδειξα πιο πάνω... και το ανοίγω στο <div content>.

ο fafos, έστω ότι
<?php $_$ESSION['fafos']='den ton gnorizo';
{
echo "katalava oti gnvrizei polla pragmata, apla ago den mporv na ta matho en mia nixti!!!"
}
?>

Έπρεπε να κάνω ένα αστείο γιατί τρελλάθηκα με το ΌΛΟ CART... Ότι είπα το εννοώ, ελπίζω να μην παρεξηγηθεί ο τρόπος που το είπα :)

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Shopping Cart

Δημοσίευση από Christianago » 15 Μάιος 2011 00:40

Χεχε...ωραιο, αλλα το $_$ESSION['fafos'] πρεπει να το γνωριζεις καθε φορα.
Εσυ οριζεις την τιμη που θα εχει σε καθε refresh ή αλλαγη σελιδας.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες