IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Garder le contenu d'une classe dans différentes pages


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut Garder le contenu d'une classe dans différentes pages
    Bonjour,

    J'ai crée une class "panier", j'aimerais garder le contenu de cette classe entre les différentes pages.
    Dans la page 'test1.php' par exemple, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $test = new Panier();
    $test->Add(...);
    J'aimerais qu'en allant dans une deuxième page et en marquant :

    cela m'affiche le contenu du panier. Mais je ne vois pas comment garder les informations d'une page à l'autre.
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

  2. #2
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    tu peux utliser des varaibles de session

    page 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <php
    session_start();
     
    $test = new Panier();
    $test->Add(...);
    $_SESSION['panier'] = $test;
    ?>
    Page 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    session_start();
    $test = $_SESSION['panier'];
     
    $test->display();
    Gillou

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    C'est bon j'ai trouvé, on passe tout cela dans une session.
    Je met le code pour ceux qui auraient le même problème :

    Dans 'test1.php' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    session_start();
     
    $_SESSION['panier'] = new panier();
    $_SESSION['panier']->add(...);
     
    echo '<a href="test2.php">Voir le contenu</a>';
    dans 'test2.php' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    session_start();
     
    $_SESSION['panier']->display();
    Et voila on garde les informations d'une page à l'autre
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par LeGilou Voir le message
    Bonjour,

    tu peux utliser des varaibles de session

    page 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <php
    session_start();
     
    $test = new Panier();
    $test->Add(...);
    $_SESSION['panier'] = $test;
    ?>
    Page 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    session_start();
    $test = $_SESSION['panier'];
     
    $test->display();
    Gillou

    Merci de ton aide, j'ai eu l'idée juste après avoir ecris le post...comment n'y ais-je pas pensé avant ??? Mais merci quand mème.
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Je reviens dessus, car je viens de trouver un bug.

    Voila les données passent bien d'une page à l'autre seulement il y a un problème lors du rafraichissement de test2.php.

    En fait dans ma classe j'ai notamment trois fonctions d'affichage :
    - displayPanier (sert a afficher le contenu du panier)
    - displayPrix (sert à afficher le cout total des achats)
    - displayCount (sert à afficher le nombre total d'article)

    Donc quand je rafraichis la page test2.php, le contenu du panier reste le même, mais l'affichage du prix et du nombre d'article augmente à chaque rafraichissements.

    Voila ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Class Panier{
    	// Structure panier : array(id, nom article, prix, quantite)
    	public $panier = array();
    	public $nbArt = 0;
    	public $prixTotal = 0;
     
    	public function add($id,$nomArt,$prixArt,$qteArt){
    		$this->panier[$id]['id'] = $id;
    		$this->panier[$id]['nom'] = $nomArt;
    		$this->panier[$id]['prix'] = $prixArt;
    		$this->panier[$id]['qte'] = $qteArt;
    	}
     
    	public function rem($id,$nbre){
    		if($this->panier[$id]['qte'] - $nbre < 0){
    			echo 'Vous n\'avez pas le droit de retirer plus d\'article que vous en avez.<br/>';
    		}else{
    			$this->panier[$id]['qte'] = $this->panier[$id]['qte'] - $nbre;
    		}
    	}
     
    	public function mod($id,$nbre){
    		if($nbre < 0){
    			echo 'Vous n\'avez pas le droit de mettre une valeur negative dans le nombre d\'articles demandes.<br/>';
    		}else{
    			$this->panier[$id]['qte'] = $nbre;
    		}
    	}
     
    	public function displayPrix(){
    		foreach($this->panier as $cle => $valeur){
    			$this->prixTotal = $this->prixTotal + ($valeur['prix'] * $valeur['qte']);
    		}
    		echo 'Le total de vos achats s\'eleve a : '.$this->prixTotal.' euros.<br/>';
    	}
     
    	public function displayPanier(){
    		if($this->panier == null){
    			echo 'Votre panier est vide.<br/>';
    		}else{
    			foreach($this->panier as $cle => $valeur){
    				echo $cle.' : '.$valeur['nom'].' : '.$valeur['prix'].' : '.$valeur['qte'].'<br/>';
    			}
    		}
    	}
     
    	public function displayCount(){
    		foreach($this->panier as $cle => $valeur){
    			$this->nbArt = $this->nbArt + $valeur['qte'];
    		}
    		echo 'Vous avez dans votre panier : '.$this->nbArt.' articles.<br/>';
    	}
     
    	public function reset(){
    		$this->panier = null;
    		$this->nbArt = 0;
    		$this->prixTotal = 0;
    	}
    }
    test1.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    session_start();
     
    $panier = new Panier();
    $panier->add(1,'voiture',13,10);
    $panier->add(2,'yoyo',5,5);
    $panier->add(3,'peluche',124,9);
    $panier->mod(2,10);
    $panier->rem(1,2);
     
    $_SESSION['panier'] = $panier;
     
     
    echo '<a href="toto.php">voir le contenu</a>';
    test2.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    session_start();
    $panier = $_SESSION['panier'];
     
    $panier->displayPanier();
    $panier->displayCount();
    $panier->displayPrix();
    Ce que je ne comprends pas, c'est le prix et le nombre d'article augmente alors que le panier reste le même...doit avoir un problème dans ma classe, mais je vois pas quoi.
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

  6. #6
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    C'est normal.
    Tu n'initialise pas le prix du panier au début de la boucle.
    Donc à chaque fois que tu rafraichies, il rajoute le prix du panier.

    Au début de la methode displayPrix(), il faut ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->prixTotal = 0;
    Gillou

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Points : 123
    Points
    123
    Par défaut
    Forcément ça marche mieux, du cout j'ai fais pareil pour displayCount() avec le nombre articles...

    Merci
    MacBook Pro 15"
    "La pensée nous permet de rêver, le rêve de vivre".
    My WebSite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/04/2008, 14h14
  2. [DLL] Afficher le contenu d'une dll dans un Tpanel
    Par Fabs dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/08/2007, 14h30
  3. recuprer le contenu d'une classe dans une ennumeration
    Par RBOUKACEM dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/02/2007, 10h28
  4. Réponses: 4
    Dernier message: 10/02/2005, 16h10
  5. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 08h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo