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 :

requete qui fonctionne en phpadmin mais pas en direct ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé de cours
    Inscrit en
    Février 2010
    Messages
    6
    Points
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé de cours
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 9
    Par défaut requete qui fonctionne en phpadmin mais pas en direct ?
    Salut,

    Je fais une recherche avec une série de 4 tables, voici le code de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql = 'SELECT C.Societe, S.Nom 
      FROM Client AS C, 
        Stand AS S, 
        Marchandise AS M, 
        Produit AS P
      WHERE C.CP_Client = S.CE_CLient 
        AND S.CP_Stand = M.CE_Stand 
        AND M.CE_Produit = P.CP_Produit 
        AND P.CE_Categorie = '.$_GET["cat"];
    le résultat est bon (2 enregistrements) en PhpAdmin mais dans mon code php qui suit ... pas de réponse et pas possible d'avoir le nombre d'enregistrement trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $result = mysql_query($sql);
    $trouver = mysql_num_rows($result); // ne renvoi rien si affiché avec echo ??
    while ($buffer = mysql_fetch_array($result))
    	{
    		echo $buffer['Societe'].'<br/>';
    	}
    a l'aide, je ne trouve rien sur le net?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 812
    Points
    34 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 812
    Points : 34 084
    Billets dans le blog
    14
    Par défaut
    Tu devrais prendre la bonne habitude d'utiliser la syntaxe normalisée depuis 1992 pour les jointures.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT C.Societe, S.Nom 
    FROM Client AS C 
    INNER JOIN Stand AS S ON C.CP_Client = S.CE_CLient
      INNER JOIN Marchandise AS M ON S.CP_Stand = M.CE_Stand
        INNER JOIN Produit AS P ON M.CE_Produit = P.CP_Produit
    WHERE P.CE_Categorie = '.$_GET["cat"]
    Fais un echo de la requête avant envoi au serveur afin de vérifier si la variable $_GET["cat"] a bien une valeur.
    Prend cette requête réelle et lance là sur phpMyAdmin et vérifie si elle fonctionne.
    Poste le tout ici si tu as encore un problème.

  3. #3
    Membre confirmé
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Points
    455
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 455
    Par défaut
    Salut,

    mysql_num_rows retourne la valeur false si une erreur survient.
    La valeur false est représentée par une chaîne vide.
    Donc quand tu fais un echo, rien ne s'affiche, car un erreur survient.

    Ensuite, ton code est susceptible de comporter une faille de sécurité, si l'échappement automatique des variables super globales n'est pas activé.
    Tu dois échapper $_GET['cat'] pour éviter les injections SQL.

    Je rejoins l'avis du collègue CNAMIEN : il est bien de se conformer à la syntaxe SQL standard.

    Voila, si tu pouvais nous fournir des requêtes SQL générées, ca permettrait de localiser l'erreur.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chargé de cours
    Inscrit en
    Février 2010
    Messages
    6
    Points
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé de cours
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 9
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Tu devrais prendre la bonne habitude d'utiliser la syntaxe normalisée depuis 1992 pour les jointures.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT C.Societe, S.Nom 
    FROM Client AS C 
    INNER JOIN Stand AS S ON C.CP_Client = S.CE_CLient
      INNER JOIN Marchandise AS M ON S.CP_Stand = M.CE_Stand
        INNER JOIN Produit AS P ON M.CE_Produit = P.CP_Produit
    WHERE P.CE_Categorie = '.$_GET["cat"]
    Fais un echo de la requête avant envoi au serveur afin de vérifier si la variable $_GET["cat"] a bien une valeur.
    Prend cette requête réelle et lance là sur phpMyAdmin et vérifie si elle fonctionne.
    Poste le tout ici si tu as encore un problème.
    Merci pour ton aide, mais j'ai également testé le inner join mais avec le même problème :

    • Fonctionne en PhpAdmin
    • Ne fonctionne pas dans mon code

    Je travaille avec Mamp 1.8.2 sur platerforme MacOsX Snow leopard
    bien à toi

    Renard Rudy
    Chargé de cours en Bachelor et

  5. #5
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 812
    Points
    34 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 812
    Points : 34 084
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par goupyl Voir le message
    Merci pour ton aide, mais j'ai également testé le inner join mais avec le même problème :

    • Fonctionne en PhpAdmin
    • Ne fonctionne pas dans mon code

    Je travaille avec Mamp 1.8.2 sur platerforme MacOsX Snow leopard
    bien à toi

    Renard Rudy
    Chargé de cours en Bachelor et
    Tout ça ne nous dit toujours pas quelle requête est réellement envoyée au serveur et quel en est le résultat !
    Nous ne pouvons donc toujours pas t'aider à résoudre ton problème.

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Points
    689
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 689
    Par défaut
    il est même possible que ce soit la valeur de ton $_GET["cat"] qui y est pour quelque chose, puisque en phpmyadmin, je suppose, que tu met une constante à la place.

    à verifier

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chargé de cours
    Inscrit en
    Février 2010
    Messages
    6
    Points
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé de cours
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 9
    Par défaut
    Salut

    Voici l'affichage de ma chaine $sql dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT C.Societe, S.Nom FROM Client AS C INNER JOIN Stand AS S ON C.CP_Client = S.CE_CLient INNER JOIN Marchandise AS M ON S.CP_Stand = M.CE_Stand INNER JOIN Produit AS P ON M.CE_Produit = P.CP_Produit WHERE P.CE_Categorie = 5
    il va de soit que dans phpAdmin je suis obligé de tapé la valeur 5.
    PS. merci pour les conseils .. je suis un vieux programmeur et je vais me plonger dans les normes

    Merci encore

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Par défaut
    Pour debuguer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo mysql_error() .'<br/>' . $sql;

  9. #9
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 812
    Points
    34 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 812
    Points : 34 084
    Billets dans le blog
    14
    Par défaut
    La requête semble bonne.
    Si tu copies/colles cette requête obtenue par echo dans phpMyAdmin, le résultat est correct ?

    La colonne P.CE_Categorie est bien de type entier ?

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Chargé de cours
    Inscrit en
    Février 2010
    Messages
    6
    Points
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chargé de cours
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 9
    Par défaut
    Mea culpa
    Comme je travaille avec de l'ajax pour afficher mon résultat, la connexion avec ma base n'était pas active ...

    Merci beaucoup pour votre aide et surtout pour vos conseilles de normalisation
    Je vais m'investir dans votre communauté.

    Bien à vous tous

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/09/2007, 13h15
  2. Requete qui marche une fois mais pas deux
    Par maxvador dans le forum Hibernate
    Réponses: 4
    Dernier message: 23/01/2007, 16h07
  3. Eval qui fonctionne sur Firefox mais pas sur IE :D
    Par Comawhite dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/10/2006, 12h31
  4. [2.0] connexion qui fonctionne chez moi mais pas sur un autre pc
    Par Lorenzeb dans le forum Accès aux données
    Réponses: 1
    Dernier message: 13/09/2006, 18h47
  5. Fonction JS qui fonctionne avec Mozilla mais pas avec IE.
    Par etiennegaloup dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 14h58

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