Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire calcul prix en php et mysql

    11 juillet 2019 à 17:14:23

    Bonjour,

    Je veux faire un formulaire d’estimation de prix sur mon site Wordpress.

    J’ai créé une bdd dans wordpress, une page1 de formulaire et une page2 de calcul.

    Je voudrais que :

    1/l’utilisateur renseigne un appareil (ex : samsung s7) dans la page de formulaire

    2/si cet appareil est présent dans la bdd alors -> on récupère le prix correspondant et l’affecte à une variable qui va être utilisée (avec d’autre) pour le calcul et l’affichage d’un prix estimé.

    mysql : création table et 2 champs ‘appareil’ et ‘prix’

    Page1 : formulaire avec méthode POST

    Page2 : je récupère la saisie de l’utilisateur dans une variable (avec htmlspecialchars),je me connecte en php (avec pdo et test erreurs), je fais une requête avec prepare et execute mais je n’arrive pas à prendre ma variable du formulaire pour lui attribuer le prix adéquat pour faire un calcul final.

    Voici mon code :

    […]
    <body>
    <?php
    $appareilform = htmlspecialchars($_POST['appareilform']);
    ?>
    <?php
                            try
                            {
                                $bdd = new PDO('…’);
                            }
                            catch (Exception $e)
                            {
                                    die('Erreur : ' . $e->getMessage());
                            }
                        
                            $req = $bdd->prepare('SELECT prix FROM mabdd  WHERE appareil=?');
                            $req->execute(array($_GET['appareil']));
                                
                            while ($donnees = $req->fetch())
                            {
                                if ($_GET['appareil']=$appareilform)
                                {
                                    $appareilform=$prixappareil ;
    		            }
                                else
                                {
                                    echo 'Appareil absent de la base de données';
                                }
                            }
    		        [idem avec autres variables]
                            echo $prixfinal
    
                            $req->closeCursor();
                            ?>
    



    -
    Edité par fabbbb 11 juillet 2019 à 17:15:51

    • Partager sur Facebook
    • Partager sur Twitter
      11 juillet 2019 à 17:36:00

      Bonjour.

      fabbbb a écrit:

      je n’arrive pas à prendre ma variable du formulaire pour lui attribuer le prix adéquat pour faire un calcul final.

      Peut-être tout simplement parce que la condition dans la boucle while n'est jamais respectée.

      Par contre, si la valeur de la colonne appareil est unique par rapport à tous les enregistrements de la table, pourquoi faire une boucle si c'est le cas ?

      De plus que ton système implique que l'utilisateur doit connaître les valeurs exactes de la colonne dans la table pour tous les enregistrements.

      -
      Edité par Lartak 11 juillet 2019 à 17:38:38

      • Partager sur Facebook
      • Partager sur Twitter

      Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

        11 juillet 2019 à 18:17:04

        Lartak a écrit:

        Peut-être tout simplement parce que la condition dans la boucle while n'est jamais respectée.

        Pourquoi? J'ai fait while (pour toutes les données de mon champ appareils) if (la valeur de mon champ appareil=la valeur rentrée par l'utilisateur) alors affecter une variable à cette données , else (afficher appareil absent).

        Lartak a écrit:

        Par contre, si la valeur de la colonne appareil est unique par rapport à tous les enregistrements de la table, pourquoi faire une boucle si c'est le cas ?

        Comment faire sinon? Juste faire un SELECT amélioré?

        Lartak a écrit:

        De plus que ton système implique que l'utilisateur doit connaître les valeurs exactes de la colonne dans la table pour tous les enregistrements.

        J'ai fait une liste déroulante mais il y a trop de valeur. Donc je le laisse saisir (et ferais de l'autocomplétion)

        • Partager sur Facebook
        • Partager sur Twitter
          11 juillet 2019 à 18:44:34

          Aucunement besoin d'un SELECT amélioré, il te faut simplement récupérer l'enregistrement, soit avec la méthode que tu utilisais (fetch), mais sans boucle.

          Si tu fais un système d'auto-complete du champ, par conséquent l'enregistrement devrait existait dans la table.

          Au passage, d'où sors-tu la variable prixappareil?

          Elle n'est définie nulle-part dans le code que tu présentes.

          • Partager sur Facebook
          • Partager sur Twitter

          Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

            18 juillet 2019 à 11:08:40

            Merci Lartak.

            Par contre si je veux récupérer le nom de l'appareil en bdd 

            SELECT * FROM mabdd WHERE appareil= :appareil

            c'est mieux de faire un bindValue 

            $req->bindValue (':appareil', $appareil, PDO::PARAM_STR);

            ou le faire dans l'array 

            $req->execute(array('appareil' => $appareil));

            Une fois récupérer, pour le comparer à celui entré par l'utilisateur, il faut bien faire un if  

            if ($donnees = $requete->fetch())
            {
                 echo $donnees['prix'];
            }
            else
            {
                 echo "KO";
            }

            -
            Edité par fabbbb 18 juillet 2019 à 15:41:37

            • Partager sur Facebook
            • Partager sur Twitter

            Formulaire calcul prix en php et mysql

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown