Récupérer le nom/prénom du direct repporteur grace à son id

Résolu
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - 12 mai 2014 à 12:06
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 - 12 mai 2014 à 14:11
Bonjour,
j'ai une table mysql avec : PeopleID ,FirstName ,LastName ,Group ,phone , DirectReport .

et voila mon code:
 <?php
	include('connexion.php');
	
	$Zone_Key = isset($_POST['Key_Hidden'])?$_POST['Key_Hidden']:'';  // !
    // requête SQL qui compte le nombre total d'enregistrement dans la table et qui
    //récupère tous les enregistrements
    $select =  "SELECT  caetbl_people.PeopleID,
						caetbl_people.LastName,
						caetbl_people.FirstName,
						caetbl_people.Group,
						caetbl_people.phone,
						caetbl_people.DirectReport,
						caetbl_groupList.Group_Name
				FROM caetbl_people
				INNER JOIN caetbl_groupList 
				ON caetbl_groupList.GroupID = caetbl_people.Group";			
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
     
    // si on a récupéré un résultat on l'affiche.
    if($total) 
	{
		// debut du tableau
		echo '<table border="1px" bgcolor="#000000" id="MyTabPHP">'."\n";
		// première ligne on affiche les titres 
		echo '<tr>';
		echo '<td bgcolor="#F0FFFF" width="100px"><b>First Name</b></td>';
		echo '<td bgcolor="#F0FFFF" width="105px"><b>Last Name</b></td>';
		echo '<td bgcolor="#F0FFFF" width="45px"><b>Group</b></td>';
		echo '<td bgcolor="#F0FFFF" width="530px"><b>Phone</b></td>';
		echo '<td bgcolor="#F0FFFF" width="175px"><b>Direct Report</b></td>' ;
		echo '<td bgcolor="#F0FFFF" style="display:none"><b></b></td>' ;		
		echo '</tr>'."\n";
		
		// lecture et affichage des résultats 
		while($row = mysql_fetch_array($result)) 
		{
			echo '<tr id="Row_'.$row["PeopleID"].'">';
			echo '<td bgcolor="#FFFFFF" id="IFN_'.$row["PeopleID"].'">'.$row["FirstName"].'</td>';
			echo '<td bgcolor="#FFFFFF" id="ILN_'.$row["PeopleID"].'">'.$row["LastName"].'</td>';
			echo '<td bgcolor="#FFFFFF" id="IG_'.$row["PeopleID"].'">'.$row["Group_Name"].'</td>';
			echo '<td bgcolor="#FFFFFF" id="IP_'.$row["PeopleID"].'">'.$row["phone"].'</td>';
			echo '<td bgcolor="#FFFFFF" id="IDR_'.$row["PeopleID"].'">'.$row["DirectReport"].'</td>';
			echo '<td id="RNW_'.$row["PeopleID"].'">
					<button id="BNW_'.$row["PeopleID"].'" title="Edit Line" type="button" onmouseover="'.$Zone_Key.'.value=this.id;" onclick="Edit_Tab_Up();">
						<img src="media/image/bouton.png">
					</button>
				 </td>';
			echo '</tr>'."\n";
		}
		echo '</table>'."\n";
		// fin du tableau.
    }
    else echo '<lablel id="MyTabPHP">No data in this table...</lable>';
     
    // on libère le résultat
    mysql_free_result($result);    
    ?>

Comment je pourrait faire pour faire apparaitre le nom/prénom du direct repporteur a la place de sont ID merci.

2 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
Modifié par jordane45 le 12/05/2014 à 14:14
Ta question concerne la requête.. donc du SQL ...
Hors tu postes dans PHP ...

Merci d'y être vigilant à l'avenir...


Pour ce qui est de la réponse..il te faut ajouter une jointure supplémentaire.

Un truc du genre :

SELECT  P1.PeopleID
     ,P1.LastName
     ,P1.FirstName
     ,P1.Group
     ,P1.phone
     ,P1.DirectReport
     ,caetbl_groupList.Group_Name
            ,p2.LastName as  DirectReportLastName
            ,p2.FirstName as  DirectReportFirstName
            ,CONCAT(p2.LastName , ' ' , p2.FirstName) as DirectReportConcatName

FROM caetbl_people P1
INNER JOIN caetbl_groupList 
 ON caetbl_groupList.GroupID = p1.Group
INNER JOIN caetbl_people p2 
       ON p2.PeopleID = p1.DirectReport



PS: J'ai ajouté les balises de code dans ton message...
Merci de le faire toi même la prochaine fois.

PS2 : Comme tu peux le constater j'utilise des "alias" pour le nom des tables et/ou des champs... cela facilite l'écriture des requêtes....Essayes d'en faire autant à l'avenir.


Edit : Modification dans la jointure...
Correction sur le "ON"

Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
1
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
12 mai 2014 à 14:11
merci
0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
12 mai 2014 à 12:20
Bonjour,
nom/prénom du direct repporteur

Je ne comprend pas... Tu as déjà les noms/prénoms dans ta page..

Je ne vois pas où est le souci..

A moins qu'il nous manque des informations...
L'idéal serait de nous fournir la structure de tes tables
SHOW create  table <nom_de_la_table>

avec quelques données de test...




0
EnguerrandP Messages postés 295 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 15 juillet 2015 1
Modifié par jordane45 le 12/05/2014 à 13:58
Voila la structure:

caetbl_people  CREATE TABLE 'caetbl_people' (
 'PeopleID' int(11) NOT NULL AUTO_INCREMENT,
 'FirstName' varchar(15) DEFAULT NULL,
 'LastName' varchar(15) DEFAULT NULL,
 'Group' int(11) DEFAULT NULL,
 'phone' varchar(25) DEFAULT NULL,
 'DirectReport' int(11) DEFAULT NULL,
 PRIMARY KEY ('PeopleID'),
 UNIQUE KEY 'PeopleID' ('PeopleID')
) ENGINE=InnoDB AUTO_INCREMENT=202 DEFAULT CHARSET=latin1

Mon problème est que le direct repport est un nombre qui correspond a un PeopleID.
Est que pour mon problème toute les information sont dans la même table mes pas au même ligne.


Edit : Ajout des balises de code... Merci d'y penser à l'avenir !
0
Rejoignez-nous