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 :

Suppression ou modification impossible [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut Suppression ou modification impossible
    Bonjour à tous,

    Voilà 2 semaines que je m'arrive pas a résoudre un souci sur un script de panier.
    L'ajout dans le panier fonctionne correctement mais la suppression ou la modification ne fonctionne pas du tout.
    J'ai beau regarder en détail les fonctions et le script mais tout me parait correct.
    A mon avis cela proviens de la page panier.php car le script avec les fonctions proviens d'un tuto.
    Je vous fourni les scripts

    Script des fonctions, page fonctions-panier.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
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
     
    <?php
     
    /**
     * Verifie si le panier existe, le créé sinon
     * @return booleen
     */
    function creationPanier(){
       if (!isset($_SESSION['paniers'])){
          $_SESSION['paniers']=array();
          $_SESSION['paniers']['libelleProduit'] = array();
          $_SESSION['paniers']['qteProduit'] = array();
          $_SESSION['paniers']['prixProduit'] = array();
          $_SESSION['paniers']['verrou'] = false;
       }
       return true;
    }
     
     
    /**
     * Ajoute un article dans le panier
     * @param string $libelleProduit
     * @param int $qteProduit
     * @param float $prixProduit
     * @return void
     */
    function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
     
       //Si le panier existe
       if (creationPanier() && !isVerrouille())
       {
          //Si le produit existe déjà on ajoute seulement la quantité
          $positionProduit = array_search($libelleProduit,  $_SESSION['paniers']['libelleProduit']);
     
          if ($positionProduit !== false)
          {
             $_SESSION['paniers']['qteProduit'][$positionProduit] += $qteProduit ;
          }
          else
          {
             //Sinon on ajoute le produit
             array_push( $_SESSION['paniers']['libelleProduit'],$libelleProduit); 
             array_push( $_SESSION['paniers']['qteProduit'],$qteProduit);
             array_push( $_SESSION['paniers']['prixProduit'],$prixProduit);
          }
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
     
     
    /**
     * Modifie la quantité d'un article
     * @param $libelleProduit
     * @param $qteProduit
     * @return void
     */
    function modifierQTeArticle($libelleProduit,$qteProduit){
       //Si le panier éxiste
       if (creationPanier() && !isVerrouille())
       {
          //Si la quantité est positive on modifie sinon on supprime l'article
          if ($qteProduit > 0)
          {
             //Recharche du produit dans le panier
             $positionProduit = array_search($libelleProduit,  $_SESSION['paniers']['libelleProduit']);
     
             if ($positionProduit !== false)
             {
                $_SESSION['paniers']['qteProduit'][$positionProduit] = $qteProduit ;
             }
          }
          else
          supprimerArticle($libelleProduit);
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
    /**
     * Supprime un article du panier
     * @param $libelleProduit
     * @return unknown_type
     */
    function supprimerArticle($libelleProduit){
       //Si le panier existe
       if (creationPanier() && !isVerrouille())
       {
          //Nous allons passer par un panier temporaire
          $tmp=array();
          $tmp['libelleProduit'] = array();
          $tmp['qteProduit'] = array();
          $tmp['prixProduit'] = array();
          $tmp['verrou'] = $_SESSION['panier']['verrou'];
     
          for($i = 0; $i < count($_SESSION['paniers']['libelleProduit']); $i++)
          {
             if ($_SESSION['paniers']['libelleProduit'][$i] !== $libelleProduit)
             {
                array_push( $tmp['libelleProduit'],$_SESSION['paniers']['libelleProduit'][$i]);
                array_push( $tmp['qteProduit'],$_SESSION['paniers']['qteProduit'][$i]);
                array_push( $tmp['prixProduit'],$_SESSION['paniers']['prixProduit'][$i]);
             }
     
          }
          //On remplace le panier en session par notre panier temporaire à jour
          $_SESSION['panier'] =  $tmp;
          //On efface notre panier temporaire
          unset($tmp);
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
     
     
    /**
     * Montant total du panier
     * @return int
     */
    function MontantGlobal(){
       $total=0;
       for($i = 0; $i < count($_SESSION['paniers']['libelleProduit']); $i++)
       {
          $total += $_SESSION['paniers']['qteProduit'][$i] * $_SESSION['paniers']['prixProduit'][$i];
       }
       return $total;
    }
     
     
    /**
     * Fonction de suppression du panier
     * @return void
     */
    function supprimePanier(){
       unset($_SESSION['paniers']);
    }
     
    /**
     * Permet de savoir si le panier est verrouillé
     * @return booleen
     */
    function isVerrouille(){
       if (isset($_SESSION['paniers']) && $_SESSION['paniers']['verrou'])
       return true;
       else
       return false;
    }
     
    /**
     * Compte le nombre d'articles différents dans le panier
     * @return int
     */
    function compterArticles()
    {
       if (isset($_SESSION['paniers']))
       return count($_SESSION['paniers']['libelleProduit']);
       else
       return 0;
     
    }
     
    ?>
    Script de la page panier.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
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
     
    <?php
    if(isset($_COOKIE['langue'])){
    	switch ($_COOKIE['langue']) {
        case fr:
            require 'include/lang/fr.php';
            break;
        case en:
            require 'include/lang/en.php';
            break;
        case ne:
            require 'include/lang/ne.php';
            break;
    }
     
    }else{
    	require 'include/lang/fr.php';
    } 
     
    require 'include/includes.php'; 
     
     
    $erreur = false;
     
    $action = (isset($_POST['action'])? $_POST['action']:  (isset($_GET['action'])? $_GET['action']:null )) ;
    if($action !== null)
    {
       if(!in_array($action,array('ajout', 'suppression', 'refresh')))
       $erreur=true;
     
       //récuperation des variables en POST ou GET
       $l = (isset($_POST['l'])? $_POST['l']:  (isset($_GET['l'])? $_GET['l']:null )) ;
       $p = (isset($_POST['p'])? $_POST['p']:  (isset($_GET['p'])? $_GET['p']:null )) ;
       $q = (isset($_POST['q'])? $_POST['q']:  (isset($_GET['q'])? $_GET['q']:null )) ;
     
       //Suppression des espaces verticaux
       $l = preg_replace('#\v#', '',$l);
       //On verifie que $p soit un float
       $p = $p;
     
       //On traite $q qui peut etre un entier simple ou un tableau d'entier
     
       if (is_array($q)){
          $QteArticle = array();
          $i=0;
          foreach ($q as $contenu){
             $QteArticle[$i++] = intval($contenu);
          }
       }
       else
       $q = intval($q);
     
    }
     
    if (!$erreur){
       switch($action){
          Case "ajout":
             ajouterArticle($l,$q,$p);
             break;
     
          Case "suppression":
             supprimerArticle($l);
             break;
     
          Case "refresh" :
             for ($i = 0 ; $i < count($QteArticle) ; $i++)
             {
                modifierQTeArticle($_SESSION['paniers']['libelleProduit'][$i],round($QteArticle[$i]));
             }
             break;
     
          Default:
             break;
       }
    }
     
    ?>
    <!DOCTYPE html>
    <!--[if IE 7]><html class="ie ie7"><![endif]-->
    <!--[if IE 8]><html class="ie ie8"><![endif]-->
    <!--[if IE 9]><html class="ie ie9"><![endif]-->
    <html lang="en">
     
    <head>
        <title>Panier</title>
        <!-- Fonts-->
        <link rel="stylesheet" href="plugins/font-awesome/css/font-awesome.min.css">
        <link rel="stylesheet" href="plugins/jquery-bar-rating/dist/themes/fontawesome-stars.css">
        <link rel="stylesheet" href="plugins/ps-icon/ps-icon.css">
        <!-- CSS Library-->
        <link rel="stylesheet" href="plugins/bootstrap/dist/css/bootstrap.min.css">
        <link rel="stylesheet" href="plugins/owl-carousel/assets/owl.carousel.css">
        <link rel="stylesheet" href="plugins/jquery-bar-rating/dist/themes/fontawesome-stars.css">
        <link rel="stylesheet" href="plugins/Magnific-Popup/dist/magnific-popup.css">
        <link rel="stylesheet" href="plugins/jquery-ui/jquery-ui.min.css">
        <link rel="stylesheet" href="plugins/bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css">
        <link rel="stylesheet" href="plugins/slick/slick/slick.css">
        <link rel="stylesheet" href="plugins/revolution/css/settings.css">
        <link rel="stylesheet" href="plugins/revolution/css/layers.css">
        <link rel="stylesheet" href="plugins/revolution/css/navigation.css">
        <!-- Custom-->
        <link rel="stylesheet" href="css/style.css">
        <!--HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries-->
        <!--WARNING: Respond.js doesn't work if you view the page via file://-->
        <!--[if lt IE 9]><script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script><![endif]-->
    </head>
    <!--[if IE 7]><body class="ie7 lt-ie8 lt-ie9 lt-ie10"><![endif]-->
    <!--[if IE 8]><body class="ie8 lt-ie9 lt-ie10"><![endif]-->
    <!--[if IE 9]><body class="ie9 lt-ie10"><![endif]-->
     
    <body class="page-init">
        <?php require 'include/menu.php'; ?>
        <div id="back2top"><i class="fa fa-angle-up"></i></div>
        <div class="loader"></div>
        <div class="page-wrap">
            <!--section-->
            <div class="ps-section--hero"><img src="images/hero/01.jpg" alt="">
                <div class="ps-section__content text-center">
                    <h3 class="ps-section__title">Votre panier</h3>
                    <div class="ps-breadcrumb">
                        <ol class="breadcrumb">
                            <li><a href="index.php">Accueil</a></li>
                            <li class="active">Panier</li>
                        </ol>
                    </div>
                </div>
            </div>
            <div class="ps-section--cart pt-100 pb-100">
                <div class="container">
                    <div class="ps-cart-listing">
                        <p class="hidden-lg"><i></i></p>
                        <div class="table-responsive">
                        <form method="post" action="panier.php">
                            <table class="table">
                                <thead>
                                    <tr>
                                        <th>Produits</th>
                                        <th>Prix</th>
                                        <th>Quantité</th>
                                        <th>Total</th>
                                        <th></th>
                                    </tr>
                                </thead>
                                <tbody>
     
                               <?php
    	if (creationPanier())
    	{
    	   $nbArticles=count($_SESSION['paniers']['libelleProduit']);
    	   if ($nbArticles <= 0){
    	   }else
    	   {
    	      for ($i=0 ;$i < $nbArticles ; $i++)
    	      { ?>
                                    <tr>
                                        <td>
                                  <div class="ps-product--cart"><?php echo htmlspecialchars($_SESSION['paniers']['libelleProduit'][$i]); ?></div>
                                        </td>
                                        <td><?php echo htmlspecialchars($_SESSION['paniers']['prixProduit'][$i]); ?></td>
                                        <td>
                                            <div class="form-group--number">
                                                <!--<button class="minus"><span>-</span></button>-->
                                                <input class="form-control" type="text" value="<?php echo htmlspecialchars($_SESSION['paniers']['qteProduit'][$i]); ?>"/>
                                                <!--<button class="plus"><span>+</span></button>-->
                                            </div>
                                        </td>
                                        <?php $total = $_SESSION['paniers']['prixProduit'][$i] * $_SESSION['paniers']['qteProduit'][$i]; ?>
                                        <td><span class="total-row"><?php echo $total; ?></span></td>
                                        <td> 
           				<a class="ps-cart-listing__remove" href="panier.php?action=suppression&amp;l=<?php echo rawurlencode($_SESSION['paniers']['libelleProduit'][$i]);?>"></a>
     
                                        </td>
                                 <?php    }
     
     
     
     
    	?> 
     
                                </tbody>
                            </table>
     
                        </div>
                        <div class="ps-cart__process">
                            <div class="row">
                                <div class="col-lg-8 col-md-8 col-sm-6 col-xs-12 ">
                                    <div class="form-group form-group--icon ps-cart__promotion">
                                        <div class="icon-wrap"><i class="fa fa-angle-right"></i>
                                         <input class="ps-cart__shopping" type="submit" value="Rafraichir"/>
                                         <input type="hidden" name="action" value="refresh"/>
     
     
                                        </div>
                                    </div>
                                    <div class="form-groupform-order">
                                        <button class="ps-cart__shopping">Continue mes achats</button>
                                    </div>
                                </div>
                                <div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 ">
                                    <div class="ps-cart__total">
                                        <p>Prix total : <span><?php echo MontantGlobal(); ?></span></p>
                                        <input class="ps-btn ps-btn--sm ps-btn--fullwidth" value="commande"/>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <?php
             }
    	}
     
     
     
    	?> 
         </form>
    Merci d'avance pour votre aide

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bonjour !
    Que donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Case "suppression":
             echo 'Je veux supprimer '.$l.'<br/>';
             supprimerArticle($l);
             break;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    J'ai bien le message "je veux supprimer et le nom de l'article".

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Copie colle s'il te plaît. Ne résume pas.
    On continue en vérifiant toutes les variables dont tu auras besoin dans la fonction supprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Case "suppression":
       echo 'Je veux supprimer '.$l.'<br/>';
       echo 'création panier vaut '.creationPanier().'<br/>';
       echo 'isVerrouille vaut '.isVerrouille().'<br/>';
       echo 'session_panier_verrou vaut '. $_SESSION['panier']['verrou'].'<br/>';
       echo 'session_panier_libelleProduit vaut<br/>';
       echo '<pre>';
       print_r($_SESSION['paniers']['libelleProduit']);
       echo '</pre>';
    break;
    edit : tu as bien compris ce que fait la fonction supprimerArticle($libelleProduit) ?
    Tu as une variable de session $_SESSION['paniers']['libelleProduit'] qui est un tableau associatif, le panier en session, et cette fonction supprime l'article dans cette variable de session.
    A ce stade, on n'interagit pas avec la base de données, on laisse l'utilisateur "jouer".
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Le résultat est :
    Je veux supprimer Fraise12mg
    création panier vaut 1
    isVerrouille vaut
    session_panier_verrou vaut

    array
    (
    [0] => Fraise12mg
    )

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Tu peux recommencer avec le code modifié stp, j'avais laissé un petit bug...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    J'obtiens le même résultat.

  8. #8
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Recommence en récupérant mon dernier code stp... tu ne peux pas obtenir ce que tu me montres.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Le résultat est :

    Je veux supprimer Fraise12mg
    création panier vaut 1
    isVerrouille vaut
    session_panier_verrou vaut
    session_panier_libelleProduit vaut

    array
    (
    [0] => Fraise12mg
    )

  10. #10
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bon ! Ca paraît pas mal tout ça.

    Je traduis un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Je veux supprimer Fraise12mg
    création panier vaut true
    isVerrouille vaut false
    session_panier_verrou vaut false
    session_panier_libelleProduit vaut
     
    array
    (
    [0] => Fraise12mg
    )
    A mon avis, ton problème est le suivant.
    Si tu peux faire le test :

    Quand tu sélectionnes mettons 3 produits dans ton panier, et que tu en supprimes 1, tout fonctionne.
    Quand tu n'en as plus qu'un, et que tu le supprimes... aïe aïe aïe ?
    Vrai ou faux ?

    edit, à la réflexion, j'aimerais tester ça aussi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Case "suppression":
       echo 'Je veux supprimer '.$l.'<br/>';
       echo 'création panier vaut '.creationPanier().'<br/>';
       echo 'isVerrouille vaut '.isVerrouille().'<br/>';
       echo 'session_panier vaut<br/>';
       echo '<pre>';
       print_r($_SESSION['paniers']);
       echo '</pre>';
    break;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    J'ai tester avec plusieurs produits mais cela ne fonctionne pas.
    le resultat est :

    Array
    (

    [libelleProduit] => Array
    (
    [0] => Fraise12mg
    [1] => Pomme6mg
    [2] => pomme12mg
    [3] => melon6mg
    )

    [qteProduit] => Array
    (
    [0] => 15
    [1] => 7
    [2] => 1
    [3] => 74
    )

    [prixProduit] => Array
    (
    [0] => 12
    [1] => 12
    [2] => 12
    [3] => 12
    )

    [verrou] =>
    )

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Je n'ai fait qu'une lecture diagonale, mais j'ai juste quelque remarques:
    1- Déjà tu as mal à gérer tes paniers dans une session et la structure des données stockées n'est pas bon, mais imagine si 1000 utilisateurs créent leur panier, ça va chauffer côté mémoire. Si la session d'un utilisateur est expirée, il perd son panier. Utilise ta base de donnée pour les stoker, ce sera plus facile à gérer.
    2- ['libelleProduit'], on ne devrait pas utiliser un libellé pour se référencer mais avec un id (clé primaire).

    A+.

  13. #13
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    A mon avis cela proviens de la page panier.php car le script avec les fonctions proviens d'un tuto.
    Ben manifestement, le tuto que tu as récupéré fait des trucs que je trouve aussi bizarres.
    Tu aurais le lien ?
    Ton tableau devrait ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    array(
       0 => array('libelleProduit' => 'Fraise12mg', 'qteProduit' => 15, 'prixProduit' =>12),
       1 => array('libelleProduit' => 'Pomme6mg', 'qteProduit' => 7, 'prixProduit' =>12),
       2 => array('libelleProduit' => 'pomme12mg', 'qteProduit' => 1, 'prixProduit' =>12),
       3 => array('libelleProduit' => 'melon6mg', 'qteProduit' => 74, 'prixProduit' =>12)
    );
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  14. #14
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bon enfin... c'est comme ça et surtout, ça n'explique pas pourquoi ton truc marche pas.
    Enlève tes tests précédents.
    Et mets ceci à la place de ta fonction et copie colle ce que ça affiche, mettons quand tu passes de 3 articles à 2...

    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
    function supprimerArticle($libelleProduit){
       echo 'Vais-je supprimer mon produit '.$libelleProduit.'???<br/>';
       echo 'AVANT <br/><br/>';
       echo 'MES LIBELLES <br/>';
       foreach($_SESSION['paniers']['libelleProduit'] as $lib_produit){
          echo $lib_produit.'<br/>';
       }
       echo 'MES QUANTITES <br/>';
       foreach($_SESSION['paniers']['qteProduit'] as $qte_produit){
          echo $qte_produit.'<br/>';
       }
       echo 'MES PRIX <br/>';
       foreach($_SESSION['paniers']['prixProduit'] as $prix_produit){
          echo $prix_produit.'<br/>';
       }
       //Si le panier existe
       if (creationPanier() && !isVerrouille())
       {
          //Nous allons passer par un panier temporaire
          $tmp=array();
          $tmp['libelleProduit'] = array();
          $tmp['qteProduit'] = array();
          $tmp['prixProduit'] = array();
          $tmp['verrou'] = $_SESSION['panier']['verrou'];
     
          for($i = 0; $i < count($_SESSION['paniers']['libelleProduit']); $i++)
          {
             if ($_SESSION['paniers']['libelleProduit'][$i] !== $libelleProduit)
             {
                array_push( $tmp['libelleProduit'],$_SESSION['paniers']['libelleProduit'][$i]);
                array_push( $tmp['qteProduit'],$_SESSION['paniers']['qteProduit'][$i]);
                array_push( $tmp['prixProduit'],$_SESSION['paniers']['prixProduit'][$i]);
             }
     
          }
          //On remplace le panier en session par notre panier temporaire à jour
          $_SESSION['panier'] =  $tmp;
          //On efface notre panier temporaire
          unset($tmp);
          echo '<br/><br/>APRES <br/><br/>';
          echo 'MES LIBELLES <br/>';
          foreach($_SESSION['paniers']['libelleProduit'] as $lib_produit){
             echo $lib_produit.'<br/>';
          }
          echo 'MES QUANTITES <br/>';
          foreach($_SESSION['paniers']['qteProduit'] as $qte_produit){
             echo $qte_produit.'<br/>';
          }
          echo 'MES PRIX <br/>';
          foreach($_SESSION['paniers']['prixProduit'] as $prix_produit){
             echo $prix_produit.'<br/>';
          }
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Voici le lien vers le tuto :
    https://jcrozier.developpez.com/articles/web/panier/

    J'ai effectué les modifications, voici le resultat :

    Vais-je supprimer mon produit ???
    AVANT

    MES LIBELLES
    framboise6mg
    Fraise12mg
    Pomme6mg
    MES QUANTITES
    7
    18
    3
    MES PRIX
    12
    12
    12


    APRES

    MES LIBELLES
    framboise6mg
    Fraise12mg
    Pomme6mg
    MES QUANTITES
    7
    18
    3
    MES PRIX
    12
    12
    12

  16. #16
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Teste ça ?
    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
    function supprimerArticle($libelleProduit){
       //Si le panier existe
       if (creationPanier() && !isVerrouille())
       {
          //Nous allons passer par un panier temporaire
          $tmp=array();
          $tmp['libelleProduit'] = array();
          $tmp['qteProduit'] = array();
          $tmp['prixProduit'] = array();
          $tmp['verrou'] = $_SESSION['panier']['verrou'];
     
          for($i = 0; $i < count($_SESSION['paniers']['libelleProduit']); $i++)
          {
             if (strtolower(trim($_SESSION['paniers']['libelleProduit'][$i])) != strtolower(trim($libelleProduit)))
             {
                array_push( $tmp['libelleProduit'],$_SESSION['paniers']['libelleProduit'][$i]);
                array_push( $tmp['qteProduit'],$_SESSION['paniers']['qteProduit'][$i]);
                array_push( $tmp['prixProduit'],$_SESSION['paniers']['prixProduit'][$i]);
             }
     
          }
          //On remplace le panier en session par notre panier temporaire à jour
          $_SESSION['panier'] =  $tmp;
          //On efface notre panier temporaire
          unset($tmp);
       }
       else
       echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  17. #17
    Invité
    Invité(e)
    Par défaut
    Vais-je supprimer mon produit ???
    On voit ici que $libelleProduit est vide !

    Ce n'est pas la fonction qui est en cause (le tuto est OK*), mais son appel.
    *En l'état. Meme s'il est nettement améliorable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class="ps-cart-listing__remove" href="panier.php?action=suppression&amp;l=<?php echo rawurlencode($_SESSION['paniers']['libelleProduit'][$i]);?>"></a>
    À voir si ce n'est pas rawurlencode qui crée le problème.
    Auquel cas rajouter rawurldecode sur le $_GET dans la fonction supprimer.


    [EDIT] Cela dit, avec des libellés tels que Fraise12mg, Pomme6mg, pomme12mg ou melon6mg, rawurlencode n'a aucune incidence...
    Il faut comprendre pourquoi (et où) le libelleProduit n'est pas/plus transmis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class="ps-cart-listing__remove" href="panier.php?action=suppression&amp;l=<?php echo rawurlencode($_SESSION['paniers']['libelleProduit'][$i]);?>"></a>
    Peux-tu nous montrer ce qui s'écrit dans la barre d'adresse ??
    et donc vérifier que "l" est bien renseigné.
    Dernière modification par Invité ; 09/05/2018 à 09h17.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    J'ai essayer les codes mais ca ne delete pas.
    Je pense que le problème viens d'un autre endroit car si je créer une page avec seulement le code en php ca marche.

  19. #19
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Tu as lu, compris et appliqué ce que dit jreaux ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mai 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mai 2018
    Messages : 57
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    J'ai réussi a faire fonctionner le script mais seulement sur chrome, les articles s'ajoute, se supprime.
    Par contre sous IE impossible d'ajouter un article, le script ne fonctionne pas du tout.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/12/2006, 11h20
  2. suppression de fichier impossible
    Par gdpasmini dans le forum C
    Réponses: 9
    Dernier message: 27/04/2006, 10h53
  3. Réponses: 10
    Dernier message: 21/11/2005, 23h05
  4. suppression de fichier impossible (windows xp)
    Par annecyrond dans le forum Windows XP
    Réponses: 8
    Dernier message: 10/03/2005, 11h38
  5. Suppression et modification?
    Par Nino dans le forum Débuter
    Réponses: 3
    Dernier message: 09/06/2003, 23h07

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