Consulter tuple specifique au user php/sql [Résolu/Fermé]

Signaler
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
-
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
-
Bonjour,
je réalise mon projet en php et j'ai le cas ou un employé rempli son formulaire de demande de congé, après le chef va soit l'accepter soit la refusé donc ma question est comment faire pour que l'employé puisse voir la table des formulaireConge et voir juste ces formulaire a lui a son nom (pas le reste)
dans mon application j'ai l'authentification au début
quelqu'un peut m'aider svp c'est vraiment important
voila le code de consultation mais il m'affiche tous les enregistrements:
<?php
include("connex.inc.php");
$idcom=connex("basebank","myparam");
$requete="SELECT * FROM formulaireconge";
$result=@mysql_query($requete,$idcom);
if(!$result)
{
	echo "Lecture impossible";
}
else
{
	$nbcol=mysql_num_fields($result);
	$nbcand=mysql_num_rows($result);
	
	echo "<h5> Il y a $nbcand demande(s) de congé </h5> <br> ";
		
	echo "<table border=\"1\">";
	
	echo "<th>Matricule</th> <th>Nom</th> <th>Prénom</th> <th>Direction</th> <th>Affectation</th> <th>Service</th> <th>Adresse durant le congé</th> <th>Téléphone</th> <th>Nombre de jours demandés: Ouvrables</th> <th>Date de départ</th> <th>Date de retour</th> <th>Signature de l'employé</th> <th>E-mail</th> <th>Inputter</th> <th>Authorizer</th> <th>Observation</th> <th>Signature</th> <th>Droit au congé au 21/12/2009</th> <th>Nombre de jours accordé </th> <th>Nombre de jours ouvrables</th> <th>La Direction Administrative</th> <th>Le Vice Président</th> <th>Titre de congé établi et</th> <th>Sous référence: DA/BK/BD/N°</th>";
	while($ligne=mysql_fetch_array($result,MYSQL_NUM))
	{
    echo "<tr>";
    foreach($ligne as $valeur)
	  {
      echo "<td> $valeur </td>";
		}
		echo "</tr>";
	}
	echo "</table>";
}
?>

merci pour votre aide et bonne soirée

15 réponses

Messages postés
2140
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
479
Bonjour,

Dans formulaire conge il doit y avoir un identifiant de l'employé (je le nomme ici id_employe).
Récupére l'identifiant de l'employé connecté (je le nommerai ici id_user) et fais
$requete="SELECT * FROM formulaireconge where id_employe='$id_user'";
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
salut
le tableau s'affiche mais vide alors que j'ai une demande au nom de ce login voila l'erreur que j'ai
Notice: Undefined variable: login in C:\Program Files\EasyPHP 3.0\www\PFE\site_flash\consul.php on line 86
(en gras la ligne 86 et merci pour votre aide)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Page d'accueil employé</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="layout.css" rel="stylesheet" type="text/css" />
<script src="Scripts/swfobject_modified.js" type="text/javascript"></script>
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css" />
</head>
<body id="page2">
<!-- header -->
<div class="header_tal">
  <object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="766" height="396">
    <param name="movie" value="images/header.swf" />
    <param name="quality" value="high" />
    <param name="wmode" value="opaque" />
    <param name="swfversion" value="8.0.35.0" />
    <!-- Cette balise <param> invite les utilisateurs de Flash Player en version 6.0 r65 et ultérieure à télécharger la version la plus récente de Flash Player. Supprimez-la si vous ne voulez pas que cette invite soit visible. -->
    <param name="expressinstall" value="Scripts/expressInstall.swf" />
    <!-- La balise <object> suivante est destinée aux navigateurs autres qu'IE. Supprimez-la d'IE à l'aide d'IECC. -->
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="images/header.swf" width="766" height="396">
      <!--<![endif]-->
      <param name="quality" value="high" />
      <param name="wmode" value="opaque" />
      <param name="swfversion" value="8.0.35.0" />
      <param name="expressinstall" value="Scripts/expressInstall.swf" />
      <!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
      <div>
        <h4>Le contenu de cette page nécessite une version plus récente d’Adobe Flash Player.</h4>
        <p><a href="https://get.adobe.com/flashplayer/"><img src="https://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtenir le lecteur Adobe Flash" width="112" height="33" /></a></p>
      </div>
      <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
  </object>
