Shopping Cart

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

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

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

Shopping Cart

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

Και πάλι εδώ... Χρησιμοποιώ αυτό τον κώδικα για το cart μου:

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

$cart = $_SESSION['cart'];
$action = $_GET['action'];
switch ($action) {
	case 'add':
		if ($cart) {
			$cart .= ','.$_GET['id'];
		} else {
			$cart = $_GET['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 &#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;
$_SESSION&#91;'cart'&#93; = $cart;
?>
και αυτόν για να προσθέτω items:

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

<a href="cart.php?action=add&id=1;" class="adcart">Add to cart</a>
(το href πλέον θα το κάνω id) :)

Βασικά ενώνεται με την db μου και βάζει στο cart το item με id=1. Παράλληλα όμως με κατευθύνει στη σελίδα του cart.

Πώς μπορώ να το κάνω ώστε να προσθέτει το item και να μένει στην ίδια σελίδα?

Ευχαριστώ

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

Shopping Cart

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

Νομιζω οτι ειναι ερωτηση για PHP/MySql οποτε εισαι σε λαθος ενοτητα..
Anyway, αυτο γινεται με διαφορους τροπους.
Ο πιο απλος ειναι να εχεις το html και τον php κωδικα στην ιδια σελιδα
και το αρχειο βαφτισμενο με προεκταση php.
Επειτα προσθετεις στην html το tag:

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

<form name="toOnomaTisFormasSou" method="POST" action="<?php echo $_SERVER&#91;'PHP_SELF'&#93;; ?>">
Οποτε οι επιλογες δρομολογουνται στην ιδια σελιδα.

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

Shopping Cart

Δημοσίευση από Pavlos1316 » 06 Μάιος 2011 09:32

να εχεις το html και τον php κωδικα στην ιδια σελιδα

Αν κατάλαβα καλά, να βάλω τον κώδικα του cart σε κάθε σελίδα όπου έχω Items.. σωστά?
και το αρχειο βαφτισμενο με προεκταση php
έτσι έχω όλα τα αρχεία, οπότε... καλά ως εδώ.
action="<?php echo $_SERVER['PHP_SELF']; ?>">
Αυτό να το προσθέσω...

Εδώ όμως δε χρειάζεται να αλλάξω κάτι?

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

<a href="cart.php?action=add&id=1;" class="adcart">Add to cart</a>
να το κάνω <submit button ?>, αλλά χρειάζομαι το "add&id=1" γιατί αυτό ορίζει το ποιό item θα προστεθεί. πχ για το 2ο Item είναι "add&id=2"Ευχαριστώ.

.1 Υπάρχει τρόπος να μετακινηθεί η συζήτηση στην ενότητα PHP/MySQL να το κάνω?
.2 Όταν βρεθεί η λύση για ένα θέμα πώς το μαρκάρεις ως [solved] ή δεν γίνεται?

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

Shopping Cart

Δημοσίευση από korgr » 06 Μάιος 2011 11:00

Εξαρτάται τον τρόπο υλοποίησης του cart.
Αν είναι PHP SESSION ή SQL based (όπως η περίπτωσή σου), τότε γίνεται με ajax, διαφορετικά αν είναι JS based (μέγα λάθος) τότε γίνεται με απλή κλήση μιας js function πχ

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

<a href="javascript&#58;void&#40;0&#41;" on click="addTo Cart&#40;id, quantity&#41;;" class="adcart">Add to cart</a>

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

Shopping Cart

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

με ajax πώς θα ήταν?

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

Shopping Cart

Δημοσίευση από Christianago » 06 Μάιος 2011 11:27

korgr έγραψε:Εξαρτάται τον τρόπο υλοποίησης του cart.
Αν είναι PHP SESSION ή SQL based (όπως η περίπτωσή σου), τότε γίνεται με ajax, διαφορετικά αν είναι JS based (μέγα λάθος) τότε γίνεται με απλή κλήση μιας js function πχ

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

<a href="javascript&#58;void&#40;0&#41;" on click="addTo Cart&#40;id, quantity&#41;;" class="adcart">Add to cart</a>
Θα του προτεινα να μην μπλεξει με ajax ακομα, ας το κανει με pure PHP προς το παρον.
Αν κατάλαβα καλά, να βάλω τον κώδικα του cart σε κάθε σελίδα όπου έχω Items.. σωστά?
Αυτο που σου λεω ειναι σε καθε σελιδα για την οποια δε θες αναδρομολογηση σε διαφορετικη σελιδα ειναι να προσθεσεις το παραπανω tag. HTML και PHP θα τις βαλεις μαζι σε αυτες τις σελιδες, δεν εχει σημασια τι θες να κανεις συγκεκριμενα με το shopping cart.
<a href="cart.php?action=add&id=1;" class="adcart">Add to cart</a>
Θα γινει σε:

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

<input type="submit" value="Add to cart"/>
ενω θα πρεπει να εχεις καποιο element πχ. πεδιο κειμενου, με name="id1"

Στην PHP θα παρεις το 'αποτελεσμα' της ενεργειας σου παιρνοντας την τιμη του element καπως ετσι:

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

$productID = $_POST&#91;'id1'&#93;;
Αυτος ειναι ο πιο απλος τροπος αν αυτο ψαχνεις.
Εδειξες μονο τον PHP κωδικα σου. Θα βοηθουσε περισσοτερο αν μας ελεγες και την HTML.

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

$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; 
Στην ουσια σου ακυρωσα τον παραπανω κωδικα σου. Αυτο που θες γινεται χωρις με λιγοτερες εντολες μαζι με τον ελεγχο που θες να κανεις.
Επισης υποθετω οτι η $action παιρνει το αποτελεσμα απο ενα select menu.
Δε χρειαζεται να το παρεις με $_GET εφοσον δε κανεις (α)συγχρονη αιτηση (πχ. μεσω Ajax).
.2 Όταν βρεθεί η λύση για ένα θέμα πώς το μαρκάρεις ως [solved] ή δεν γίνεται?
Αυτο το ψαχνω κι εγω. :D

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

Shopping Cart

Δημοσίευση από Pavlos1316 » 06 Μάιος 2011 12:06

Ένα κομμάτι από τη σελίδα με τα items που ακολουθεί μετά τον php κώδικα...:

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

<!DOCTYPE html>
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MaryKayCyprus</title>
<link rel="stylesheet" media="all" type="text/css" href="style.css" />
</head>

<body>

<p class="difftext">...body</p>
<br />
<br />
<form name="body" method="post" action="<?php echo $_SERVER&#91;'PHP_SELF'&#93;; ?>">
<table width="95%" align="center">
  <tr>
    <td width="10%"><img src="../photos/wb0001.png">
</td>
    <td width="35%">
    <span class=itmttl>blablablablablabla</span>
    <br />
    <a href="cart.php?action=add&id=1" class="adcart">Add to cart</a>
    <br />
    <br />
    <span class=itmttl>blablablablablabla</span>
    <br />
    <a href="cart.php?action=add&id=2;" class="adcart">Add to cart</a>
</td>
(εννοείται ότι στο τέλος κλείνουν όλα τα tags κανονικά)

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

Shopping Cart

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

Χμμ, απο οτι βλεπω εχεις εναν πινακα με προιοντα και θες ο χρηστης οταν παταει σε ενα link διπλα στο προϊον (καλυτερα να κανει κλικ σε ενα κουμπι η αποψη μου) να προστιθεται στο καλαθι αγορων του και να φαινεται το αποτελεσμα αυτο στο χρηστη.
Θες τοτε κατι σε ajax. Μεσω ajax requests θα κανεις να ανανεωνεται μονο ενα μερος της σελιδας
χωρις να περιμενεις να ανανεωθει ολοκληρη-κατι που μπορει να καθυστερησει.
Διαβασε αυτο εδω για ajax.

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

http&#58;//www.tizag.com/ajaxTutorial/
Κι αυτο εδω για το πώς να πάρεις τις επιλογες του χρηστη οταν παταει το submit.

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

http&#58;//www.homeandlearn.co.uk/php/php4p7.html
Εσυ το $_POST θα το αντικαταστησεις με το $_GET.

Γινεται και η προηγουμενη λυση που σου ανεφερα και ειναι πιο απλη,
αλλα δεν ειναι αρκετα διαδραστικη και φιλικη στο χρηστη οσο με ajax.

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

Shopping Cart

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

Πω πω... :) πολλά πράγματα σε 2 σελίδες.... :)

