session καλάθι eshop

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

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

Απάντηση
Άβαταρ μέλους
Isset1988
Δημοσιεύσεις: 44
Εγγραφή: 25 Νοέμ 2011 12:52
Τοποθεσία: California

session καλάθι eshop

Δημοσίευση από Isset1988 » 10 Φεβ 2012 21:03

Καλησπέρα παιδιά!
Έχω μια σελίδα με κάποια προϊόντα.
Τα προϊόντα χωρίζονται σε κατηγορίες.
Κάθε κατηγορία έχει και ένα table σε μια sql.

Προσπαθώ να φτιάξω ένα καλάθι!

Άρχισα και κόλλησα προς το παρόν στη δημιουργία session.
Έστω ότι έχω link cart.php?cat=5&id=3 (όπου cat: κατηγορία προϊόντος, id: id προϊόντος)

Ο κώδικας μου βρίσκεται παρακάτω.
Μπορεί να βρεί κάποιος που κάνω λάθος?

Ευχαριστώ πολύ!

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

<?php
session_start&#40;&#41;;

$cat = $_GET&#91;"cat"&#93;;
$id = $_GET&#91;"id"&#93;;

$max = count&#40;$_SESSION&#91;'products'&#93;&#41;; //βρίσκω πόσα μοναδικά προϊόντα βρίσκονται στο καλάθι

if&#40;$max = 0&#41;&#123;
  $_SESSION&#91;'products'&#93;&#91;1&#93;&#91;'cat'&#93; = $cat;//Δημιουργία Session με products=1
  $_SESSION&#91;'products'&#93;&#91;1&#93;&#91;'id'&#93; = $id;
  $_SESSION&#91;'products'&#93;&#91;1&#93;&#91;'qty'&#93; = 1;
  
&#125;else&#123;

     for&#40;$i=0;$i<$max;$i++&#41;&#123; //Ελέγχω αν το προϊόν υπάρχει ήδη

        if&#40;$cat = $_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'cat'&#93;&#41;&#123;
           if&#40;$id = $_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'id'&#93;&#41;&#123;
             
			 $_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'qty'&#93; = $_SESSION&#91;$i&#93;&#91;'qty'&#93; + 1; //Αντικατάσταση της ποσότητας με +1
			 
		   &#125;else&#123;
			$_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'cat'&#93; = $cat; //Δημιουργία νέων Session's
			$_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'id'&#93; = $id;
			$_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'qty'&#93; = 1;
		   &#125;
   
        &#125;else&#123;
			$_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'cat'&#93; = $cat; //Δημιουργία νέων Session's
			$_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'id'&#93; = $id;
			$_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'qty'&#93; = 1;
		&#125;
	  &#125;	
&#125;

?>

Εικόνα

Άβαταρ μέλους
panxer
Δημοσιεύσεις: 113
Εγγραφή: 26 Ιουν 2011 20:29
Τοποθεσία: Athens, Greece
Επικοινωνία:

session καλάθι eshop

Δημοσίευση από panxer » 10 Φεβ 2012 21:13

Με το ' = ' ορίζεις τιμή. Αν θες να έλεγχο ισότητας: ' == '

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

session καλάθι eshop

Δημοσίευση από gvre » 10 Φεβ 2012 21:17

Λογικά είναι το παρακάτω