</div>
<!-- content -->
<div class="content_tal">
	<div id="content" class="separate">
		<div class="separate1">
			<div class="cont_height">&nbsp;</div>
			<div class="col_1 green">
				<div class="title_green">
				  <p><img alt="" src="images/2title1.gif" /></p>
				  <p>&nbsp;</p>
				  <p>&nbsp;</p>
				  <p>&nbsp;</p>
			  </div>
				<div class="indent">
				  <ul id="MenuBar1" class="MenuBarVertical">
                    <li><a href="mailto:nomCorrespondant@nomDomaine.fr">Acc&eacute;der &agrave; la boite e-mail</a></li>
                    <li><a class="MenuBarItemSubmenu" href="#">Remplir un formulaire</a>
                      <ul>
                        <li><a href="form-conge-employe.php">Demande de cong&eacute;</a></li>
                        <li><a href="form-sortie-employe.php">Demande d'autorisation de sortie</a></li>
                      </ul>
                    </li>
<li><a href="#" class="MenuBarItemSubmenu">Aide</a>
      <ul>
                        <li><a href="doc-employe.php">Documentation</a></li>
                        <li><a href="apropos-employe.php">A propos</a></li>
                      </ul>
                    </li>
				  </ul>
<p>&nbsp;</p>
				  <p><br clear="all"  />
			      </p>
				  <div class="indent_text"><br clear="all"  />
					</div>
				</div>
			</div>
			<div class="col_2 blue">
				<div class="title_blue"><img alt="" src="images/2title2.gif" /></div>
				<div class="indent">
				  <p>&nbsp;</p>
				  <p><strong>Application employé :</strong></p>
<p>&nbsp;</p>

<?php
include("connex.inc.php");
$idcom=connex("basebank","myparam");
$requete="SELECT * FROM formulaireconge where matricule='$login'";
$result=@mysql_query($requete,$idcom);
if(!$result)
{
	echo "Lecture impossible";
}
else
{
	$nbcol=mysql_num_fields($result);
	$nbcand=mysql_num_rows($result);
	
	echo "<h5> Il y a $nbcand demande(s) de congé </h5> <br> ";
		
	echo "<table border=\"1\">";
	
	echo "<th>Matricule</th> <th>Nom</th> <th>Prénom</th> <th>Direction</th> <th>Affectation</th> <th>Service</th> <th>Adresse durant le congé</th> <th>Téléphone</th> <th>Nombre de jours demandés: Ouvrables</th> <th>Date de départ</th> <th>Date de retour</th> <th>Signature de l'employé</th> <th>E-mail</th> <th>Inputter</th> <th>Authorizer</th> <th>Observation</th> <th>Signature</th> <th>Droit au congé au 21/12/2009</th> <th>Nombre de jours accordé </th> <th>Nombre de jours ouvrables</th> <th>La Direction Administrative</th> <th>Le Vice Président</th> <th>Titre de congé établi et</th> <th>Sous référence: DA/BK/BD/N°</th>";
	while($ligne=mysql_fetch_array($result,MYSQL_NUM))
	{
    echo "<tr>";
    foreach($ligne as $valeur)
	  {
      echo "<td> $valeur </td>";
		}
		echo "</tr>";
	}
	echo "</table>";
}
?>

                  <p>&nbsp;</p>
				</div>
			</div>
			<div class="clear"></div>
		</div>
	</div>
</div>
<!-- footer -->
<div id="footer"><span><a href="http://www.bestbank.com.tn">BestBank.com.tn</a> &copy; 2009 </span> All Rights Reserved</div>
<script type="text/javascript">
<!--
swfobject.registerObject("FlashID");
var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
//-->
</script>
</body>
</html>
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Tu modifies ta requête de la sorte :
$requete="SELECT * FROM formulaireconge WHERE login='".$_SESSION['login']."';";
Où quelque chose dans ce genre là en fonction de la structure de tes données.
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
salut
j'ai cette erreur:
Notice: Undefined variable: _SESSION in C:\Program Files\EasyPHP 3.0\www\PFE\site_flash\consul.php on line 85
Lecture impossible