Αυτό που με τρελλένει είναι με την ajax που δεν έχω ιδέα πώς να τη χρησιμοποιήσω... και την js επίσης....

Όσο για το λινκ της php, αφού πλεόν θα χρησιμοποιήσω το GET τί διαφορά θα έχει ο νέος κώδικας με αυτόν που ήδη χρησιμοποιώ????

Δηλ απλά θα είναι μικρότερος ή έχει κι άλλα πλεονεκτήματα???

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

Shopping Cart

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

Καλο ειναι οταν φτιαχνεις ενα emarket, κατι που μπορει να ειναι σχετικα συνθετο προγραμμα,
να χρησιμοποιεις μερικες γλωσσες - τεχνολογιες και οχι μονο μια.
Ο λογος ειναι οτι μια γλωσσα δεν μπορει να τα κανει ολα (καλα).
Αν δεν προτιμας τα sites για εκμαθησηση ajax υπαρχουν βιβλια και μαλιστα
μερικα ειναι στα ελληνικα.
Αυτο που θες ουσιαστικα ειναι να ανανεωνεται το καλαθι αγορων του χρηστη
χωρις να περιμενεις να ανανεωθει ολη η σελιδα. Αυτο γινεται καλυτερα μεσω ajax.
Δεν χρειαζεται να αλλαξεις ολοκληρο τον κωδικα που εχεις αν χρησιμοποιησεις ajax.
Μονο να προσθεσεις javascript στη σελιδα σου. Επισης οταν κανεις ajax,
τοτε στη μια σελιδα θα εχεις html και ajax και στην αλλη php.
Αν προτιμας να το κανεις μεσω PHP μονο, τοτε πρεπει να εχεις μονο $_POST στον κωδικα σου
για να το κανεις σωστα. Εσυ διαλεγεις.
Οτι και να κανεις συνιστω να αλλαξεις κωδικα οπως:

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

