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 :

Utilisation tableau dans une variable de session


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut Utilisation tableau dans une variable de session
    Bonjour,
    Je cherche à faire une sorte de panier pour un logiciel de caisse, et mon problème c'est que je ne vois pas trop par ou commencer pour stocker les articles (on renseigne l'id ou la désignation( dans mon code, ne pas tenir compte de la désignation elle doit être le même principe que la recherche avec l'id)puis ça nous rajouter des lignes à un tableau contenant les articles précédemment saisie) sachant qu'à chaque fois qu'on renseigner un id ou désignation sa recharge la page.

    Voilà se qui j'ai fais pour le moment :
    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
     
    <?php
    require_once('inc/inc.php');
    session_start();
    $_SESSION['panier'] = array();
    $_SESSION['panier']['designation'] = array();
    $_SESSION['panier']['id'] = array();
    $_SESSION['panier']['prix'] = array();
    ?>
    <html lang="fr">
        <head>
            <meta charset="utf-8">
            <link rel="stylesheet" href="Styles/Style.css">
            <title>Caisse :</title>
        </head>
        <body>
            <a href="Index.php" class="buton">Retour</a>
            <?php
            if(isset($messageR) AND !empty($messageR)) {
                echo"<p id=\"alerteR\">$messageR</p>";
            }
            ?>
                <div class="zone_ass">
                    <table>
                        <table class="zone_tab">
                        <tr>
                            <th class="zone_tab_l_top">Id</th>
                            <th class="zone_tab_l_top">Designation</th>
                            <th class="zone_tab_l_top">Prix TTC</th>
                        </tr>
                        <tr>
                            <td class="zone_tab_l">
                                <p><form action="" method="post">
                                    <?php
                                    if(isset($_POST) and !empty($_POST['id_R'])){
                                        $id = $_POST['id_R'];
                                        $article = $bdd->prepare('SELECT * FROM f_articles WHERE id = ?');
                                        $article->execute(array($id));
                                        if($article->rowCount($article) == 1){
                                            while($data = $article->fetch()) {
                                                $desig = $data['designation'];
                                                $prix = $data['prix'];
                                            }
                                            $_SESSION['panier']['designation'] = $desig;
                                            $_SESSION['panier']['prix'] = $prix;
                                            $_SESSION['panier']['id'] = $id;
                                        }else{
                                            $messageR = "L'article n'est pas créé!!";
                                        }
                                    }
                                    ?>
                                    <input name="id_R" class="i_caisse" placeholder="id">
                                </form></p>
                            </td
                            <td class="zone_tab_l">
                                <p>
                                    <form action="" method="post">
                                    <?php
                                    if(isset($_POST) and !empty($_POST['design_R'])){
                                        $desig = $_POST['design_R'];
                                        $article = $bdd->prepare('SELECT * FROM f_articles WHERE designation = ?');
                                        $article->execute(array($desig));
                                        if($article->rowCount($article) == 1){
                                            while($data = $article->fetch()) {
                                                $id = $data['id'];
                                                $prix = $data['prix'];
                                            }
                                        }else{
                                            $messageR = "L'article n'est pas créé!!";
                                        }
                                    }
                                    ?>
                                    <input name="design_R" class="i_caisse" placeholder="Designation">
                                </form>
                                </p>
                            </td>
                            <td class="zone_tab_l">
                                <p></p>
                            </td>
                        </tr>
                       <?php while($article_passe = $_SESSION['panier']->fetch()){ ?>
                        <tr>
                            <td class="zone_tab_l">
                                <p>
                                    <?=$article_passe['id']?>
                                </p>
                            </td>
                            <td class="zone_tab_l">
                                <p>
                                    <?=$article_passe['designation']?>
                                </p>
                            </td>
                            <td class="zone_tab_l">
                                <p>
                                    <?=$article_passe['prix']?>
                                </p>
                            </td>
                        </tr>
                        <?php }?> 
                    </table>
     
                </div>           
        </body>
    </html>
    Je sais que ce n'est pas possible de faire la partie avec le fetch, mais dans le principe c'est l'idée
    J'espère que vous m'aurez compris

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Non, pas compris.
    Quel est le problème ?

    N.B. il existe des scripts/tutos sur les paniers PHP.
    Mais la, il semble que tu mélanges SESSION et enregistrement en BDD...

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Donc j'ai une page caisse.php, qui contient un tableau avec une en-têtes, une deuxième ligne avec deux formulaires, l'un pour rechercher un article à partir de son id et l'autre de sa destination. Une troisième ligne qui permettent d'afficher (l'id, la désignation et le prix de l'article recherché) et il faudrait qu'au fur et à mesure qu'on valide des articles les afficher dans une autre ligne. Pour cela il faudrait stocké, tout les infos sur les articles précédents recherche dans une variable session tableau pck lors de la validation du formulaire la page se recharge.

    J'espère que j'ai été plus clair

  4. #4
    Invité
    Invité(e)
    Par défaut

    Pour ce qui est "traitement de formulaire sans rechargement de page", voir "Ajax".

  5. #5
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Oui oui j'ai déjà vu ce tuto mais c'est pas tellement se que je voudrais. Moi tout se passe sur la même pages et non sur les autre page de mon site

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Du coup je me suis plus penché sur le tuto

    J'ai repris le scripte pour l'adapter a mes besoin et c'est nickel merci bien

  7. #7
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Rebonjour

    J'aurais une autre question, comment faire pour autoriser les quantités a virgule (0,23 ; 3,28) dans se tuto ?

    Merci par avance

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est déjà le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     * @param float $prixProduit
    Par contre, la décimale s'écrit en anglais avec un point "." (pas une virgule)

    PHP - Nombres décimaux

  9. #9
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Je suis d'accord pour le prix, mais ça ne marche pas quand je mets une quantité à 0.qqc

  10. #10
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Et même si je mets une quantité par exemple 3.46, cette fois sa me supprime pas la ligne mais ça laisse la quantité initiale

    Personne serait corriger ce problème ?

  11. #11
    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 : 59
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Dans ta base de données, table f_articles, de quel type est ton champ prix ?
    C'est peut-être ça le problème.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  12. #12
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    C'est un varchar, et il se replie automatiquement avec un point

  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Il se replie ? C'est à dire ?
    Et sinon, pour stocker un nombre, il vaudrait mieux un champ de type nombre en base (DECIMAL ou FLOAT pour ton prix). Et en général, les quantités sont des nombres entiers (on commande plutôt une quantité de 1 bidon de 1,5L de lessive que directement une quantité de 1,5L de lessive)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  14. #14
    Invité
    Invité(e)
    Par défaut
    Rebonjour,

    Citation Envoyé par Etibru Voir le message
    ... autoriser les quantités a virgule (0,23 ; 3,28) dans se tuto ?...
    Ah oui, j'avais mal lu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     * @param int $qteProduit
    La quantité est en effet un ENTIER ici.

    Donc dans le tuto, il faut :
    • remplacer intval(...) par floatval(...) là où on traite la quantité
    • en BDD mettre la colonne "quantite" en DECIMAL : decimal(6,2)

    Par exemple ici :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       //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);

  15. #15
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Effectivement je me suis mal exprimé dessolé

    C'est que mon input est comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="number" min="0" step="0.01"/>
    et le type inclue automatiquement un point a la place d'une virgule

    Et merci je vais corriger ma variable en DECIMAL

    Pour ma quantités, j'ai des articles aux mettre linéaire et du coup je peux avoir des quantités avec des virgules.

  16. #16
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par Etibru Voir le message
    le type inclue automatiquement un point a la place d'une virgule
    ça tombe bien, PHP attend des points pour les nombres décimaux

    Citation Envoyé par Etibru Voir le message
    Pour ma quantités, j'ai des articles aux mettre linéaire et du coup je peux avoir des quantités avec des virgules.
    Ah oui, j'avais pas pensé aux tissus et autres choses du même type.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  17. #17
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Du coup comme faire pour que cette algo fonctionne avec des quantités décimal ?

    Après j'ai vu ça aussi :

    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
     
    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['panier']['libelleProduit'][$i],round($QteArticle[$i]));
             }
             break;
     
          Default:
             break;
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    round($QteArticle[$i]
    C'est sûrement ça qui bloque, j'ai essayé de l'enlève mais ça génère des erreurs.

  18. #18
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    En gros, il faut aller à tous les endroits où il est question de quantité et remplacer les intval par des floatval et supprimer les appels à round().
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  19. #19
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2017
    Messages : 18
    Par défaut
    Merci c'est bon, en plus c'était logique
    Un grand merci à toutes les personnes qui l'ont aidé.

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

Discussions similaires

  1. Tableau dans une variable de session
    Par lucaazori1988 dans le forum Langage
    Réponses: 3
    Dernier message: 09/05/2010, 21h49
  2. Réponses: 6
    Dernier message: 30/09/2006, 15h14
  3. lire une donnée dans une variable de session
    Par pblb62 dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 14h23
  4. Réponses: 19
    Dernier message: 02/02/2006, 23h30
  5. [C#] ArrayList dans une variable de session ?
    Par Oberown dans le forum ASP.NET
    Réponses: 1
    Dernier message: 12/12/2005, 15h50

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