Inner join

Résolu
Nouvelle_Informaticienne Messages postés 173 Statut Membre -  
Nouvelle_Informaticienne Messages postés 173 Statut Membre -
bonjour
s il vous plait je veux faire une requête dans un code PHP mais dans le WHERE de SELECT j'ai beaucoup de conditions et je n’arrive pas a vérifier est ce que ma requête est bonne au niveau syntaxe
voici ma requête je veux savoir est ce que c'est comme ça qu'on écrit la requête est ce que j'ai bien placé les " " et les ' ' et aussi les $ , ,je vous remercie

 $sqll = "SELECT id_interv as idd
            FROM fiche_inter inner join fiche_prjprincipale
     WHERE id_FPP = ".$id."and id_FPP =id_projet and type_intervenant='responsable'";



sachant que
id est une variable que je sélectionne avec une requete
id_FPP et id_projet sont deux champs dans deux tables différentes
type_intervenant champs dans la table
responsable est un string

voici mon code

<?php

$sqll = "SELECT id_interv as idd
            FROM fiche_inter inner join fiche_prjprincipale
     WHERE id_FPP = ".$id."and id_FPP =id_projet and type_intervenant='responsable'";
 
  //exécution de la requête:
  $requetee = mysqli_query($cnx,$sqll);
  if($result=mysqli_fetch_assoc($requetee))
  {    $id=$row["idd"];

 echo "id=<br>".$id;
} ?>


je sais qu'il a une ereur je ne sais pas ou j'ai cherché des exemples pour comparer je n ai pas trouvé lle bon exemple bah il m affiche l erreur suivante :
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Program Files\EasyPHP-12.1\www\pst\connexion\affiche2.php on line 128


mysqli_fetch_assoc() source d'erreur mais je crois a cause de la requette precedante

je vous remercie bcp

2 réponses

  1. FlorianGoMore Messages postés 32 Statut Membre 4
     
    Bonjour,

    Sans trop regarder la logique, la requête de manière plus "propre" donne ceci :

    $sqll = "
    SELECT xx.id_interv AS idd
    FROM fiche_inter fi
    INNER JOIN fiche_prjprincipale fp ON xx.id_FPP = xx.".$id."
    WHERE xx.id_FPP = xx.id_projet
    AND xx.type_intervenant='responsable'";
    


    Il ne reste plus qu'à modifier les "xx" par "fp" si le champ est dans fiche_principale et par "fi" si le champ est dans fiche_inter

    Cordialement,
    Florian
    1
    1. Nouvelle_Informaticienne Messages postés 173 Statut Membre 3
       
      bonjour je vous remercie
      j ai utilisé ca comme requete mais je trouve toujours meme erreur

       $sqll = "
      SELECT id_interv AS idd
      FROM fiche_inter fi
      INNER JOIN fiche_prjprincipale fp ON id_FPP = id_projet
      WHERE id_projet=".$id."
      AND type_intervenant='responsable'";
      


      qui n est pas logique ans ma requete ?
      je vous remercie encore

      cette ligne ??

      WHERE id_projet=".$id."
      0
      1. FlorianGoMore Messages postés 32 Statut Membre 4 > Nouvelle_Informaticienne Messages postés 173 Statut Membre
         
        Pouvez vous me dire, au cas par cas, dans quelle table se trouvent les champs suivants ? (fiche_inter ou fiche_principale) :
        id_interv
        id_FPP
        id_projet
        type_intervenant

        Merci

        Florian
        0
    2. Nouvelle_Informaticienne Messages postés 173 Statut Membre 3
       
      oui bien sur

      id_interv dans la table fiche_inter
      id_projet dans la table fiche_inter
      id_FPP dans la table fiche_principale
      type_intervenant dans la table fiche_principale

      et le id c'es ca
      $id = $_GET["id"] ;
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,
    je n’arrive pas a vérifier est ce que ma requête est bonne au niveau syntaxe

    La meilleur façon de le savoir ... c'est de tester ta requête DIRECTEMENT dans ta BDD !!!
    (via phpmyadmin ou un logiciel comme heidiSql par exemple)

    j ai utilisé ca comme requete mais je trouve toujours meme erreur

    Et.. quelle est donc cette erreur ? (le texte EXACT ! )

    De plus.. tu n'as pas fait ce qui t'a été indiqué :
    Il ne reste plus qu'à modifier les "xx" par "fp" si le champ est dans fiche_principale et par "fi" si le champ est dans fiche_inter


    1
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      et le id c'es ca
      $id = $_GET["id"] ;

      Ah et.. où se trouve la récupération "PROPRE" des variables tel que je m'évertue de te l'apprendre depuis tes premières questions ???????

      $id = !empty($_GET["id"] ) ? $_GET["id"]  : 0;
      
      0
    2. Nouvelle_Informaticienne Messages postés 173 Statut Membre 3
       
      eeh oui Monsieur Jordan je suis dessolée vous me dire toujours tester et mais bon moi quand je voulais faire des choses spéciale j'oublie les autres je me concentre seulement sur le truc mauvaise habitude, sinon je vous remercie pour vos conseils et j'ai commencé a apprendre pas mal de choses grace a vous deja les bonnes pratiques sont essentielles . merciii

        $id = !empty($_GET["id"] ) ? $_GET["id"]  : 0;
      

      et
      $sqll = "
      SELECT fi.id_interv AS idd
      FROM fiche_inter fi
      INNER JOIN fiche_prjprincipale fp ON fp.id_FPP = ".$id."
      WHERE fp.id_FPP = fi.id_projet
      AND fp.type_intervenant='responsable'";


      l'erreur est :

      Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Program Files\EasyPHP-12.1\www\pst\connexion\affiche2.php on line 136
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Nouvelle_Informaticienne Messages postés 173 Statut Membre
       
      Si le message est : mysqli_fetch_assoc() ... aucun rapport avec la requête donc !!!
      Ensuite, pour résoudre ton problème .. une simple recherche sur le net avec par exemple : "Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result" ... et hop... tu as la solution !

      Ou sinon.. tu peux simplement regarder le manuel de cette fonction https://www.php.net/manual/fr/mysqli-result.fetch-assoc.php
      tu comprendras normalement assez rapidement ce que tu as oublié !
      0
    4. Nouvelle_Informaticienne Messages postés 173 Statut Membre 3
       
      comme vous avez dis je suis entrain de tester ma requette sur sql directement
      je vous remercie infiniment pour vos réponses
      0
    5. FlorianGoMore Messages postés 32 Statut Membre 4
       
      Il manque beaucoup de rigueur je trouve... Mais bon, je ne suis pas là pour critiquer.
      "on line 136" signifie que l'erreur se trouve à la ligne 136, à toi d'apprendre à lire...
      Pour ce qui est de l'erreur, as-tu essayé de remplacer le "pf" du WHERE par "fp", à tout hasard ?
      0