Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Problème] Formulaire PHP - MySQL

    24 janvier 2017 à 20:30:36

    Bonsoir à vous, je viens vous voir parce que j'ai un (voire plusieurs) problème(s) avec mon formulaire.

    J'ai dû apprendre le PHP et le langage SQL sur le tas, et certaines choses doivent m'échapper.

    Après avoir fait quelques tests, il me semble que le problème vient de l'utilisation de $bdd -> query...

    Je vous donne le code.

    Voici le fichier fonction.php

    function connecterBDD() 
    {
    	try
    	{
    		$bdd = new PDO('mysql:host=localhost;dbname=pelforth;charset=utf8', 'root', 'root');
    	}
    	catch(Exception $e)
    	{
    		die('Erreur :'.$e -> getMessage());
    	}
    }
    function updatePLAT($quantitePlat, $idPlat) 
    
    {
    		$StockPlat = $bdd -> query('SELECT stock FROM PLAT WHERE ID = $idPlat') or die(print_r($bdd->errorInfo()));
    		$nouveauStockPlat = $StockPlat - $quantitePlat;
    		$reqPlat = $bdd -> prepare('UPDATE PLAT SET stock = :nouveauStockPlat WHERE id = :idPlat') or die(print_r($bdd->errorInfo()));
    		$req -> execute(array(
    			'nouveauStockPlat' => $nouveauStockPlat, 
    			'idPlat' => $idPlat
    			)); 
    } 

    Et voici une partie de mon fichier traitement.php :

    $isPoulet = isset($_POST['poulet']);
    $quantPoulet = $_POST['nPoulet'];
    $bdd = connecterBDD() ;
    
    if($isPoulet == 1) // L'entrée dans la boucle fonctionne
    {		
    	updatePLAT($quantPoulet, 6);
    }

    Les variables $isPoulet et $quantPoulet correspondent bien aux valeurs entrées dans le formulaire donc aucun problème à ce niveau.

    Le problème réside dans le fait que ma BDD ne se voie pas du tout modifiée lorsque je vais regarder dans phpMyAdmin..

    Auriez vous une idée de la raison de mon problème ? 

    Bonne soirée à vous

    -
    Edité par Azhrat 24 janvier 2017 à 20:32:02

    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2017 à 21:17:18

      Le soucis déjà que je viens de remarqué est la variable appelé sur ton UPDATE change le $req par $reqPlat :)

      -
      Edité par Ryadh K. (ShineOfFire) 24 janvier 2017 à 21:17:40

      • Partager sur Facebook
      • Partager sur Twitter
      https://github.com/ShineOfFire
        24 janvier 2017 à 21:39:37

        Yes, merci pour la faute bête !

        Mais le problème doit provenir de la ligne 4 de la fonction updatePLAT. Je m'explique : lorsque je fais un echo('coucou'); entre la ligne 3 et 4, le coucou est affiché sans problème. Quand je le mets entre la ligne 4 et 5, celui ci ne s'affiche plus, de ce fait la ligne 4 doit être problématique non ?

        • Partager sur Facebook
        • Partager sur Twitter
          24 janvier 2017 à 21:57:39

          et si tu bind ton id et fait le pour ton select et update :

          $reqPlat->bindParam(':idPlat'$idPlatPDO::PARAM_INT);

          • Partager sur Facebook
          • Partager sur Twitter
          https://github.com/ShineOfFire
            24 janvier 2017 à 21:57:44

            salut

            tu as testé ta requete SELECT stock FROM PLAT WHERE ID = 1  

            y'a ptet une erreur dans la requete


            • Partager sur Facebook
            • Partager sur Twitter
              24 janvier 2017 à 22:14:02

              Je vais paraitre ignorant mais c'est quoi un bind ?

              Et pour la requête, tu veux la tester comment ? J'ai mis ça :

              $StockPlat = $bdd -> query('SELECT stock FROM PLAT WHERE ID = $idPlat') or die(print_r($bdd->errorInfo()));

              Mais il m'affiche aucun message d'erreur..

              • Partager sur Facebook
              • Partager sur Twitter
                24 janvier 2017 à 22:22:59

                Bonne lecture pour bindParam() et bindValue()
                http://php.net/manual/fr/pdostatement.bindparam.php

                https://openclassrooms.com/forum/sujet/mieux-vaut-utiliser-bindvalue-ou-bindparam-99288

                et pour ta requete essaie en premier temps avec un id = 1 (si tu à un id 1 dans ta bdd) histoire de test s'il te retourne bien des valeurs et fait un vardump juste en dessous 

                • Partager sur Facebook
                • Partager sur Twitter
                https://github.com/ShineOfFire
                  24 janvier 2017 à 22:51:49

                  J'ai fait ça du coup, mais ça m'affiche rien du tout... :'(

                  $StockPlat = $bdd -> query('SELECT stock FROM PLAT WHERE ID = 1');
                  var_dump($StockPlat);

                  J'arrive vraiment pas à comprendre pourquoi ça ne marche pas :/

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 janvier 2017 à 22:55:42

                    Fait plutôt sa
                    $StockPlat = $bdd->query('SELECT stock FROM PLAT WHERE ID = 1');
                    $res = $StockPlat->fetchAll(PDO::FETCH_OBJ);
                    var_dump($res);

                    • Partager sur Facebook
                    • Partager sur Twitter
                    https://github.com/ShineOfFire
                      24 janvier 2017 à 23:04:03

                      Ok surement un soucis de case, tu devrait mettre au lieu de ID plutôt id et ta table PLAT est en majuscule dans ta bdd ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      https://github.com/ShineOfFire
                        24 janvier 2017 à 23:17:50

                        Ok déjà on va afficher les erreurs sql :
                        try
                        {
                        $bdd = new PDO('mysql:host=localhost;dbname=pelforth;charset=utf8', 'root', 'root');
                                $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                            }



                        -
                        Edité par Ryadh K. (ShineOfFire) 24 janvier 2017 à 23:18:29

                        • Partager sur Facebook
                        • Partager sur Twitter
                        https://github.com/ShineOfFire
                          24 janvier 2017 à 23:21:54

                          et si tu fait un var_dump dans le catch ? il s'affiche ? un var_dump('test'); par exemple
                          • Partager sur Facebook
                          • Partager sur Twitter
                          https://github.com/ShineOfFire
                            24 janvier 2017 à 23:24:14

                            Il m'affiche rien. Par contre quand je le mets dans le try il me met string(4) "test"
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 janvier 2017 à 23:37:56

                              Je vais essayer de mon côté je reviens vers toi
                              • Partager sur Facebook
                              • Partager sur Twitter
                              https://github.com/ShineOfFire
                                24 janvier 2017 à 23:43:00

                                C'est gentil merci, je reste sur le forum toute la nuit haha
                                • Partager sur Facebook
                                • Partager sur Twitter

                                [Problème] Formulaire PHP - 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