if($max == 0){

Άβαταρ μέλους
Isset1988
Δημοσιεύσεις: 44
Εγγραφή: 25 Νοέμ 2011 12:52
Τοποθεσία: California

session καλάθι eshop

Δημοσίευση από Isset1988 » 10 Φεβ 2012 21:22

Εκεί ήταν το λάθος!

Ευχαριστώ πολύ και τους δύο για τις άμεσες απαντήσεις!
Εικόνα

Άβαταρ μέλους
Isset1988
Δημοσιεύσεις: 44
Εγγραφή: 25 Νοέμ 2011 12:52
Τοποθεσία: California

session καλάθι eshop

Δημοσίευση από Isset1988 » 12 Φεβ 2012 15:29

Συνεχίζω με όλο τον κώδικα του καλαθιού μου, η λογική του οποίου είναι η εξής:

- Κάνω get από το link την κατηγορία και το id του προϊόντος.
- Βλέπω αν το link περιέχει τα cat & id
- Στην περίπτωση που το cat και id άδεια, τυπώνω όλα τα session
- Στην περίπτωση που το cat και id είναι γεμάτα,
1- Ελέγχω αν το προϊόν έχει ήδη μπεί νωρίτερα στο καλάθι και αλλάζω την quantity
2- Αν δεν έχει ξαναμπεί στο καλάθι, το καταχωρώ σε session από την αρχή
3- Τυπώνω όλα τα session

Που βλέπετε λάθος? Δεν μπορώ να καταλάβω γιατί δεν εμφανίζει τις ποσότητες κατευθείαν πατώντας πχ.το link order.php?cat2&id=1.
Επίσης, κάθε φορά που πατάω το ίδιο link, δεν αλλάζει μόνο την ποσότητα, αλλά τυπώνει όλο το προϊόν.

Ευχαριστώ πολύ!

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

<?php
session_start&#40;&#41;;

ini_set &#40;'display_errors', 1&#41;;
error_reporting &#40;E_ALL & ~ E_NOTICE&#41;;


$cat = $_GET&#91;"cat"&#93;;
$id = $_GET&#91;"id"&#93;;


$max = count&#40;$_SESSION&#91;'products'&#93;&#41;; //βρίσκω πόσα μοναδικά προϊόντα βρίσκονται στο καλάθι

if&#40;isset&#40;$cat&#41; && isset&#40;$id&#41;&#41;&#123;


$t = $max + 1;

if&#40;$max == 0&#41;&#123;
  $_SESSION&#91;'products'&#93;&#91;1&#93;&#91;'cat'&#93; = $cat;//Δημιουργία Session με products=1
  $_SESSION&#91;'products'&#93;&#91;1&#93;&#91;'id'&#93; = $id;
  $_SESSION&#91;'products'&#93;&#91;1&#93;&#91;'qty'&#93; = 1;
  
&#125;else&#123;

     for&#40;$i=0;$i<$max;$i++&#41;&#123; //Ελέγχω αν το προϊόν υπάρχει ήδη

        if&#40;$cat == $_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'cat'&#93;&#41;&#123;
           if&#40;$id == $_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'id'&#93;&#41;&#123;
             
			 $_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'qty'&#93; = $_SESSION&#91;'products'&#93;&#91;$i&#93;&#91;'qty'&#93; + 1; //Αντικατάσταση της ποσότητας με +1
			 
		   &#125;else&#123;
			$_SESSION&#91;'products'&#93;&#91;$t&#93;&#91;'cat'&#93; = $cat; //Δημιουργία νέων Session's
			$_SESSION&#91;'products'&#93;&#91;$t&#93;&#91;'id'&#93; = $id;
			$_SESSION&#91;'products'&#93;&#91;$t&#93;&#91;'qty'&#93; = 1;
		   &#125;
   
        &#125;else&#123;
			$_SESSION&#91;'products'&#93;&#91;$t&#93;&#91;'cat'&#93; = $cat; //Δημιουργία νέων Session's
			$_SESSION&#91;'products'&#93;&#91;$t&#93;&#91;'id'&#93; = $id;
			$_SESSION&#91;'products'&#93;&#91;$t&#93;&#91;'qty'&#93; = 1;
		&#125;
		
	  &#125;	
&#125;

/* Begin ~ Τυπώνω τα προϊόντα του καλαθιού */
for&#40;$j=0;$j<$max;$j++&#41;&#123; 

$tbl = $_SESSION&#91;'products'&#93;&#91;$j&#93;&#91;'cat'&#93;; //Τοποθετώ το κάθε session σε μεταβλητή
if &#40;$tbl==1&#41;&#123;
  $table = "products";
  &#125;else&#123;
  $table = "offers";
  &#125;
$id = $_SESSION&#91;'products'&#93;&#91;$j&#93;&#91;'id'&#93;;
$qty = $_SESSION&#91;'products'&#93;&#91;$j&#93;&#91;'qty'&#93;;

include&#40;"connector.php"&#41;;  //Σύνδεση στη βάση

$query = "SELECT * FROM $table WHERE id = $id"; //Επιλέγω το προϊόν
if &#40;$r = mysql_query &#40;$query&#41;&#41;&#123;
while &#40;$row = mysql_fetch_array&#40;$r&#41;&#41;&#123;

$product_name = "&#123;$row&#91;'product_name'&#93;&#125;"; 
$product_price = "&#123;$row&#91;'product_price'&#93;&#125;";
$product_image = "&#123;$row&#91;'product_image'&#93;&#125;";

echo "$product_name $product_price $product_image $qty <br />"; //Τυπώνω τα στοιχεία του προϊόντος
&#125;
&#125;
&#125;
/* End ~ Τυπώνω τα προϊόντα του καλαθιού */

&#125;else&#123;

/* Begin ~ Τυπώνω τα προϊόντα του καλαθιού */
for&#40;$j=0;$j<$max;$j++&#41;&#123; 

$tbl = $_SESSION&#91;'products'&#93;&#91;$j&#93;&#91;'cat'&#93;; //Τοποθετώ το κάθε session σε μεταβλητή
if &#40;$tbl==1&#41;&#123;
  $table = "products";
  &#125;else&#123;
  $table = "offers";
  &#125;
$id = $_SESSION&#91;'products'&#93;&#91;$j&#93;&#91;'id'&#93;;
$qty = $_SESSION&#91;'products'&#93;&#91;$j&#93;&#91;'qty'&#93;;

include&#40;"connector.php"&#41;;  //Σύνδεση στη βάση

$query = "SELECT * FROM $table WHERE id = $id"; //Επιλέγω το προϊόν
if &#40;$r = mysql_query &#40;$query&#41;&#41;&#123;
while &#40;$row = mysql_fetch_array&#40;$r&#41;&#41;&#123;

$product_name = "&#123;$row&#91;'product_name'&#93;&#125;"; 
$product_price = "&#123;$row&#91;'product_price'&#93;&#125;";
$product_image = "&#123;$row&#91;'product_image'&#93;&#125;";

echo "$product_name $product_price $product_image $qty <br />"; //Τυπώνω τα στοιχεία του προϊόντος
&#125;
&#125;
&#125;
/* End ~ Τυπώνω τα προϊόντα του καλαθιού */

&#125;

?>
Εικόνα

Άβαταρ μέλους
Isset1988
Δημοσιεύσεις: 44
Εγγραφή: 25 Νοέμ 2011 12:52
Τοποθεσία: California

session καλάθι eshop

Δημοσίευση από Isset1988 » 14 Φεβ 2012 20:28

Καμία ιδέα? Το κοιτάω και το ξανακοιτάω αλλά δε βλέπω λάθος! :(
Εικόνα

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

session καλάθι eshop

Δημοσίευση από korgr » 14 Φεβ 2012 21:48

Και μόνο που το είδα ζαλίστηκα φίλε μου :D
Τόσο πολυδιάστατος πίνακας...
Και γιατί μπερδεύεις την κατηγορία με το session?
Στο session χρειάζεσαι μόνο δύο μεγέθη, το id του προϊόντος και την ποσότητα
Η κατηγορία μπορεί να εξαχθεί από το εκάστοτε προϊόν...

Άβαταρ μέλους
Isset1988
Δημοσιεύσεις: 44
Εγγραφή: 25 Νοέμ 2011 12:52
Τοποθεσία: California

session καλάθι eshop

Δημοσίευση από Isset1988 » 15 Φεβ 2012 09:32

Τα προϊόντα χωρίζονται σε 2 κατηγορίες. (products και offers)
Κάθε κατηγορία έχει διαφορετικό table στην sql μου.

Αναγκαστικά, ο πίνακας πρέπει να είναι πολυδιάστατος.

Σε ευχαροστώ για την απάντηση!
Βρίσκεις καμία λύση?
Εικόνα

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

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

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