Page 1 sur 2
besoin de conseil sur login et liste
Posté : 11 avr. 2008, 10:25
par Cypher_PHP
bonjour
je viens vous demander vos conseils.
j'explique:
un responsable va se logguer et verra la liste de ses agents dans son établissement. pour info, un agent peut se logguer mais il n'aura pas la liste affichée comme celle du responsable
je pense que cela va ressembler ci-dessous :
si login == (fonction_responsable)
alors afficher la liste des agents
sinon pas d'affichage
merci beaucoup de vos réponses
Posté : 11 avr. 2008, 10:31
par AB
Oui, tu voyais un piège quelque part ?
Posté : 11 avr. 2008, 10:38
par Cypher_PHP
la liste est affichée mais avec toutes les fonctions. je voudrais seulement la faire afficher en fonction " chef"
comment faire?
Voici mon code php:(désolé pour ce long code)
<?php
$dbhost="****";
$dblogin="***";
$dbpass="***";
$dbbase="***";
$dbtable1="****";
$dbtable2="***";
//connexion au serveur de la base
mysql_connect($dbhost, $dblogin, $dbpass)
or die("erreur de connexion au serveur $dbhost");
//connexion à la base de données
mysql_select_db($dbbase) or die("erreur de connexion a la base de donnees");
// Creation et envoi de la requete
$query1 = "SELECT table1.nom AS nom_agent, table2.nom AS nom_etab, prenom, login_ldap, table1.tel AS tel_agent, etab, fonct, table1.mail AS mail_agent, table1.adresse AS adresse_agent, table1.ville AS ville_agent, table1.cp AS cp_agent, type_acces, id_type_client, os, av, date_prev,table1.date_dem AS dem, table2.ville AS ville_etab FROM $dbtable1 AS table1, $dbtable2 AS table2 WHERE table1.etab = table2.rne ORDER BY table1.nom ";
$result1 = mysql_query($query1)or die(mysql_error());
// LISTE DES AGENTS selon login du chef
//$total1 = mysql_num_rows($result1);
mysql_num_rows($result1);
// login du chef
//$login_ldap = $_POST['login_ldap'];
$fonct = 'chef etablissement';
if (isset($fonct)){
// début du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres dans plusieurs colonnes
echo '<tr><td colspan="6">Liste des demandeurs API : </td></tr>';
echo '<tr><td bgcolor="#669999"><u>Nom de l\'agent</u></td>';
echo '<td bgcolor="#669999"><u>Prénom</u></td>';
echo '<td bgcolor="#669999"><u>Login</u></td>';
echo '<td bgcolor="#669999"><u>Tel</u></td>';
echo '<td bgcolor="#669999"><u>Etablissement RNE</u></td>';
echo '<td bgcolor="#669999"><u>Fonction</u></td>';
echo '<td bgcolor="#669999"><u>Email</u></td>';
echo '<td bgcolor="#669999"><u>Résidence principale</u></td>';
echo '<td bgcolor="#669999"><u>Code postal</u></td>';
echo '<td bgcolor="#669999"><u>Ville</u></td>';
echo '<td bgcolor="#669999"><u>Type d\'utilisation</u></td>';
echo '<td bgcolor="#669999"><u>Type de machine</u></td>';
echo '<td bgcolor="#669999"><u>Système d\'exploitation</u></td>';
echo '<td bgcolor="#669999"><u>Anti-virus</u></td>';
echo '<td bgcolor="#669999"><u>Typer d\'accès</u></td>';
echo '<td bgcolor="#669999"><u>Date prévisionnelle d\'installation</u></td>';
echo '<td bgcolor="#669999"><u>Date de la demande</u></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result1)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row['nom_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['prenom'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['login_ldap'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['tel_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['etab'].' - '.$row['nom_etab'].' - '.$row['ville_etab'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['fonct'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['mail_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['adresse_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['cp_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['ville_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['etab'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['id_type_client'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['os'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['av'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['type_acces'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['date_prev'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['dem'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'affichage';
// on libère le résultat
mysql_free_result($result1);
?>
Posté : 11 avr. 2008, 17:38
par steph29
euh... tu teste ou que la fonction de l'utilsateur loggué est un chef d'etablissement?
$fonct = 'chef etablissement';
if (isset($fonct)){
car la dans tout les cas la page est en tant que chef d'etablissement....
donc logique que la liste s'affiche...
else echo 'Pas d\'affichage';
impossible de passer dans ce cas la
donc reprend le schema de depart et applique le
si (la_fonction_de_mon_user_loggué=='chef d'etablissement') alors {
1 - je fais ma requete de recherche (inutile pour un utilisateur lambda)
2- j'affiche mon tableau
}
sinon{
j'affiche rien
}
Posté : 14 avr. 2008, 12:29
par Cypher_PHP
bonjour
j'ai crée la requête $requetchef mais je pense que ce n'est la bonne requête car cette requête affiche seulement le tableau en fonction de la fonction "chef d'établissement' et non de toutes les fonctions d'agents.
ce que je veux est d'afficher tous les agents dans un tableau en fonction du login de leur chef.
je ne vois pas trop comment faire cela.
Voici le code PHP:
<?php
//$login_ldap = $_POST['login_ldap'];
$fonct = 'chef etablissement';
if (isset($fonct)){
// requete pour la fonction 'chef d'établissment"
$reqchef = "SELECT table1.nom AS nom_agent, table2.nom AS nom_etab, prenom, login_ldap, table1.tel AS tel_agent, etab, fonct, table1.mail AS mail_agent, table1.adresse AS adresse_agent, table1.ville AS ville_agent, table1.cp AS cp_agent, type_acces, id_type_client, os, av, date_prev,table1.date_dem AS dem, table2.ville AS ville_etab FROM $dbtable1 AS table1, $dbtable2 AS table2 WHERE fonct ='chef etablissement' ORDER BY table1.nom AND table1.etab = table2.rne";
$resultchef = mysql_query($reqchef)or die(mysql_error());
// LISTE DES AGENTS selon login du chef
mysql_num_rows($resultchef);
// début du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres dans plusieurs colonnes
echo '<tr><td colspan="6">Liste des demandeurs API : </td></tr>';
echo '<tr><td bgcolor="#669999"><u>Nom de l\'agent</u></td>';
......
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($resultchef)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC" ><font size="1">'.$row['nom_agent'].'</font></td>';
....
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'affichage';
// on libère le résultat
mysql_free_result($resultchef);
?>
Posté : 14 avr. 2008, 12:42
par steph29
je crois que plus ca va moins c'est clair...
on va reprendre depuis le debut...
quel est le but du script?
utilise tu une authentification sur tes pages?
quelle est la structure de tes tables?
bref, remet noir sur blanc ce que tu veux faire. Le code en decouleras tout seul.
si ce n'est pas clair pour toi ca le ne seras pas pour nous.
Posté : 14 avr. 2008, 15:11
par Cypher_PHP
steph29
d'abord, je tiens à te remercier
puis, je vais essayer de vous expliquer clairement
sur la page, il y a un formulaire de login:
- un chef d'etablissement se loggue, il verra la liste de ses agents.
- un agent va remplir un formulaire de demande d'une clé
Actuellement, je crée une page pour le chef.
le but du script est de permettre de créer une liste d'agents ayant fait la demande d'une clé sous forme d'un tableau qui renseigne sur ces agents.
oui, il y a une authentification crée initialement sur la première page de login.
deux tables ont le mm nom c'est pourquoi j'ai ajouté suivant:
table1.nom AS nom_agent, table2.nom AS nom_etab
n'hesitez pas à me poser des questions et merci
Posté : 15 avr. 2008, 11:38
par steph29
donc je verrais plus un truc du genre (histoire de faire un peu de securite)
si (mon_user_loggue est un chef d'etablissement){
je recherche dans ma base tous les agents de mon user loggué
si j'ai un resultat {
j'affiche mon tableau
}
}
sinon pas d'affichage
la il manque la structure de tes tables pour pouvoir t'aider a optimiser ta requete...
et comment est gérér ton authentification? (ldap?)
Posté : 15 avr. 2008, 13:14
par Cypher_PHP
j'ai malheureusement pas la structure des 2 tables. faudrait que je demande à mon chef?
c'est si indipensable de les avoir?
oui, l'authentification est géré par un annuaire LDAP
Posté : 15 avr. 2008, 14:19
par steph29
c'est juste pour t'aider dans ta requete... il faut bien une relation entres les agents et le login du chef d'etablissement...
la je vais pas l'inventer...

et toi non plus a priori...
Posté : 15 avr. 2008, 14:38
par Cypher_PHP
voici les structures:
Code : Tout sélectionner
CREATE TABLE `api` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(30) NOT NULL default '',
`prenom` varchar(50) NOT NULL default '',
`login_ldap` varchar(50) NOT NULL default '',
`tel` varchar(30) NOT NULL default '',
`mail` varchar(50) NOT NULL default '',
`adresse` varchar(50) NOT NULL default '',
`cp` varchar(7) NOT NULL default '',
`ville` varchar(100) NOT NULL default '',
`etab` varchar(8) NOT NULL default 'Rectorat',
`fonct` varchar(50) NOT NULL default '',
`type_acces` enum('ADSL 2Mo','ADSL 512Ko','RNIS','RTC','Transpac','ADSL illimité') NOT NULL default 'ADSL 2Mo',
`date_prev` date NOT NULL default '2005-01-01',
`date_dem` date NOT NULL default '2005-01-01',
`id_type_client` int(11) NOT NULL default '0',
`equip` varchar(25) NOT NULL default 'PC Bureau Professionnel',
`os` varchar(11) NOT NULL default 'WinXP Pro',
`av` varchar(50) NOT NULL default '',
`osr` varchar(30) NOT NULL default '0',
`comm` varchar(200) NOT NULL default '',
`etat` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `login_ldap` (`login_ldap`)
)
Code : Tout sélectionner
CREATE TABLE `etab` (
`id` int(11) NOT NULL auto_increment,
`rne` varchar(8) NOT NULL default '',
`type` varchar(10) NOT NULL default '',
`sec` varchar(10) NOT NULL default '',
`lib` varchar(50) NOT NULL default '',
`nom` varchar(50) NOT NULL default '',
`adresse` varchar(60) NOT NULL default '',
`cp` varchar(5) NOT NULL default '',
`ville` varchar(30) NOT NULL default '',
`tel` varchar(30) NOT NULL default '',
`fax` varchar(30) NOT NULL default '',
`mail` varchar(50) NOT NULL default '',
`date_dem` date NOT NULL default '0000-00-00',
`ddmaj` date NOT NULL default '0000-00-00',
`osr` varchar(50) NOT NULL default '',
`ce` varchar(60) NOT NULL default '',
`comm` varchar(210) NOT NULL default '',
`etat` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `rne` (`rne`)
)
Posté : 15 avr. 2008, 14:56
par steph29
mouais je suppose que la jointure entre les deux tables est etab.rne=api.nom :S
on fait des jointure sur les id en general... [ex: etab.id=api.id_etab]
et il n'y a pas de champ dans la table etab pour designé le chef d'etablissement (un id api...)?
sinon on peut essayer de faire un truc du genre non testé et un peu trop capillotracté a mon gout:
$requete="SELECT
table_agent.nom,
table_agent.prenom,
table_agent.logion_ldap,
etc.
FROM etab
INNER JOIN api AS table_resp ON (etab.rne=table_resp.nom)
LEFT JOIN api AS table_agent ON (etab.rne=table_agent.nom AND table_agent.fonct!='chef etablissement')
WHERE table_resp.login_ldap='".$login_ldap."' AND table_resp.fonct='chef etablissement'
";
Posté : 15 avr. 2008, 15:22
par Cypher_PHP
non, il n'y a pas d'id qui relie les deux tables . par contre, le champ "rne" de la table ETAB et le champ "etab" de la table API ont les mêmes données.
les renseignements sur les agents et chefs sont stockés dans la table API et ceux des établissements dans la table ETAB
je vais maintenant tester ta proposition...
Posté : 15 avr. 2008, 15:47
par geqr
bonjour,
il faut que tu récupère l'id de la personne qui se loggue, récupérer selon son id : sa fonction dans l'établissement puis tester si cette fonction == 'chef'. Et ensuite dans ce cas, tu affiche le tableau.
<?php
$rqt_fonction ="select fonct from api where id = '$id_recupéré';"
$res_fonction = mysql_query($rqt_fonction);
if (mysql_result($res_fonction,0)=='chef etablissement'){
// début du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres dans plusieurs colonnes
echo '<tr><td colspan="6">Liste des demandeurs API : </td></tr>';
echo '<tr><td bgcolor="#669999"><u>Nom de l\'agent</u></td>';
echo '<td bgcolor="#669999"><u>Prénom</u></td>';
echo '<td bgcolor="#669999"><u>Login</u></td>';
echo '<td bgcolor="#669999"><u>Tel</u></td>';
echo '<td bgcolor="#669999"><u>Etablissement RNE</u></td>';
echo '<td bgcolor="#669999"><u>Fonction</u></td>';
echo '<td bgcolor="#669999"><u>Email</u></td>';
echo '<td bgcolor="#669999"><u>Résidence principale</u></td>';
echo '<td bgcolor="#669999"><u>Code postal</u></td>';
echo '<td bgcolor="#669999"><u>Ville</u></td>';
echo '<td bgcolor="#669999"><u>Type d\'utilisation</u></td>';
echo '<td bgcolor="#669999"><u>Type de machine</u></td>';
echo '<td bgcolor="#669999"><u>Système d\'exploitation</u></td>';
echo '<td bgcolor="#669999"><u>Anti-virus</u></td>';
echo '<td bgcolor="#669999"><u>Typer d\'accès</u></td>';
echo '<td bgcolor="#669999"><u>Date prévisionnelle d\'installation</u></td>';
echo '<td bgcolor="#669999"><u>Date de la demande</u></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($result1)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row['nom_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['prenom'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['login_ldap'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['tel_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['etab'].' - '.$row['nom_etab'].' - '.$row['ville_etab'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['fonct'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['mail_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['adresse_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['cp_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['ville_agent'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['etab'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['id_type_client'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['os'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['av'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['type_acces'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['date_prev'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['dem'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Pas d\'affichage';
// on libère le résultat
mysql_free_result($result1);
?>
c'est vite fait et à tester mais ca doit ressembler à ca.
Posté : 15 avr. 2008, 16:16
par Cypher_PHP
on est presque arrivé...
étant donné que je suis chef (je me suis amusé à être chef

), après être loggué, le résulat est que je ne suis pas autorisé.
alors que c'est plutôt le contraire...
<?php
$rqt_fonction ="select fonct from api where id = '$id_recupéré'";
$res_fonction = mysql_query($rqt_fonction)or die(mysql_error());
// login du chef
if (mysql_result($res_fonction,0)=='chef etablissement'){
// début du tableau
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche les titres dans plusieurs colonnes
echo '<tr><td colspan="6">Liste des demandeurs API : </td></tr>';
echo '<tr><td bgcolor="#669999"><u>Nom de l\'agent</u></td>';
echo '<td bgcolor="#669999"><u>Prénom</u></td>';
echo '<td bgcolor="#669999"><u>Login</u></td>';
echo '<td bgcolor="#669999"><u>Tel</u></td>';
echo '<td bgcolor="#669999"><u>Etablissement RNE</u></td>';
echo '<td bgcolor="#669999"><u>Fonction</u></td>';
echo '<td bgcolor="#669999"><u>Email</u></td>';
echo '<td bgcolor="#669999"><u>Résidence principale</u></td>';
echo '<td bgcolor="#669999"><u>Code postal</u></td>';
echo '<td bgcolor="#669999"><u>Ville</u></td>';
echo '<td bgcolor="#669999"><u>Type d\'utilisation</u></td>';
echo '<td bgcolor="#669999"><u>Type de machine</u></td>';
echo '<td bgcolor="#669999"><u>Système d\'exploitation</u></td>';
echo '<td bgcolor="#669999"><u>Anti-virus</u></td>';
echo '<td bgcolor="#669999"><u>Typer d\'accès</u></td>';
echo '<td bgcolor="#669999"><u>Date prévisionnelle d\'installation</u></td>';
echo '<td bgcolor="#669999"><u>Date de la demande</u></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($res_fonction)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC" ><font size="1">'.$row['nom_agent'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['prenom'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['login_ldap'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['tel_agent'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['etab'].' - '.$row['nom_etab'].' - '.$row['ville_etab'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['fonct'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['mail_agent'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['adresse_agent'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['cp_agent'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['ville_agent'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['etab'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['id_type_client'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['os'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['av'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['type_acces'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['date_prev'].'</font></td>';
echo '<td bgcolor="#CCCCCC"><font size="1">'.$row['dem'].'</font></td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
else echo 'Désolé, vous n\'avez pas accès au tableau. Vous devez vous logguer en tant que chef d\'établissement';
// on libère le résultat
mysql_free_result($res_fonction);
?>