Partage
  • Partager sur Facebook
  • Partager sur Twitter

requete sql qui ne s'execute pas

Sujet résolu
    19 février 2021 à 12:39:22

    Bonjour a tous. Je suis en train de faire l'exercice des personnages en poo. Mais je recontre un probleme. 

    public function select($pseudo)
    	{
    		echo $pseudo;
    		
    		$reponse = $this->_db->prepare('SELECT * FROM personnages WHERE pseudo = :pseudo');
    		$reponse->execute(array(
    						'pseudo' => $pseudo
    						));
    					
    		while ($donnees = $reponse->fetch())
    		{
    			if ($donnees['racePerso'] == 'magicien')
    			{
    				$perso = new Magicien($donnees['id'], $donnees['pseudo'], $donnees['forcePerso'], $donnees['degats'], $donnees['experience'], $donnees['niveau'], $donnees['racePerso']);
    
    			}
    			return $perso;
    }
    }



    la boucle wile ne s'execute pas et donc ne retroune rien alors qu'il n'y a aucun bug. C'est bien a l'interieur de la boucle que rien ne se passe.

    Merci de vos réponses

    -
    Edité par bouletteman1 19 février 2021 à 12:46:22

    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2021 à 13:15:12

      Salut

      Quelle version de PHP utilises-tu ? Avant PHP 8, il faut absolument demander à PDO dans le code de te parler des potentielles erreurs SQL rencontrées, sans quoi tu n'en sauras rien.
      De plus (et ce pour toutes versions de PHP), si PHP lui-même n'est pas configuré (au niveau du php.ini) pour signaler les erreurs, le paragraphe précédent est inutile.

      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2021 à 13:30:28

        Niveau algo, le code n'est pas terrible :

        • le return dans le while
        • l'affectation de $perso dans le if

        Ce qui fait que si le premier perso renvoyé par la requête n'est pas un magicien, tu renvoies NULL ... (même chose, implicitement, d'ailleurs si la requête ne renvoie aucune ligne)

        C'est peut être ça ton problème de "ne retourne rien" parce que :

        > C'est bien à l'intérieur de la boucle que rien ne se passe.

        Ca, avec ce code, il n'y a rien pour l'affirmer (echo ou autre pour le voir).

        -
        Edité par julp 19 février 2021 à 13:37:11

        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2021 à 21:47:16

          En fait je ne teste que le code qu' avec magicien comme personnage via un formulaire et je n'ai pas encore ecris le reste du code ou je verifie d'autres racePerso comme personnage
          • Partager sur Facebook
          • Partager sur Twitter
            28 février 2021 à 12:50:17

            Si quelqu'un a une piste merci?

            EDIT: j'ai modifié le code et ca donne ca maintenant

            public function chercher($pseudo)
            	{ 
            		$reponse = $this->_db->query('SELECT * FROM personnages WHERE pseudo = :pseudo');
            		$reponse->execute(array(
            					'pseudo' => $pseudo
            					));
            					
            		while ($donnees = $reponse->fetch())
            		{
            			echo $donnees['pseudo'];
            		}
            	}

            mais maintenant j'ai cette erreur

            Warning: PDO::query(): in C:\wamp\www\testpoophp\poo\classManager.php on line 65


             Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\testpoophp\poo\classManager.php on line 66

            -
            Edité par bouletteman1 28 février 2021 à 13:16:37

            • Partager sur Facebook
            • Partager sur Twitter
              28 février 2021 à 14:51:17

              La méthode query au lieu de prepare pour une requête censée être préparée, normal que ça plante sur le premier marqueur ...

              On en revient au fait que les erreurs PDO/SQL ne sont toujours pas activées ...

              -
              Edité par julp 28 février 2021 à 14:52:06

              • Partager sur Facebook
              • Partager sur Twitter
                28 février 2021 à 15:02:27

                ah ok merci. l'erreur bête

                EDIT: j'ai compris pourquoi ca ne m'affichais rien comme resultats. Il faut vider le cache du navigateur google chrome. Je suis donc obligé de le vider régulierement.

                Est ce que tu as une idée pour que le navigateur ne creer plus de cache. Parce que c'est chiant de le vider tout le temps. Merci

                -
                Edité par bouletteman1 28 février 2021 à 15:39:05

                • Partager sur Facebook
                • Partager sur Twitter
                  1 mars 2021 à 16:23:57

                  bouletteman1 a écrit:

                  Est ce que tu as une idée pour que le navigateur ne creer plus de cache. Parce que c'est chiant de le vider tout le temps. Merci

                  -
                  Edité par bouletteman1 hier à 15:39

                  Bonjour,

                  Passe en navigation privée ;) Ca ne conserve pas les caches & cookies

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Parfois, arrêter 5 minutes son développement permet de mieux repartir face à un problème ;)

                    1 mars 2021 à 19:28:25

                    ok merci de ta reponse. Je met tout de suite le sujet en résolu
                    • Partager sur Facebook
                    • Partager sur Twitter

                    requete sql qui ne s'execute pas

                    × 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