Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
j'ai une première page (chercher_user.php) dans la page j'ai une liste déroulante permettant de choisir un acteur afin d'afficher toutes ses informations et une 2ième page (fiche_user.php) où j'affiche ses informations.
chercher_user.php:
include_once ("fonctions.php");
include_once ("fonctionsjs.php");
if ((!isset($_SESSION['mail'] ))&& (!isset($_SESSION['pwd'])))
{
$lebas=1;
}
else
{
$lebas=2;
}
entete("Rechercher un acteur", $lebas);
connexion();
/*******************************************************************************************/
?>
<form method="post" id="form" id="etat">
<fieldset class="absence_personne"> <legend> Rechercher une personne </legend>
<table cellspacing=20 cellpadding=2 align="center">
<span id="erreur"> </span>
<tr> <label>
<td> Choisir un acteur </td>
<td> <font color="red" size=2> * </font> <select name="personne" id="etat"> <option> </option>
<?php $val =''; liste_nom("tout", $val); ?>
</select> </td>
</label> </tr>
<tr> <label>
<td> </td> <td align="center"> <input type="submit" name="sauver" value="Chercher" onclick="return verifier_ajout();" />
<a href="index.php" style="text-decoration: none"> <input type="submit" name="annulation" value="Annuler" /> </a></td>
<!-- le input de 'annuler' se comprtait de la mm façon que 'chercher', j'ai donc été obligée de mettre un <a href> pour retourner à l'accueil -->
</label> </tr>
</table>
</fieldset>
</form>
<?php
if (isset($_POST['sauver']))
{
$acteur = verifier_isset('personne');
if(empty($acteur))
echo '<script ttype="text/javascript"> alert("Veuillez choisir un acteur"); </script>';
else
header('location: fiche_user.php?personne='.$acteur.'');
}
?>
</div> </div>
</body>
</html>
J'avais d'abord fait la soumission en précisant l'attribut action dans la balise form, mais après avoir remarqué le problème j'ai changé, sans succès d'ailleurs.
fiche_user.php:
include_once ("fonctions.php");
include_once ("fonctionsjs.php");
connexion();
//vérification de la session
if ((!isset($_SESSION['mail'] ))&& (!isset($_SESSION['pwd'])))
{
$lebas=1;
}
else
{
$lebas=2;
}
entete("Fiche acteur", $lebas);
if(isset($_GET['personne'])) //récupération de la personne de la page afficher_users.php à travers <a href...>
$personne = $_GET['personne'];
else
$personne = verifier_isset("personne");
if (!empty($personne))
{
echo '<div class="div1">';
//recherche de l'identifiant de la personne
$lid1 = mysql_query('select id, profil, email, telephone, acteur from personne where acteur="'.$personne.'"');
if ($lid2=mysql_fetch_assoc($lid1))
{
echo '<table cellpadding=10 align="center" id="tab_acteur"> <caption> <b><u>Informations personnelles</u></b> <br/><br /> </caption>';
$identif = $lid2['id']; //récupération de l'id pour les comparaisons ultérieures
echo '<tr> <td> Acteur </td> <td>'.$lid2['acteur'].'</td> </tr>';
echo '<tr> <td> Profil </td> <td>'.$lid2['profil'].'</td> </tr>';
echo '<tr> <td> E-mail </td> <td>'.$lid2['email'].'</td> </tr>';
echo '<tr> <td> Téléphone </td> <td>'.$lid2['telephone'].'</td> </tr>';
//compte le nombre de fois que la personne apparait dans la table absence
$absence = mysql_query('select COUNT(*) from absences where id="'.$identif.'"');
$nb_absence = mysql_fetch_assoc($absence);
if (!empty($nb_absence))
echo '<tr> <td> Nombre d\'absences </td> <td>'.$nb_absence['COUNT(*)'].'</td> </tr>';
else if (empty($nb_absence))
echo '<tr> <td> Nombre d\'absences </td> <td> 0 </td> </tr>';
//compte le nombre de fois que la personne apparait dans la table activite
$activites = mysql_query('select COUNT(*) from activite where id_acteur_pack="'.$identif.'" or id_acteur_qualif="'.$identif.'"');
$nb_activites = mysql_fetch_assoc($activites);
if (!empty($nb_activites))
echo '<tr> <td> Nombre d\'activités </td> <td>'.$nb_activites['COUNT(*)'].'</td> </tr>';
else
echo '<tr> <td> Nombre d\'activités </td> <td> 0 </td> </tr>';
//compte le nombre de fois que la personne apparait dans la table demande
$demandes = mysql_query('select COUNT(*) from demande where id_acteur_cpi="'.$identif.'"');
$nb_demandes= mysql_fetch_assoc($demandes);
if (!empty($nb_demandes))
echo '<tr> <td> Nombre de demandes </td> <td>'.$nb_demandes['COUNT(*)'].'</td> </tr>';
else
echo '<tr> <td> Nombre de demandes </td> <td> 0 </td> </tr>';
echo '</table> <br/>';
}
echo '<pre>
<a href="modifier_infos_user.php?personne='.$identif.'" >Modifier</a> <a href="chercher_user.php">Retour recherche</a> <a href="afficher_users.php">Liste des acteurs</a> </pre>';
echo "</div>";
echo "<div class='div2'>";
// ses absences
$lesabsences = mysql_query('SELECT nature, date_debut, date_fin FROM absences WHERE id="'.$identif.'"');
$ligne_ab = mysql_num_rows($lesabsences);
echo '<p style="text-align: center;"> <b><u>Absences</u></b> </p>';
if(empty($ligne_ab)) //si l'acteur n'est pas dans la table absence
echo "<p align='center'> Aucune absence enregistrée </p>";
else
{
echo '<table cellspacing=20 align="center" id="tab_acteur">
<th> Absences </th> <th> Début </th> <th> Fin</th>';
while($resultat1 = mysql_fetch_assoc($lesabsences))
{
echo '<tr align="center">';
echo '<td>'.$resultat1['nature'].'</td>';
$ddebut = formater_date($resultat1['date_debut']);
$dfin = formater_date($resultat1['date_fin']);
echo '<td>'.$ddebut.'</td>';
echo '<td> '.$dfin.'</td>';
echo '</tr>';
}
}
echo '</table> <br/><br/>';
echo '</div>';
echo '<div class="div3">';
//activités dans lesquelles il figure
$activite = mysql_query('SELECT code_application, version_application, TM, version_TM, type_activite
FROM activite WHERE id_acteur_pack="'.$identif.'" or id_acteur_qualif="'.$identif.'"');
$ligne_ac = mysql_num_rows($activite);
echo '<p style="text-align: center;"> <b><u>Projets</u></b> </p>';
if(empty($ligne_ac)) //si l'acteur n'est pas dans la table activité
echo '<p align="center"> Vous n\'avez travaillé sur aucun projet </p>';
else
{
echo '<table cellspacing=2 cellpadding=10 align="center" id="tab_acteur">
<th> Application </th> <th> Code </th> <th> Version </th> <th> Module</th> <th> Version module </th>
<th> Etat module </th> <th> Activité </th>';
while($resultat2 = mysql_fetch_assoc($activite))
{
echo '<tr align="center">';
echo '<td>'. get_application($resultat2['code_application']).'</td>'; //nom de l'application
echo '<td>'.$resultat2['code_application'].'</td>';
echo '<td>'.$resultat2['version_application'].'</td>';
echo '<td>'.$resultat2['TM'].'</td>';
echo '<td>'.$resultat2['version_TM'].'</td>';
echo '<td>'.$resultat2['type_activite'].'</td>';
echo '</tr>';
}
echo '</table> <br/><br/>';
}
echo '</div>';
echo '<div class="div4">';
//demandes par lesquelles l'acteur est concerné
$demande = mysql_query('SELECT libelle, application, version_application, debut_demande, fin_demande, fingesdem, etat_protocole,
date_protocole, etat_bilan, date_bilan, etat_demande
FROM demande WHERE id_acteur_cpi="'.$identif.'"');
$ligne_d = mysql_num_rows($demande);
echo '<p style="text-align: center;"> <b><u>Demandes</u></b> </p>';
if(empty($ligne_d))
echo " <p align='center'> Vous n'êtes concerné par aucune demande </p> ";
else
{
echo '<table cellspacing=2 cellpadding=10 id="tab_acteur">
<th> Libellé </th> <th> Application </th> <th> Version </th> <th> Début </th> <th> Fin </th>
<th> Etat </th> <th> Protocole </th> <th> Date protocole </th> <th> Bilan </th> <th> Date bilan </th>';
while($resultat3 = mysql_fetch_assoc($demande))
{
echo '<tr align="center">';
echo '<td>'.$resultat3['libelle'].'</td>';
echo '<td>'.$resultat3['application'].'</td>';
echo '<td>'.$resultat3['version_application'].'</td>';
echo '<td>'.$resultat3['debut_demande'].'</td>';
$find = formater_date($resultat3['fin_demande']);
echo '<td>'.$find.'</td>';
echo '<td>'.$resultat3['etat_demande'].'</td>';
echo '<td>'.$resultat3['etat_protocole'].'</td>';
$dproto = formater_date($resultat3['date_protocole']);
echo '<td>'.$dproto.'</td>';
echo '<td>'.$resultat3['etat_bilan'].'</td>';
$dbilan = formater_date($resultat3['date_bilan']);
echo '<td>'.$dbilan.'</td>';
echo '</tr>';
}
echo '</table>';
}
echo '</div>';
}
else
header('location: chercher_user.php');
?>
</div>
</div>
</body>
</html>
Donc lorsque je choisis une personne et que valide, je suis redirigée vers "fiche-user.php" mais je suis aussi déconnectée. Ce qui me parait bizarre car j'ai une autre (3ième) page qui contient la liste de tous les acteurs et on peut cliquer sur un nom pour voir la fiche dans "fiche_user.php", cette fois je ne suis pas déconnectée.
Ce que j'ai aussi remarqué c'est que le problème n'est visible que sous mozilla, sous IE7 tout va bien (paradoxale, car c'est souvent le contraire).
J'espère obtenir de l'aide pour m'éclairer sur le sujet.
+++
Dernière modification par honey0 (20-08-2010 15:51:35)
Hors ligne
Salut,
j'ai pas tous suivis mais
chercher_user.php
ligne 21 : 2 attributs id ce n'est pas valide en html
pas d'attribut action donc le formulairesera valider sur la même page (c'est comme si tu avais mis action="chercher_user.php")
avec le micmac des ligne 42 à 53 tu renvoi si fiche_user.php avec un argument en "get" (argument qui est sencé etre a même valeur que je ne sais pas quoi ne connaissant le contenue de la fonction verifier_isset()
ligne 34 tu ne met pas un bouton dans un lien, tu vire le lien et utilise un boutton de type "button" et un bout de JS pour retourner sur l'index (onclic etc)
fiche_user.php
ligne 33 pourquoi un fetch_assoc et une boucle puisse que l'acteur est normalement unique (c'est le bordel s'il y a des homonymes, c'est pour cela que l'on utilise une clef primaire de table pour identifier et non leurs noms
les 3 requetes ensuites, doivent pouvoir etre faite une seule fois (il faut pour cela faire des joitures mais ce n'est pas compliqué)
par exemple
select personne.id as idacteur, profil, email, telephone, acteur, count(absences.id) as nbabsence from personne inner join absences on absences.id=idacteur where acteur="'.$personne.'"'
tu peut ajouter les deux autres (attention a la requete c'est pas que du copier collé).
Pour info : on evitera au maximum de faire des requetes dans une boucle car c'est gourmand et pas forcément utile (utilisation des jointures SQL par exemple).
Pour le problème exact je ne vois pas ce que tu entend par déconnecter, mis a part si tu utilise des variables $mail ou $pwd (si tu parle de la sessions)
si tu parle d'une retour sur chercher_user.php non voulu c'est surement le header en fin de page (d'ailleur il te manque la } fermante du else).
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
moi non plus j'ai rien compris
enfin, je ne vois que des aberrations
c'est quoi ca ???
[code = php ]
$activite = mysql_query('SELECT code_application, version_application, TM, version_TM, type_activite
FROM activite WHERE id_acteur_pack="'.$identif.'" or id_acteur_qualif="'.$identif.'"');
$ligne_ac = mysql_num_rows($activite);
echo '<p style="text-align: center;"> <b><u>Projets</u></b> </p>';
if(empty($ligne_ac))
[/code]
tu met qqchose dans $ligne_ac et tu te pose la question s'il est vide
bon, moi je dis, fé un peu de ménage et reviens nous voir qd tu auras les idées plus claires
a++
Hors ligne
bonjour,
merci pour vos réponses.
la fonction connexion() sert à se connecter à la base. quand j'ai vu ta question, je l'ai mis avant la vérification de la session, mais est-ce que son ordre a de l'importance sur la session ( je ne le crois pas, mais il se peut que je me goures sur ça aussi).
ligne 21: je n'avais pas fait attention, désolée, id="etat" n'a rien n'a faire là.
J'ai mis id="form" pour pouvoir y appliquer des styles en css; sinon il se valide sur la même page vu que je n'ai pas d'attribut action.
la fonction verifier_isset($val) contient:
else
$mavar = '';
return $mavar;
Pour la ligne 34, le bouton annuler, j'ai ce que tu m'as dit moogli
<input type="button" name="annulation" value="Annuler" onclick="retourner();" />
mais ça ne me renvoie pas à l'index. J'ai aussi essayer avec header('location..') mais celui là me renvoie directement à l'index sans m'afficher le formulaire.
J'ai une clé primaire qui est "id" en auto_increment.
pour les 3 requêtes, si je les fait en une seule fois et que j'affiche le résultat avec une boucle comme mysql_fetch_assoc ou fetch_array, il ne m'affichera pas x fois (x étant le nombre de ligne dans la table absence) les informations contenues dans la table personne??
Quand je parle de déconnexion, c'est effectivement la session qui est fermée, mais comme je l'ai dit cela ne se passe qu'avec mozilla pas avec IE avec lequel ça ne me pose pas de problème.
Désolée Pierrot si ce que je fais te parait aberrant, mais ce n'est pas si évident pour moi. Ce que vous faites est vraiment formidable, vous vous donnez la peine non seulement de lire nos posts mais aussi d'essayer de nous aider au mieux. Mais si je fais des trucs qui te paraissent "stupides", dis toi que je ne le vois pas ainsi, sinon je ne l'aurai pas fais. J'aimerai bien pouvoir faire "le ménage " seule dans mon code, mais je fais des erreurs dont je ne me rends pas compte et c'est pour cela que j'ai lancé cette discussion.
pour le if(empty($ligne_ac)), j'ai affiché $ligne_ac dans le cas ou il ne trouve aucune ligne et il a affiché 0; donc je vais le remplacer par:
Merci
++
Hors ligne
je retourner finalement à l'index en faisant simplement:
comme dans les autres formulaires
Hors ligne
les cookies sont activés, d'ailleurs ça ne m'arrive qu'entre ces 2 pages, la navigation entre les autres pages n'entraine pas la fermeture de la session.
Hors ligne
kiku!! personne
je suis vraiment bloquée là, j'ai même essayé de nommer les sessions, mais toujours le même problème. Je crois qu'il ne transmet pas les variables de session. En effet, lorsque je fais (dans fiche_user.php)
FF me met undefined index: mail
et pourtant je les sauvegardes dès que la session est établie.
Dernière modification par honey0 (25-08-2010 09:02:09)
Hors ligne
Hors ligne
bonjour
var_dump($_SESSION) donne: array empty
Sur la page la même page je n'ai pas de variable $mail
Dernière modification par honey0 (26-08-2010 08:47:13)
Hors ligne
tu as oublié session_start
a++
Hors ligne
non, j'ai bien mis session_start au début des 2 pages
...........
Hors ligne
je crois ce n'est pas le code de ces pages qui pose problème. J'ai sorti une sauvegarde de 10 jours qui marche très bien. lorsque je remplace les fichiers par ceux de la sauvegarde, ça ne marche plus (alors qu'ils marchaient dans le répertoire de sauvegarde). Je ne sais pas d'où ça vient, mais je vais chercher et vous tenir au courant.
Bonne journée
Hors ligne
Bonjour,
Quand ca marche dans un répertoire et pas dans un autre, il n'y a pas photo. C'est que le problème viens dans la gestion de ton arborescence. Tes chemins relatifs pour tes includes doivent se faire par rapport à la page principale qui éxécute le script en cours.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
salut!!
ce n'est pas exactement l'arborescence qui est en cause. en fait j'appelle une fonction "entete($maphrase, $lebas)". C'est elle qui pose problème.
J'ai changé la fonction pour ne plus avoir que "entete($maphrase)". $lebas me servait à savoir si une session est active ou pas, et si c'est le cas, on affiche un bouton déconnexion, sinon on affiche le formulaire de connexion. J'ai enlevé cette partie et ça marche. Je vais donc voir du côté de jquery si je peux faire un formulaire de connexion flottant ou caché.
Je vous remercie beaucoup pour vos interventions qui m'ont appris de nouvelles choses et m'ont permis de corriger certaines erreurs de mes codes.
Encore merci à tous!!!!:D
Dernière modification par honey0 (26-08-2010 13:01:58)
Hors ligne
Pages :: 1