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 :

Supprimer session caddie si caddie vide


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Par défaut Supprimer session caddie si caddie vide
    Salut à tous,

    j'ai encore quelques bidouilles à régler pour mon caddie, notamment supprimer la session s'il est vide.

    <?php
    elseif (($_GET['action'] == "del")) // on supprime le produit
    {
    foreach(
    $_SESSION['panier'] as $key => $array)
    {
    if (
    $array['prod'] == $_GET['id'])
    {
    unset(
    $_SESSION['panier'][$key]);
    $message = " effacé !! | ";
    }
    }
    }

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Comment vérifier qu'il n'ait aucune ligne avant de faire un session_destroy(); ?

    Merci

  2. #2
    Membre chevronné Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Par défaut
    * bool session_unregister (string name)

    description : supprime la variable name dans la session en cours : retourne true si la variable a été supprimée correctement.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <? 
    // Si la variable session existe 
    if (session_is_registered("Var1")) { 
    session_unregister("Var1"); 
    } 
    ?>
    tu testes si elle est supprimée, et tu fait ton session_destroy()


    sinon tu supprimes toutes les variables de sessions à l'aide de la fonction session_unset().

    * bool session_unset ()

    Exemple : détruire la session courante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <? 
    session_unset() 
    session_destroy() 
    ?>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Par défaut
    Citation Envoyé par Joe Le Mort
    * bool session_unregister (string name)

    description : supprime la variable name dans la session en cours : retourne true si la variable a été supprimée correctement.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <? 
    // Si la variable session existe 
    if (session_is_registered("Var1")) { 
    session_unregister("Var1"); 
    } 
    ?>
    tu testes si elle est supprimée, et tu fait ton session_destroy()


    sinon tu supprimes toutes les variables de sessions à l'aide de la fonction session_unset().

    * bool session_unset ()

    Exemple : détruire la session courante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <? 
    session_unset() 
    session_destroy() 
    ?>
    Merci, mais comment faire pour tester s'il y a ou non des produits dans ma session avant de supprimer.

    J'ai lu que session_is_registered était obsolète ou déprécié aujourd'hui ?!

  4. #4
    Membre chevronné Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Par défaut
    alors utilise ceci :

    !isset($_SESSION['login'])
    qui indique que la variable est non décalrée ou vide

    <?php
    if ((!isset($_SESSION&#91;'login'])) )
    {
    // la variable 'login' de session est non déclaré ou vide
    echo "login vide";
    }
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Par défaut
    Merci pour vos répondes et désolé de ne pas m'être manifestré plus tôt mais j'étais sur un projet plus showtime

    Donc j'ai testé mais ça ne marche pas en fait.
    Mon code :
    <?php
    elseif (($_GET['action'] == "del")) // on supprime le produit
    {
    foreach(
    $_SESSION['panier'] as $key => $array)
    {
    if (
    $array['prod'] == $_GET['id'])
    {
    unset(
    $_SESSION['panier'][$key]);
    }
    }
    if (!isset(
    $_SESSION['panier']))
    {
    echo
    "<p>IL EST VIDE CE PANIER B***** donc je peux faire session_unset() et session_destroy() </p>";
    }
    else
    {
    echo
    "<p>Normalement il n'est pas vide</p>";
    }
    }

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    En faisant print_r($_SESSION) si le panier est vide j'obtiens logiquement ceci : Array ( )
    Après avoir supprimé le dernier article de mon caddie j'obtiens ceci : Array ( [panier] => Array ( ) ) et je ne peux plus ajouter de nouveaux produits ?!

    Comment faire alors pour supprimer la session si je suis sûr que mon array est vide ?!

    Merci beaucoup !

  6. #6
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 509
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 509
    Par défaut
    et si tu fais unset($_SESSION['panier']) l'indice "panier" sera supprimé, après, tu pourra le redefinir $_SESSION['panier']=array(); lors de la création d'un nouvelle élément dans la panier.
    Si j'ai bien compris ton soucie.

  7. #7
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Aucunes lignes, tu entends quoi par là ?
    Si c'est le nombre d'éléments dans ton tableau de session, tu peux juste tester la taille de celui-ci

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 40
    Par défaut
    Citation Envoyé par Kerod
    Aucunes lignes, tu entends quoi par là ?
    Si c'est le nombre d'éléments dans ton tableau de session, tu peux juste tester la taille de celui-ci
    En fait si je supprime un produit de mon panier tout se passe bien sauf si c'était le dernier produit. A ce moment, je ne peux plus en rajouter !
    C'est la raison pour laquelle je voulais supprimer ma session panier et en recréer une dès le nouveau produit à y insérer.

    Mon code au complet :

    <?php
    if(isset($_GET['action']) && isset($_GET['id']))
    {
    $panieractif=1;
    if(isset(
    $_SESSION['panier']) && is_array($panier)) // le panier existe déjà
    {
    $nbprod = count($panier);
    if (
    $_GET['action'] == "add") // on ajoute le produit
    {
    $break=0; // permet de squizzer la boucle ajout d'une quantité / ligne si +ieurs produits dans le panier
    foreach($_SESSION['panier'] as $key => $array)
    {
    if (
    $array['prod'] == $_GET['id'])
    {
    $newQte = ($_GET['qte'] + $array['qte']);
    $_SESSION['panier'][$key]['qte'] = $newQte;
    $ajout = 0;
    $break=1;
    }
    elseif (
    $break==0)// n'existait pas, on le rajoute
    {
    $ajout = 1;
    }
    }
    if (
    $ajout == 1)
    {
    array_push($panier,array("prod" => $_GET['id'],"qte" => $_GET['qte']));
    }
    }
    elseif ((
    $_GET['action'] == "del")) // on supprime le produit
    {
    foreach(
    $_SESSION['panier'] as $key => $array)
    {
    if (
    $array['prod'] == $_GET['id'])
    {
    unset(
    $_SESSION['panier'][$key]);
    }
    }
    }
    // fin ajout de code
    elseif ($_GET['action'] == "mod") // on modifie la quantité
    {
    $refsup = $_GET['refsup'];
    foreach(
    $_GET['refsup'] as $key => $keysup)
    {
    // je ne sais pas encore comment faire
    }
    }
    else
    // couille dans le potage
    {
    $message = "Une erreur s'est produite, merci de renouveller votre action.";
    }
    }
    else
    // le panier n'existe pas
    {
    $_SESSION['panier'][] = array("prod" => $_GET['id'],"qte" => $_GET['qte']);
    }
    }

    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Merci pour votre aide

Discussions similaires

  1. Détruire une session lorsque le caddie est vide.
    Par Niki59 dans le forum Langage
    Réponses: 2
    Dernier message: 22/10/2008, 22h46
  2. Réponses: 6
    Dernier message: 26/09/2007, 15h26
  3. [8.5][Logiciel] Supprimer un champ si Date = vide
    Par ickyknox dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/03/2007, 09h39
  4. supprimer un enregistrement en cours vide
    Par lionski dans le forum Access
    Réponses: 9
    Dernier message: 17/01/2007, 23h17
  5. supprimer lignes/cellules de tableau vides
    Par Drozo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/08/2006, 13h21

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