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 :

probleme dans une requete n° 3


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut probleme dans une requete n° 3
    Bonjour,

    voici j ai un soucis et le dernier dans mon tableau (enfin) j ai donc su avoir les nom des Pays et les nom des deputés a l'organe en question

    et mon soucis est que je n arrive pas a mettre le bon role au bon endroit

    comme sur l exemple : dans l'organe en question, le pays "Netherland" a Annie SCHREIJER-PIERIK en Substitute

    Nom : tabmeps.png
Affichages : 95
Taille : 43,2 Ko

    et voici mon bout de code pour mettre les bons députés aux bons organes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $stid2 = oci_parse($conn, 'SELECT DISTINCT MEMBER_LASTNAME, MEMBER_FIRSTNAME, MEMBER_ID FROM MEMBER M INNER JOIN ROLE R ON M.MEMBER_ID = R.ROLE_MEMBER_ID_FK WHERE R.ROLE_BODY_ID_FK='.$tmp2.' ORDER BY MEMBER_LASTNAME');
    				oci_execute($stid2);
    				while (($row = oci_fetch_array($stid2, OCI_BOTH)) != false) {
    				////je prend le nom prenom et id
    					$TmpNom=$row['MEMBER_LASTNAME'];
    					$TmpPrenom=$row['MEMBER_FIRSTNAME'];
    					 $memberId=$row['MEMBER_ID'];
     
    					 echo"<tr><th class=row-header>";
    					 echo $TmpNom,' ',$TmpPrenom ;
    					 echo "</th>";
    					 $cpt++;
    (pour ce code tout marche bien)

    et voici mon probleme de requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stRole = oci_parse($conn, 'SELECT function_legend from role, function WHERE role_function_id_fk=function_id and role_member_id_fk ='.$memberId.');
    et la je bloque car je dois mettre L'id du pays (.$res[$i]['COUNTRY_ID'] que j ai mis dans un tableau quand j'ai fait les entetes avec les noms du pays) mais n arrive pas a trouver le lien ...

    merci pour votre aide

    voici la la structure de mes tables

    Nom : bodytab.png
Affichages : 90
Taille : 22,8 KoNom : bodytypetab.png
Affichages : 91
Taille : 11,5 KoNom : countrytab.png
Affichages : 95
Taille : 15,0 Ko
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    Nom : functiontab.png
Affichages : 92
Taille : 11,6 KoNom : membertab.png
Affichages : 92
Taille : 22,5 KoNom : roletab.png
Affichages : 99
Taille : 16,9 Ko

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    si tu n'as pas de réponse, c'est que la question est mal posées ou pas claire du tout.
    Reformule, et donne des explications claires, et un exemple de ce que tu veux obtenir.

  4. #4
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    merci a toi ,

    je vais reformuler ma question

    je voudrais avoir le bon roles (S,VP,P,C,M) du député en question au bon rang

    voici un exemple

    dans l'organe en question(fisheries), le pays "Netherland" a Annie SCHREIJER-PIERIK en Substitute (S)

    Nom : tabmeps.png
Affichages : 75
Taille : 43,2 Ko

    et voici mon code deja etablit pour avoir le tableau des noms de député et des pays

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    ///////////ceci est pour les entetes du tableau(noms des pays)
    				$conn;
     
    				$table= array();
    				$cpt=0;
    				$i=0;
    				$j=0;
     
     $sql = 'SELECT DISTINCT COUNTRY_NAME_EN, COUNTRY_ID
    	FROM COUNTRY C 
    	INNER JOIN MEMBER M 
    		ON C.COUNTRY_ID = M.MEMBER_NATION_COUNTRY_ID_FK 
    	INNER JOIN ROLE R 
    		ON M.MEMBER_ID = R.ROLE_MEMBER_ID_FK 
    	WHERE R.ROLE_BODY_ID_FK = '.$tmp2.' 
    	ORDER BY C.COUNTRY_NAME_EN';				
    			$stid = oci_parse($conn, $sql);
    			oci_execute($stid);
     
    			$countCountry = oci_fetch_all($stid, $res, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
    			$j=0;
    			while ($j < $countCountry){
    				echo"<th class=rotate-45><div><span>";
    				echo $res[$j]['COUNTRY_NAME_EN'];
    				echo"</span></div></th>";
    				$j++;
    			}
     
     
    ///////////ceci est pour les nom des membres
     
    $stid2 = oci_parse($conn, 'SELECT DISTINCT MEMBER_LASTNAME, MEMBER_FIRSTNAME, MEMBER_ID FROM MEMBER M INNER JOIN ROLE R ON M.MEMBER_ID = R.ROLE_MEMBER_ID_FK WHERE R.ROLE_BODY_ID_FK='.$tmp2.' ORDER BY MEMBER_LASTNAME');
    				oci_execute($stid2);
    				while (($row = oci_fetch_array($stid2, OCI_BOTH)) != false) {
    				////je prend le nom prenom et id
    					$TmpNom=$row['MEMBER_LASTNAME'];
    					$TmpPrenom=$row['MEMBER_FIRSTNAME'];
    					 $memberId=$row['MEMBER_ID'];
     
    					 echo"<tr><th class=row-header>";
    					 echo $TmpNom,' ',$TmpPrenom ;
    					 echo "</th>";
    ce qui me donne ceci

    Nom : tabvide.png
Affichages : 76
Taille : 9,6 Ko


    jai continuer le code pour pouvoir remplir les cellule est essayé de mettre le role au bon pays mais je suis bloqué la

    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
    $i=0;
    					while ($i < $countCountry){
     
    						$stRole = oci_parse($conn, 'SELECT function_legend from role, function WHERE role_function_id_fk=function_id and role_member_id_fk ='.$memberId. ' and role_body_id_fk='.$res[$i]['COUNTRY_ID']);
    						oci_execute($stRole);
     
    						$countRole = oci_fetch_all($stRole, $resRole, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
     
    						if($countRole>0){
    							//echo $row[0] . " " . $row[1] . "<br>\n";
    							echo '<td id="123">'.$resRole[0]['FUNCTION_LEGEND'].'</td>';
    						}else{
    							echo '<td></td>';
    						}
     
    						$i++;
    					}
    ce qui me donne ceci

    Nom : tabtab.png
Affichages : 74
Taille : 14,2 Ko

    mais je n ai pas les role en question cela vient de ma requete(car je n arrive pas a trouver le lien entre le pays et les roles)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     role_body_id_fk='.$res[$i]['COUNTRY_ID']);
    je bloque la dessus ...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ça ne sert à rien de recopier ce que tu as déjà mis dans le 1er message...

  6. #6
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    je reformule en plus clair mais je ne sais pas comment expliquer autrement lol , dis moi ce que tu n as pas compris dans mon probleme ca va etre plus simple

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$stRole = oci_parse($conn, 'SELECT function_legend from role, function WHERE role_function_id_fk=function_id and role_member_id_fk ='.$memberId. ' and role_body_id_fk='.$res[$i]['COUNTRY_ID']);
    1/ Il me semble t'avoir déjà donner des conseils sur "comment écrire tes requêtes" de façon correcte et lisible.

    2/ C'est à toi de comprendre les relations entre tes différentes tables.
    C'est la seule manière pour écrire des requêtes cohérentes, avec les bonnes RELATIONS.

  8. #8
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    dorenavant je met le code plus lisible

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stRole = oci_parse($conn, 'SELECT function_legend from role R, function F, member M Where R.role_function_id_fk=F.function_id and R.role_member_id_fk ='.$memberId.' and M.MEMBER_NATION_COUNTRY_ID_FK ='.$res[$i]['COUNTRY_ID']);
    mais il me met n importe quoi dans les cellule ... je n arrive pas a trouver le lien,

    (je suis en stage ce n est pas moi qui est fait la base de données je dois juste réecrire l application en php)

  9. #9
    Invité
    Invité(e)
    Par défaut
    Relis ce qu'on t'a déjà montré concernant les JOINTURES.

  10. #10
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    c est ce que je suis entrain de regarder mais la je ne comprend pas tres bien pourquoi cela ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stRole = oci_parse($conn, 'SELECT function_legend from function F INNER JOIN ROLE R ON R.role_function_id_fk=F.function_id INNER JOIN MEMBER M ON M.MEMBER_NATION_COUNTRY_ID_FK ='.$res[$i]['COUNTRY_ID'].' WHERE R.role_member_id_fk ='.$memberId);
    mais il m affiche encore n importe quoi lol

  11. #11
    Invité
    Invité(e)
    Par défaut
    Le 1er ON est OK.
    Le 2ème non.

  12. #12
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    merci pour tes precision

    bon j ai tester comme ca mais c est pas bon non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stRole = oci_parse($conn, 'SELECT function_legend from function F INNER JOIN ROLE R ON R.role_function_id_fk=F.function_id AND R.role_member_id_fk ='.$memberId.' INNER JOIN MEMBER M on M.MEMBER_NATION_COUNTRY_ID_FK ='.$res[$i]['COUNTRY_ID']);

    j y suis presque je suis sur

  13. #13
    Invité
    Invité(e)
    Par défaut
    Si tu crois que tu peux y arriver à tâtons, continue...

    Sinon, tu peux TE DOCUMENTER sur l'utilisation correcte de INNER JOIN !


    N.B. Je pourrais t'écrire la requête correcte (ce que j'ai déjà fait dans tes autres discussions !).
    Mais tu ne comprendrais pas, et tu continuerais à poster pour tes futures requêtes.

    La meilleure chose à faire est que tu apprennes et comprennes par toi-même.

  14. #14
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    je pense que j ai ma requete mais le probleme c est que sur la TOAD il me donne bien un mais ici il me les met dans les tous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT distinct function_legend from function F INNER JOIN ROLE R ON R.role_function_id_fk= F.function_id  and ROLE_BODY_ID_FK='.$tmp2.' inner join MEMBER M on  MEMBER_NATION_COUNTRY_ID_FK='.$res[$i]['COUNTRY_ID'].' where ROLE_MEMBER_ID_FK='.$memberId
    donc je pense que la c est un probleme dans ma boucle while

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $countRole = oci_fetch_all($stRole, $resRole, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
     
    						if($countRole>0){
     
    							echo '<td id="123">'.$resRole[0]['FUNCTION_LEGEND'].'</td>';
    						}else{
    							echo '<td></td>';
    						}
     
    						$i++;
    					}
    j ai cela mtn

    Nom : tabgololo.png
Affichages : 76
Taille : 15,1 Ko

    j ai bien les role pour les bonne personnes mais pas encore au bon endroit

    et si je modifie donc mon while comme cela

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
      <?php
     
    				$T=1179;
    				$i=0;
    				$j=0;
     
    				$stid2 = oci_parse($conn, 'SELECT DISTINCT MEMBER_LASTNAME, MEMBER_NATION_COUNTRY_ID_FK, MEMBER_FIRSTNAME, MEMBER_ID FROM MEMBER M INNER JOIN ROLE R ON M.MEMBER_ID = R.ROLE_MEMBER_ID_FK WHERE R.ROLE_BODY_ID_FK='.$tmp2.' ORDER BY MEMBER_LASTNAME');
    				oci_execute($stid2);
    				while (($row = oci_fetch_array($stid2, OCI_BOTH)) != false) {
    				////je prend le nom prenom et id
    					$TmpNom=$row['MEMBER_LASTNAME'];
    					$TmpPrenom=$row['MEMBER_FIRSTNAME'];
    					 $memberId=$row['MEMBER_ID'];
    					 $memberCountry=$row['MEMBER_NATION_COUNTRY_ID_FK'];
     
    					 echo"<tr><th class=row-header>";
    					 echo $TmpNom,' ',$TmpPrenom ;
    					 echo "</th>";
    					 $cpt++;
     
    					$i=0;
    					while ($i < $countCountry){
     
    						$stRole = oci_parse($conn, 'SELECT  function_legend from function F INNER JOIN ROLE R ON R.role_function_id_fk= F.function_id  and R.ROLE_BODY_ID_FK='.$tmp2.'inner join MEMBER M on M.MEMBER_NATION_COUNTRY_ID_FK='.$res[$i]['COUNTRY_ID'].'where R.ROLE_MEMBER_ID_FK='.$memberId);
    						oci_execute($stRole);
     
    						$countRole = oci_fetch_all($stRole, $resRole, 0, -1, OCI_FETCHSTATEMENT_BY_ROW);
     
    						if($memberCountry=$res[$i]['COUNTRY_ID']){
     
    							echo '<td id="123">'.$resRole[0]['FUNCTION_LEGEND'].'</td>';
    						}else{
    							echo '<td></td>';
    						}
     
    						$i++;
    					}
     
     
     
     
    				echo '</tr>';
    				}?>
    ca reste pareil je comprend pas

  15. #15
    Membre confirmé
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Par défaut
    RESOLU !!!

    l erreur de debutant en voulant aller trop vite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($memberCountry=$res[$i]['COUNTRY_ID']){
    affectation et non comparaison lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($memberCountry==$res[$i]['COUNTRY_ID']){
    Merci a toi en tout cas pour tout ton aide on se reverra certainement et j espere que tu pourras m éclairer comme ajd

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

Discussions similaires

  1. probleme dans une requete mysql
    Par mohamed11000 dans le forum Requêtes
    Réponses: 6
    Dernier message: 26/04/2013, 17h34
  2. [Requête] Problème dans une requête analyse croisée
    Par drthodt dans le forum Requêtes et SQL.
    Réponses: 20
    Dernier message: 29/09/2006, 10h27
  3. [XPath] Probleme dans une requete XPath
    Par kalmless21 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 03/07/2006, 22h22
  4. probleme dans une requete de suppression
    Par iam dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/07/2006, 11h11

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