et la ligne 85 c'est la ligne de la requête (je l'ai copier telle qu'elle est vue que moi j'ai login aussi)
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Tu n'as pas oublié le session_start() au début du script ?
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
salut
je l'ai mise mais j'ai maintenant Lecture impossible
voila le code:
<?php
include("connex.inc.php");
$idcom=connex("basebank","myparam");
$requete="SELECT * FROM formulaireconge WHERE login='".$_SESSION['login']."';";
$result=@mysql_query($requete,$idcom);
if(!$result)
{
	echo "Lecture impossible";
}
else
{
	$nbcol=mysql_num_fields($result);
	$nbcand=mysql_num_rows($result);
	
	echo "<h5> Il y a $nbcand demande(s) de congé </h5> <br> ";
		
	echo "<table border=\"1\">";
	
	echo "<th>Matricule</th> <th>Nom</th> <th>Prénom</th> <th>Direction</th> <th>Affectation</th> <th>Service</th> <th>Adresse durant le congé</th> <th>Téléphone</th> <th>Nombre de jours demandés: Ouvrables</th> <th>Date de départ</th> <th>Date de retour</th> <th>Signature de l'employé</th> <th>E-mail</th> <th>Inputter</th> <th>Authorizer</th> <th>Observation</th> <th>Signature</th> <th>Droit au congé au 21/12/2009</th> <th>Nombre de jours accordé </th> <th>Nombre de jours ouvrables</th> <th>La Direction Administrative</th> <th>Le Vice Président</th> <th>Titre de congé établi et</th> <th>Sous référence: DA/BK/BD/N°</th>";
	while($ligne=mysql_fetch_array($result,MYSQL_NUM))
	{
    echo "<tr>";
    foreach($ligne as $valeur)
	  {
      echo "<td> $valeur </td>";
		}
		echo "</tr>";
	}
	echo "</table>";
}
?>
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Remplace
if ( !$result ) {
   echo "Lecture impossible";
}
par
if ( !$result ) {
   echo 'Lecture impossible<br />';
   echo mysql_error();
}
Et recopie l'erreur ici.
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
salut
voici l'erreur:

Lecture impossible
Champ 'login' inconnu dans where clause
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Ca veut dire que tu n'as pas de champ 'login' dans ta table...
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
dans ma table forulaireconge j'ai
matricule nom prenom direction affectation service adressedurantleconge telephone nbjourouvrable datedepart dateretour signatureemploye mail inputter authorizer observation signature droitconge nbjaccorde nbjouvrable directionadministrative vicepresident titredeconge sousreference etatdemande