<a href="cart.php?action=add&id=1" class="adcart">Add to cart</a> 
καθως τα link tags εχουν σχεδιαστει για να οδηγουν σε ιστοσελιδες κατα κυριο λογο.
Μπορεις βεβαια να εχεις link tags για να παρεις τις επιλογες του χρηστη,
αλλα εφοσον οπως ειπες δεν τα πας καλα με την javascript μπορεις να εχεις
προβλημα να τα χειριστεις.

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

Shopping Cart

Δημοσίευση από korgr » 06 Μάιος 2011 16:24

Εμένα πάλι μου κάνει εντύπωση, το ότι όλοι θέλουν να κάνουν τα σύνθετα, χωρίς να μάθουν τα απλά!
Είναι σαν να θες να ασχοληθείς με φιλοσοφικά κείμενα, εχοντας μάθει 4-5 γράμματα από την αλφάβητο!

To cart και δη το διαδραστικό, δεν είναι απλό πράγμα...

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

Shopping Cart

Δημοσίευση από Christianago » 06 Μάιος 2011 16:37

Φιλοσοφικα μιλωντας μπορει να μη φταιει αυτος που κανει τα πρωτα του βηματα στον προγραμματισμο,
αλλα το γεγονος οτι υπαρχουν τοσες πολλες γλωσσες και τεχνολογιες που δημιουργουν συγχυση στο χρηστη.
Δεν υπαρχει καποιος να του εξηγησει το σκοπο που εξυπηρετει καθε γλωσσα, τις λειτουργιες της, γιατι και που προτιμαται κλπ.
Οποτε ο προγραμματιστης μεσα σε ολο αυτο το χαμο μαλλον επιλεγει λιγες γλωσσες αρχικα για να τις μαθει καλα.
Πραγματικα μπορει να θελει να μαθει αλλα εχει την εντυπωση οτι μπορει να υλοποιησει καποιο προγραμμα με αυτα που ηδη ξερει.
Ευτυχως μεσα σε ολο αυτο το χαμο υπαρχει και το χαος του ιντερνετ (και το freestuff ;) ) για να προσφερει μια χειρα βοηθειας.

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

Shopping Cart

Δημοσίευση από Pavlos1316 » 06 Μάιος 2011 17:06

Εγώ συμφωνώ και με τους 2 σας, απλά υπάρχουν πράγματα τα οποία είναι τόσο σύνθετα, (πχ το cart, όπως προαναφέρθηκε) τα οποία θέλουν "Α" χρόνο για να τα φτιάξεις μόνος...

Και καθε μέρα ξεπηδούν νέα πράγματα που καμιά φορά αναιρούν τα προηγούμενα, πχ από frames σε divs και κάποιοι ακόμα προτείνουν tables ενώ πολλοί άλλοι διαφωνούν.

Έτσι αν δεν ασχολείσαι εντελώς επαγγελματικά με αυτό το πράγμα, (πχ εγώ φτιάχνω 1-2 σελίδες το χρόνο, είτε για την πλάκα μου είτε για άτομα δικά μου [που φυσικά δε βιάζονται :kaloe: ]) αναζητάς κάποιες λύσεις χωρίς να χρειαστεί να μάθεις όλα όσα πρέπει να ξέρεις αμέσως, αλλά σιγά-σιγά και μέσω παραδειγμάτων.

