αποθήκευση σε session

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

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

Απάντηση
dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

αποθήκευση σε session

Δημοσίευση από dpa » 20 Φεβ 2012 18:30

Έχω κάποια προϊόντα και θέλω όταν κάνω κλικ επάνω σε ένα να αποθηκεύσω τον κωδικό του σε session

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

πχ $_SESSION['product'] = $_GET['code_product'];
όταν όμως πάω να τα εμφανίσω με την foreach δεν μου τα φέρνει

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

	 foreach($_SESSION['product'] as $element) {
		echo $key;
	 }

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

αποθήκευση σε session

Δημοσίευση από panxer » 20 Φεβ 2012 18:52

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

foreach($_SESSION['product'] as $element) { 
      print_r($element); 
    } 

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

αποθήκευση σε session

Δημοσίευση από korgr » 20 Φεβ 2012 19:43

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

$_SESSION['product'][] = $_GET['code_product'];
Είναι πίνακας, όχι string...

dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

αποθήκευση σε session

Δημοσίευση από dpa » 20 Φεβ 2012 21:44

Fatal error: [] operator not supported for strings in

το έβαλα και εμφανίζει αυτό

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

αποθήκευση σε session

Δημοσίευση από panxer » 20 Φεβ 2012 23:35

panxer έγραψε:

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

foreach($_SESSION['product'] as $element) { 
      print_r($element); 
    } 
Όπως στο έβαλα θα τυπώσει τα περιεχόμενα του πινακα $_SESSION['product']
αν δεν είναι πίνακας, τότε δεν θέλει foreach, πάρε κανονικά echo $_SESSION['product']

επειδή δεν μπορώ να ξέρω τί έχεις κάνει πιο πάνω, δοκίμασε:

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

if (!isset($_SESSION['product']))
{
         echo "no such variable is set";
}
else
{
         if (is_array($_SESSION['product']))
                 {
                          foreach($_SESSION['product'] as $element) 
                               { 
                                        print_r($element); 
                                }
                  }
          else  
                  {
                           echo $_SESSION['product']; 
                  }
} 
   


το παραπάνω τσεκάρει αν υπάρχει η SESSION['product'],
αν δεν υπάρχει στο λέει.
αν υπάρχει βλέπει αν είναι πίνακας, αν πίνακας τυπώνει τα περιεχόμενα ένας προς ένα,
αν δεν είναι πίνακας (δλδ είναι string) τυπώνει την τιμή του string.

To έγραψα λίγο απλοϊκά για να το καταλαβαίνεις. Μπορεί να γραφεί σε μια γραμμή.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

αποθήκευση σε session

Δημοσίευση από ThyClub » 21 Φεβ 2012 08:26

dpa έγραψε:Fatal error: [] operator not supported for strings in

το έβαλα και εμφανίζει αυτό

Το [] θα το βάλεις εκεί που θέλεις να γράψεις στον πίνακα και όχι εκεί που θέλεις να διαβάσεις. Άρα θα κάνεις:

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

$_SESSION['product'][] = $_GET['code_product'];

foreach($_SESSION['product'] as $element) {
      echo $element;
    } 
Βέβαια θα πρέπει να έχεις ορίσει στην αρχή του script σου το $_SESSION['product'] σαν πίνακα με $_SESSION['product']=array();

dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

αποθήκευση σε session

Δημοσίευση από dpa » 21 Φεβ 2012 11:05

Παιδιά το έκανα έτσι και δουλεύει:

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

if( isset($_GET['code_product']) && !empty($_GET['code_product'])  ) { 
	$d = $_GET['code_product'];
	
		if( !isset($_SESSION['product']) ) {
			$_SESSION['product'] = array();
		}
		
		if( isset($_SESSION['product']) ) {
			array_push($_SESSION['product'],$d);	
		}


		
	
}

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

	foreach($_SESSION['product'] as $key => $v) {
    echo $key." ".$v."<br />";
&#125;

Όταν όμως θέλω να διαγράψω μια τιμή από το array πως θα το κάνω ??

το δοκίμασα έτσι αλλά δεν παίζει

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

unset&#40;$_SESSION&#91;'product'&#93;&#91;&#93;&#91;$d&#93;&#41;;
Ξέρει κανείς πως θα διαγράψω μια τιμή ??

dpa
Δημοσιεύσεις: 631
Εγγραφή: 29 Μαρ 2008 13:55

αποθήκευση σε session

Δημοσίευση από dpa » 21 Φεβ 2012 12:34

Το βρήκα το έκανα έτσι:

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

		if&#40;$_GET&#91;'remove'&#93; == 1&#41; &#123;
			foreach&#40;$_SESSION&#91;'product'&#93; as $key => $v&#41; &#123;
				if&#40; $d === $v &#41; &#123;
				unset&#40;$_SESSION&#91;'product'&#93;&#91;$key&#93;&#41;;
				&#125;
			&#125;
			ksort&#40;$_SESSION&#91;'product'&#93;&#41;;
		&#125; 

Απάντηση

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

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

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