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

PHP & Base de données Discussion :

Session pour panier [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut Session pour panier
    Bonjour a tous,
    avant de me lancer dans mon projet de faire un panier en php/sql j'aurais besoin de quelques informations :
    1) Je créer une variable $_SESSION['article'] qui contiendra les id des articles.
    Pour mettre 1 id dans la variable je comprend ... mais comment ajouté plusieurs id sans enlevez les autres ??
    Merci
    Hugo

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Pour faire cela il faut que tu créer un tableau en session !
    Pour stocker plusieurs valeurs il est évident qu'il te faut un tableau et voici comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['Tab_Session'] = array(); // on déclare un tableau en session
    $Tab = array(1,2,3); // Tu place tes id
    $_SESSION['Tab_Session'] = $Tab; //On met le tableau en session
    J'ai récupérer ce code via goOgle ! apparemment ça a l'air de marcher ^^

    Bon travail !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Re
    Regarde sur le net les fonctions sur les tableaux :

    http://fr.php.net/array_push

    qq exemples :
    array_push($stack, "apple", "raspberry"); empile les éléments à la fin du tableau
    $fruit = array_shift($stack); dépile un élément au début du tableau
    array_unshift($queue, "apple", "raspberry"); empile les éléments au début du tableau
    $result = count($a); compte les éléments d'un tableau
    foreach (array_expression as $value) { } passe en revu chaque élément du tableau, à chaque itération passe la valeur courante dans $value

  4. #4
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    j'ai fait ce code qui fonctionne :
    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
    61
    62
    <?php
    session_start();
    ?>
    <?php
    include "haut.php";
    ?>
    <?
    $id_ajout = $_POST['article'];
    $qte_ajout = $_POST['quantite'];
    if ($_POST['ajout']==ok)
    	{
    	$_SESSION['achats'][] = array (
        "id" => $id_ajout,
        "qte" => $qte_ajout
        );
    	}
    ?>
    <?php
    if (empty($_SESSION['achats']))
    {
    echo '<center><b>Votre panier est vide</b></center>';
    }
    else
    {
    ?>
    <table border="0" align="center">
    <tr>
    	<td align="center"><b>Article</b></td>
    	<td align="center"><b>Quantité</b></td>
    	<td align="center"><b>Total</b></td>
    </tr>
    <?php
    for ($i=0; $i < count($_SESSION['achats']); $i++)
    	{
    $id = $_SESSION['achats'][$i]['id'];
    $qte = $_SESSION['achats'][$i]['qte'];
    $select_art = mysql_query("SELECT * FROM article WHERE id='".$id."'");
    $affiche_art = mysql_fetch_array($select_art);
    $total = $qte*$affiche_art['prix'];
    ?>
    <tr>
    	<td align="center"><b><?php echo $affiche_art['titre']; ?></b></td>
    	<td align="center"><b><?php echo $qte; ?></b></td>
    	<td align="center"><b><?php echo $total; ?></b></td>
    </tr>
    <?php
    	}
    ?>
    <tr>
    <td>
    <b>Total ttc : <?php echo ;?></b>
    </td>
    </tr>
    </table>
    <?php
    echo '<center><a href="../suppr_panier.php">Vider le panier</a></center>';
    echo '<center><FORM><INPUT TYPE="button" VALUE="Continuer la visite" onClick="history.back()"></FORM></center>';
    }
    ?>
    <?php
    include "bas.php";
    ?>
    Mais j'ai deux questions :
    1) Comment supprimer juste 1 article ??
    2) Cooment afficher le total a payer ????
    Merci

  5. #5
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    voici les dernières nouvelles :
    1) J'ai réussi à mettre le montant total....
    2) Je n'ai toujours pas trouvé comment supprimer 1 article...
    Up !!!!!!!

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 267
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 267
    Points : 8 565
    Points
    8 565
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par worldhugo Voir le message
    2) Je n'ai toujours pas trouvé comment supprimer 1 article...
    Up !!!!!!!
    Il faut que tu boucles sur ton panier et que tu vérifies à chaque fois la valeur du champ id. Si elle correspond à l'article à supprimer il suffit de faire un unset( ).
    Note : il aurait été plus simple d'utiliser un tableau comme $_SESSION['panier'][$id] = $quantité, ainsi pour supprimer un article : unset($_SESSION['panier'][$id])

  7. #7
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Bonsoir,
    en faite je pensez faire un truc dans le genre de $_SESSION['achats'][numéro de l'article]
    et après faire un unset($_SESSION['achats'][numéro de l'article])
    mais je ne sais pas comment faire pour attribuer un numéro à chaque article ...

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 267
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 267
    Points : 8 565
    Points
    8 565
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par worldhugo Voir le message
    en faite je pensez faire un truc dans le genre de $_SESSION['achats'][numéro de l'article]
    et après faire un unset($_SESSION['achats'][numéro de l'article])
    C'est ce que je proposais plus haut.

    mais je ne sais pas comment faire pour attribuer un numéro à chaque article ...
    N'est-ce pas déjà fait avec $id = $_SESSION['achats'][$i]['id']; ?? Auquel cas il suffirait juste de réorganiser ton tableau.

  9. #9
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $id_ajout = $_POST['article'];
    $qte_ajout = $_POST['quantite'];
    if ($_POST['ajout']==ok) {
        $_SESSION['achats'][$id_ajout] = $qte_ajout;
    }
    tout simplement

  10. #10
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Nom $id est est le numéro de l'article pour dans la table..
    Pourrais tu modifier mon code stp ..
    Merci c'est super sympa

  11. #11
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Oui ska_root, mais si deux quantité sont les même ..... deux articles vont avoir le même id ......

  12. #12
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    oups pardon, j'avais pas tout lu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $id_ajout = $_POST['id'];
    $qte_ajout = $_POST['quantite'];
    if ($id_ajout != null && $_POST['ajout']==ok) {
        $_SESSION['achats'][$id_ajout] = $qte_ajout;
    }

  13. #13
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Je ne comprend pas le code.
    Pourrez tu juste me faire quelquechose qui ajoute par exemple le numéro 1 pour l'article 1, le numero 2 pour l'article 2, etc...

  14. #14
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    En fait, c'est un peu plus compliqué que ça normalement, il faudrait une méthode qui gère l'insert, le delete comme l'update d'un article dans le panier (vérifie si l'article present, si present additionne les quantité, sinon insert).

  15. #15
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Ok,
    je sais que je vais beaucoup te demander :
    comme je ne m'y connais pas DU TOUT en session et tout es ce que tu pourrais m'améliorer mon code vite fait stp ...
    Merci...merci...merci

  16. #16
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    bon, c'est bien parce que je suis en congés ce soir...
    je n'ai pas testé mais ça devrait fonctionner. il faudra améliorer (tester si les valeur de $_POST sont bonnes notamment)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $id_ajout = $_POST['id'];
    $qte_ajout = $_POST['quantite'];
    if ($_POST['ajout']=="ok") {
     
        if(array_key_exists($id_ajout, $_SESSION['achats'])) 
            $_SESSION['achats'][$id_ajout]+=$qte_ajout;
        else 
            $_SESSION['achats'][$id_ajout]=$qte_ajout;
     
    }

  17. #17
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Ok,
    pourrais tu m'expliquer le code stp ......

  18. #18
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    J'ai cette erreur :
    Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in ......

  19. #19
    Membre du Club Avatar de worldhugo
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 139
    Points : 54
    Points
    54
    Par défaut
    Bon voila,
    je vous mets mon code en entier (plus d'erreur mais le code beug) :
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    session_start();
    ?>
    <?php
    include "haut.php";
    ?>
    <?
    $id_ajout = $_POST['article'];
    $qte_ajout = $_POST['quantite'];
    if ($_POST['ajout']=="ok")
    {
    	$_SESSION['achats'][] = array (
        "id" => $id_ajout,
        "qte" => $qte_ajout
        );
        if(array_key_exists($id_ajout, $_SESSION['achats'])) 
            $_SESSION['achats'][$id_ajout]+=$qte_ajout;
        else 
            $_SESSION['achats'][$id_ajout]=$qte_ajout;
    }   
    ?>
    <?php
    if (empty($_SESSION['achats']))
    {
    echo '<center><b>Votre panier est vide</b></center>';
    echo '<center><FORM><INPUT TYPE="button" VALUE="Continuer la visite" onClick="history.back()"></FORM></center>';
    }
    else
    {
    ?>
    <table border="1" align="center">
    <tr>
    	<td align="center"><b>Id</b></td>
    	<td align="center"><b>Article</b></td>
    	<td align="center"><b>Quantité</b></td>
    	<td align="center"><b>Prix unitaire</b></td>
    	<td align="center"><b>Total</b></td>
    </tr>
    <?php
    for ($i=0; $i < count($_SESSION['achats']); $i++)
    	{
    $id = $_SESSION['achats'][$i]['id'];
    $qte = $_SESSION['achats'][$i]['qte'];
    $select_art = mysql_query("SELECT * FROM article WHERE id='".$id."'");
    $affiche_art = mysql_fetch_array($select_art);
    $total = $qte*$affiche_art['prix'];
     
    ?>
    <tr>
    	<td align="center"><?php echo $id; ?></td>
    	<td align="center"><?php echo $affiche_art['titre']; ?></td>
    	<td align="center"><?php echo $qte; ?></td>
    	<td align="center"><?php echo $affiche_art['prix']; ?>€</td>
    	<td align="center"><?php echo $total; ?>€</td>
    </tr>
    <?php
    	}
    ?>
    </table>
    <table align="center" border="0">
    <tr>
    	<td align="center">
    <?php
    $total=0;
    for($i = 0; $i < count($_SESSION['achats']); $i++) 
    {           
    	$select_art2 = mysql_query("SELECT * FROM article WHERE id='".$id."'");
    	$affiche_art2 = mysql_fetch_array($select_art2);
    	$total2 += $_SESSION['achats'][$i]['qte'] * $affiche_art2['prix']; 
    }
    ?>
    	<b>Total ttc : <?php echo $total2; ?>€</b>
    	</td>
    </tr>
    </table>
    <?php
    echo '<center><a href="../suppr_panier.php">Vider le panier</a></center>';
    echo '<center><FORM><INPUT TYPE="button" VALUE="Continuer la visite" onClick="history.back()"></FORM></center>';
    }
    ?>
    <?php
    include "bas.php";
    ?>
    Merci

  20. #20
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    oui désolé il faut tester l'existence de session d'abord, puis la créer au prélable si elle n'existe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $id_ajout = $_POST['id'];
    $qte_ajout = $_POST['quantite'];
    if ($_POST['ajout']=="ok") {
     
        // si le panier n'existe pas on le cree
        if(!isset($_SESSION['achats'])) $_SESSION['achats']=array();
     
        // si l'id de l'article existe dans le panier
        if(array_key_exists($id_ajout, $_SESSION['achats'])) 
            $_SESSION['achats'][$id_ajout]+=$qte_ajout; // on ajoute la quantite a l'existant
        else 
            $_SESSION['achats'][$id_ajout]=$qte_ajout; // sinon on cree l'article avec la quantite
     
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/12/2013, 23h40
  2. [MySQL] Insérer des éléments de type FILE dans des sessions pour un panier
    Par akrogames dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/01/2009, 12h30
  3. Réponses: 16
    Dernier message: 02/12/2005, 11h39
  4. [Sessions] Comment creer des sessions pour chaque visiteur
    Par developower dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2005, 13h55

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