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

PHP & Base de données Discussion :

Impossible d'effectuer la requête [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Impossible d'effectuer la requête
    Bonsoir,

    Pour effectuer des transactions vers ma base de données (MySql), j'utilise une classe nommée CtransactionsBdd.

    Le problème qui survient, c'est sur un select (alors que j'ai déjà utilisé cette méthode avec bien d'autres select ailleurs dans mon projet, sans problème).

    En fait, lorque je fais passer ma requête directement dans PhpAdmin, je retrouve bien les résultats attendus, tandis que via mon script, j'obtiens le message d'erreur envoyé par mon objet "Impossible d'effectuer la sélection select distinct codePostal from localites order by codePostal".

    Voici le code dans mon script :

    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
    session_start();
     
    if(!empty($_SESSION['cible']))
     {
      $objCible = unserialize($_SESSION['cible']);
      $tabDonnesCible = $objCible->getAll();
     }
    ...
     
    echo " onblur=\"this.style.backgroundColor = '#FFFFFF'; if(verifNomAdresse(this)) this.style.backgroundColor = '#F3C200'\"></td>
    		<td id='tdcontenu'>&nbsp;</td>
    	 </tr>
    	 <tr>
    		<td id='tdcontenu'>&nbsp;</td>
        <td id='tdcontenu'>Code postal</td>
    		<td id='tdcontenu'>
    		 <select name ='codePostal' id='codePostal' tabindex='3' onChange='majLoc();'>
    		  <option value='0'></option>";
     
     
    if(empty($objCible))
     listeCodesPostaux();
    else
     //listeCodesPostaux($tabDonnesCible['codePostal']);
     listeCodesPostaux();
     
    echo "\n    </td>
    Voici le code de ma méthode :

    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
    public function select($requ, $tableau)
       {
        $requete = requete($requ, $tableau);
     
    	  switch(self::$typeBase)
         {
          case "MYSQL":
    	    $result = mysql_query($requete, self::$connect);
     
          if(! $result)
           self::$erreur = "Impossible d'effectuer la sélection " . $requete;
          else
    	    {
    		   if (! mysql_num_rows($result))
    		    self::$erreur = "Aucun résultat";
    		   else
    		    {
    		     while($row = mysql_fetch_assoc($result))
              $resultatSelect[] = $row;
     
    		     return $resultatSelect;
    		    }
    		  }
     
    	   break;
    	  }
    Ce qui m'étonne, c'est que si n'existe pas, tous mes codes postaux s'affichent bien.

    Quelqu'un aurait une idée?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu ne nous montres pas le lien entre $_SESSION['cible'] et ta requête, ni même comment est construite et demandée ta requête ...

    Tu peux toujours afficher l'erreur mysql, ca sera plus parlant peut etre :
    if(! $result)
    self::$erreur = "Impossible d'effectuer la sélection " . $requete . "<br>" . mysql_error();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Bonjour,

    Merci beaucoup pour ton intérêt...

    Concernant $_SESSION['cible'] et ma requête, justement, ce que je ne comprends pas, c'est qu'il n'y en a pas! (car j'ai commenté ma ligne //listeCodesPostaux($tabDonnesCible['codePostal']); pour voir si ça venait de là).

    De fait, j'avais oublié de mettre le code de ma fonction listeCodesPostaux() qui se trouve dans un fichier de fonctions externe :

    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
    function listeCodesPostaux($cdPost = "")
     {
      $tab = NULL;
      $transaction = CtransactionsBdd::GetInstance("MYSQL", "speedcall");
      $resuReq = $transaction->select("MYSQL_listeCodesPost", $tab);
      $cpt = count($resuReq);
     
      for($i = 0; $i < $cpt; $i++)
       {
        echo "\r\n          <option value='" . $resuReq[$i]['codePostal'] . "'";
     
        if(!empty($cdPost))
         {
          if($resuReq[$i]['codePostal'] == $codePostal)
           echo " selected";
         }
     
        echo ">" . $resuReq[$i]['codePostal'] . "</option>";
       }
     
      echo "\r\n   </select>" . $transaction->getErreur();
     }
    Ma requête, elle est construite par l'appel à select("MYSQL_listeCodesPost", $tab), méthde de ma classe CTransation qui elle-même fait appel à la fonction requete($req, $param) se trouvant toujours dans mon fichier de fonctions et dont voici la partie de code utilisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function requete($req, $param)
     {
       switch($req)
         {
          case "MYSQL_listeCodesPost":
           return "select distinct codePostal from localites order by codePostal";
           break;
           ...
    Voilà... j'ai mis un maximum de renseignements

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    J'ai enfin trouvé d'où venait mon problème. Dans ma classe CCible, j'ai une fonction getLocalite() dans laquelle j'effectue un select mais pour lequel il y avait une erreur dans le nom de ma base de données.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/12/2007, 19h22
  2. Réponses: 4
    Dernier message: 11/07/2007, 16h23
  3. Réponses: 1
    Dernier message: 25/08/2006, 14h21
  4. Comment effectuer des requêtes via ClientDataSat1 en client/serveur ?
    Par MaTHieU_ dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/06/2006, 01h04
  5. Effectuer une requête
    Par Telemak dans le forum Bases de données
    Réponses: 23
    Dernier message: 19/06/2006, 13h28

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