et dans ma table user (qui permet l'authentification):
login nom prenom telephone mail motdepasse grade

normalement d'apres vos conseils j'ai compris que je dois avoir un champ en commun et la j'ai pas le login comme vous dite, est ce que c'est faisable seulement sur le nom par exemple ?
Merci beaucoup pour votre aide
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Dans un cas comme celui-ci, la table utilisateur devrait contenir un identifiant unique qui se retrouve dans la table congé. De plus, cela permettrait d'éviter de répéter dans la table de congés les informations concernant l'utilisateur (nom, prenom, telephone, mail).

Le matricule qu'on trouve dans la table congé sert à quoi ?
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
c'est un matricule (numéro) pour chaque employé et d'ailleurs il est unique pour chacun (comme id)
je pense la solution et d'ajouter la matricule dans la table user non ?
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Exactement ! Et puis tu pourras enlever les nom, prenom, telephone, mail de la table congés.

Ta requête deviendra quelque chose comme
SELECT <les champs que tu veux> 
FROM <table utilsateur> u JOIN <table congés> c ON u.matricule=c.matricule 
WHERE u.login=$_POST['login'];
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
merci j'essaye ce soir et je vous tiendrais au courant merci beaucoup
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
salut
bon j'ai pas supprimer le nom, prénom, car je veux que ca reste 'jespère que ca cause pas de conflit
j'ai réaliser votre requête mais ca renvoie une erreur
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\Program Files\EasyPHP 3.0\www\PFE\site_flash\consul.php on line 85

code

<?php
include("connex.inc.php");
$idcom=connex("basebank","myparam");
$requete="SELECT * FROM user u JOIN formulaireconge c ON u.matricule=c.matricule WHERE u.login=$_POST['login']";
$result=@mysql_query($requete,$idcom);
if ( !$result ) {
   echo 'Lecture impossible<br />';
   echo mysql_error();
}
else
{
	$nbcol=mysql_num_fields($result);
	$nbcand=mysql_num_rows($result);
	
	echo "<h5> Il y a $nbcand demande(s) de congé </h5> <br> ";
		
	echo "<table border=\"1\">";
	
	echo "<th>Matricule</th> <th>Nom</th> <th>Prénom</th> <th>Direction</th> <th>Affectation</th> <th>Service</th> <th>Adresse durant le congé</th> <th>Téléphone</th> <th>Nombre de jours demandés: Ouvrables</th> <th>Date de départ</th> <th>Date de retour</th> <th>Signature de l'employé</th> <th>E-mail</th> <th>Inputter</th> <th>Authorizer</th> <th>Observation</th> <th>Signature</th> <th>Droit au congé au 21/12/2009</th> <th>Nombre de jours accordé </th> <th>Nombre de jours ouvrables</th> <th>La Direction Administrative</th> <th>Le Vice Président</th> <th>Titre de congé établi et</th> <th>Sous référence: DA/BK/BD/N°</th>";
	while($ligne=mysql_fetch_array($result,MYSQL_NUM))
	{
    echo "<tr>";
    foreach($ligne as $valeur)
	  {
      echo "<td> $valeur </td>";
		}
		echo "</tr>";
	}
	echo "</table>";
}
?>
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
$requete="SELECT * FROM user u JOIN formulaireconge c ON u.matricule=c.matricule WHERE u.login='".$_POST['login']."'";
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
salut
j'ai changer la requête , j'ai eu l'affichage de la table maisvide (ne contenant pas la demande) avec cette erreur
Notice: Undefined index: login in C:\Program Files\EasyPHP 3.0\www\PFE\site_flash\consul.php on line 85
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Scuz, tu récupères le login dans la session, remplace $_POST['login'] par $_SESSION['login'].
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
ca m'affiche maintenant la liste des congés de l'utilisateur concerné mais mais j'ai un probleme c'est que le formulaire quand je l'affiche les valeurs des champs par exemple le matricule contient le login et la signature contient un champ qui lui correspond pas ,....
est ce qu'il faut que la table user et la table formulaire congé ont le meme ordre des champs ?
et meme si j'enleve les champs nom, prenom ,.... de la table user je vais laisser le champ mot de passe et la il sera afficher quand l'utilisateur consulte ses propres demandes.
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Dans la requête que je te donnais, il y avait un petit <les champs que tu veux> ou quelque chose du genre... À la place, tu es sensé(e ?) mettre les champs que tu veux récupérer, en les préfixant par le nom de la table (ou u et c pour user et congé puisque tu les définis comme alias dans le FROM). Donc tu mets u.nom, u.prenom, ... et tu ne sélectionne pas le mot de passe, ni les autres champs qui ne t'intéressent pas.
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
oui vous m'avez donner cette requete
SELECT <les champs que tu veux>
FROM <table utilsateur> u JOIN <table congés> c ON u.matricule=c.matricule
WHERE u.login=$_POST['login'];


et moi j'ai réaliser celle la en voulant afficher tous les champs de la table formulaireconge quand matricule de la table formulaireconge est égale au matricule de la table user et biensure le login est bon

$requete="SELECT * FROM user u JOIN formulaireconge c ON u.matricule=c.matricule WHERE u.login='".$_SESSION['login']."'";

c'est faux ?
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
Ce n'est pas faux, c'est imprécis et sous-optimal, à la place du '*' mets uniquement les champs dont tu as besoin en toutes lettres, en les préfixant par la table dans laquelle ils se trouvent (ex : u.login).
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
ah d'accord je vais essayer et demain matin je vous tiens au courant
Merci beaucoup et bonne nuit
A demain
Messages postés
69
Date d'inscription
vendredi 8 mai 2009
Statut
Membre
Dernière intervention
19 juin 2009
12
salut
je reviens vous remercier pour votre aide , ca a marcher.
Merci beaucoup et bonne soirée
Messages postés
1965
Date d'inscription
dimanche 2 mars 2008
Statut
Membre
Dernière intervention
22 mars 2010
120
De rien, c'est un plaisir !