Rechercher : dans
Par :

Consulter tuple specifique au user php/sql

Dernière réponse le 15 mai 2009 à 19:47:32 FLEUR_LYS, le 12 mai 2009 à 16:44:54 
 Signaler ce message aux modérateurs

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
Configuration: Windows Vista
Firefox 3.0.10

Meilleures réponses pour « consulter tuple specifique au user php/sql » dans :
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

NookZ, le 12 mai 2009 à 17:08:35

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'";

Répondre à NookZ

2

FLEUR_LYS, le 12 mai 2009 à 17:54:02

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="http://www.adobe.com/go/getflashplayer"><img src="http://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>

Répondre à FLEUR_LYS

3

pyschopathe, le 12 mai 2009 à 20:00:06

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.

Répondre à pyschopathe

4

FLEUR_LYS, le 12 mai 2009 à 22:36:24

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)

Répondre à FLEUR_LYS

5

pyschopathe, le 13 mai 2009 à 10:05:20

Tu n'as pas oublié le session_start() au début du script ?

Répondre à pyschopathe

6

FLEUR_LYS, le 13 mai 2009 à 17:25:03

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>";
}
?>

Répondre à FLEUR_LYS

7

pyschopathe, le 13 mai 2009 à 21:04:14

Remplace

if ( !$result ) {
   echo "Lecture impossible";
}
par
if ( !$result ) {
   echo 'Lecture impossible<br />';
   echo mysql_error();
}
Et recopie l'erreur ici.

Répondre à pyschopathe

8

FLEUR_LYS, le 13 mai 2009 à 21:47:59

Salut
voici l'erreur:

Lecture impossible
Champ 'login' inconnu dans where clause

Répondre à FLEUR_LYS

9

pyschopathe, le 14 mai 2009 à 09:41:44

Ca veut dire que tu n'as pas de champ 'login' dans ta table...

Répondre à pyschopathe

10

FLEUR_LYS, le 14 mai 2009 à 15:23:36

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

Répondre à FLEUR_LYS

11

pyschopathe, le 14 mai 2009 à 15:52:32

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 ?

Répondre à pyschopathe

12

FLEUR_LYS, le 14 mai 2009 à 15:55:41

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 ?

Répondre à FLEUR_LYS

13

pyschopathe, le 14 mai 2009 à 16:27:54

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'];

Répondre à pyschopathe

14

FLEUR_LYS, le 14 mai 2009 à 17:13:33

Merci j'essaye ce soir et je vous tiendrais au courant merci beaucoup

Répondre à FLEUR_LYS

15

FLEUR_LYS, le 14 mai 2009 à 19:36:43

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>";
}
?>

Répondre à FLEUR_LYS

16

pyschopathe, le 14 mai 2009 à 20:16:06
  • +1

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

Répondre à pyschopathe

17

FLEUR_LYS, le 14 mai 2009 à 20:56:10

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

Répondre à FLEUR_LYS

18

pyschopathe, le 14 mai 2009 à 22:50:13

Scuz, tu récupères le login dans la session, remplace $_POST['login'] par $_SESSION['login'].

Répondre à pyschopathe

19

FLEUR_LYS, le 14 mai 2009 à 23:16:14

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.

Répondre à FLEUR_LYS

20

pyschopathe, le 15 mai 2009 à 00:34:02
  • +1

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.

Répondre à pyschopathe

21

FLEUR_LYS, le 15 mai 2009 à 01:01:32

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 ?

Répondre à FLEUR_LYS

22

pyschopathe, le 15 mai 2009 à 01:23:32
  • +1

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).

Répondre à pyschopathe

23

FLEUR_LYS, le 15 mai 2009 à 01:50:39

Ah d'accord je vais essayer et demain matin je vous tiens au courant
Merci beaucoup et bonne nuit
A demain

Répondre à FLEUR_LYS

24

FLEUR_LYS, le 15 mai 2009 à 19:23:38

Salut
je reviens vous remercier pour votre aide , ca a marcher.
Merci beaucoup et bonne soirée

Répondre à FLEUR_LYS

25

 pyschopathe, le 15 mai 2009 à 19:47:32

De rien, c'est un plaisir !

Répondre à pyschopathe