Δηλ αν έλθει ένας άσχετος με το hardware του υπολογιστή και του δείξω 3-4 φορές πώς φτιάχνεται, δηλ να μάθει την πράξη χωρίς να μάθει τη θεωρία, θα το μάθει και μάλιστα καλύτερα από κάποιον που μπορεί να έχει ήδη μάθει όλη τη θεωρία, αλλά ακόμα να ασχοληθεί με την πράξη.

Όσο για μένα, εδώ και 2 χρόνια επέλεξα να μαθαίνω από μόνος μου (όσο μπορώ και όσο μου επιτρέπει ο χρόνος μου) την php. Τώρα που χρειάστηκα να μπω λίγο σε πιο βαθιά νερά, και επειδή ακριβώς δεν έχω κάποιον να μου εξηγήσει και να μου κάνει κατανοητά τα όσα διαβάζω, αναγκαστικά ψάχνω σιγά σιγά κάποιες λύσεις, ειδικά για πιο σύνδετο προγραμματισμό στο διαδύκτιο και από ανθρώπους που ήδη γνωρίζουν τί λένε.

Π.χ. Είχα πάρει ένα έτοιμο js για να ανοίγει μια σελίδα μέσα σε μια targeted div. Ενώ όμως δούλευε μια χαρά, όσο κι αν προσπάθησα δεν κατάλαβα λέξη από όσα έλεγε. Έτσι το ψαξα λίγο με php και με τη βοήθεια κάποιου φίλου εδώ μέσα (όσον αφορά την jquery) το λυσα το πρόβλημα. http://www.freestuff.gr/forums/viewtopic.php?t=56056 (η μισή συζήτηση χάθηκε στο ότι εγώ αγνοούσα κάτι από την συμπεριφορά της jquery και ενώ το script δούλευε μου πήρε 2 μέρες ώσπου να βρω τί πήγαινε λάθος.)

Έτσι, για μένα που δεν έχω ιδέα από ajax & js τα φορουμ είναι μεγάλη βοήθεια. Απλά καμιά φορά, επειδή τα sites και τα βοηθητικά scripts χρησιμοποιούν τις γλώσσες προγραμματισμού με διαφορετικό τρόπο, για κάποιον που δεν τις γνωρίζει είναι αρκετά συγχιτικό.

Σας ευχαριστώ...

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

Shopping Cart

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

Συμφωνω μαζι σου φιλε μου κι εγω εχω ακομα αυτα τα προβληματα (οπως και οι περισσοτεροι προγραμματιστες φανταζομαι).
Η ιδεα ειναι οτι καθε γλωσσα εκτος απο γραμματικη και συντακτικο εχει και τη φιλοσοφια, συμπεροφορα της κι αυτο γινεται ακομη πιο εντονο οταν αλληλεπιδρα με αλλες γλωσσες.

Μπορεις να ξεκινησεις να γραφεις κωδικα και οπου κολλας να το λες.
Ετοιμες λυσεις δε θα βρεις ευκολα (δε λεω οτι ψαχνεις κατι τετοιο) για το λογο
οτι οι συνανθρωποι εδω πρεπει να καταλαβουν τι θες να κανεις ακριβως.
Κι ειναι πιο ευκολο να διορθωνουν εκει που κανεις λαθος, παρα να γραφουν ολοκληρο
κωδικα απο το μηδεν, τον οποιο ο αλλος πολυ πιθανον να το χρησιμοποιησει για λιγο διαστημα,
αλλα μετα να τον διαγραψει για λογους αριστοποιησης του script η αλλους λογους.

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

Shopping Cart

Δημοσίευση από fafos » 06 Μάιος 2011 17:21

ta exoume ksanapei.. to lathos ton neon einai oti ksekinate na feiaxete to K,L xoris na gnorizete to A.. prepei na ta pairnete ola apo thn arxh..

tora gia thn ajax.. h vasikh tou douleia einai na kanei energeies xoris na ananeonei selides, formes klp... me ton kairo prostethikan kai ta effedakia gia na thn katanthsoun san thn flash..

sto sygkekrimeno provlhma paizeis me ajax load, ajax get, ajax post klp.. o php kodikas paei se xehoristh selida kai kaleitai meso ajax.. an gnorizeis enan tropo apo tous parapano mporeis na kaneis oti thes.. alla an apo ajax xereis mono enan apo tous parapano tropous epaixes kai exases... tha mas trelaneis stis erothseis edo mesa giati tha sou vgainoun ta provlhmata synexeia mprosta..

psakse gia ena vohthima opou stelno email me forma.. einai akrivos auto pou zhtas na kaneis.. aplos anti gia email trexeis php-mysql gia na valeis proionta sthn cart kai na gyriseis ta apotelesmata..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Απάντηση

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

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

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