probleme sur session

micka
Invité n'ayant pas de compte PHPfrance

11 janv. 2006, 13:36

bonjour j'ai un souci de session lorsque je passe un numero de matricule en session (j'ai donc plusieur fichiers de session dans tmp) tous mes numeros d'incidents pointent sur la derniere session enregistrée, alors qu'ils sont different. Merci

(enregistrement )
session_start();
if (isset($_POST['matricule']))
{
$_SESSION['matricule'] = $_POST['matricule'];
}

$connexion = mysql_connect('***','***','***') or die('Erreur de connexion '.mysql_error()); // Connexion à la base de donnée 
mysql_select_db('****',$connexion)  or die('Erreur de selection '.mysql_error()); //Sélection de la base 
$requete = "SELECT matricule,nom,prenom,telephone,service.id_service,libelle_service,sites.id_site,nom_site 
FROM utilisateur,service,sites 
WHERE matricule = '".$_SESSION['matricule']."' && utilisateur.id_service = service.id_service && service.id_site = sites.id_site"; // requete 
$resultat=mysql_query($requete) or die('Erreur SQL !'.$requete.'<br>'.mysql_error()); // execution de la requete 
mysql_close(); // Fermeture de la connexion

if ($_SESSION['matricule']="")
{
echo "<script languague=\"javascript\">location.href='creation.php?error=Matricule erroné ou inexitant';</script>";
}

$matricule = mysql_result($resultat,0,'matricule');
$nom = mysql_result($resultat,0,'nom');
$prenom = mysql_result($resultat,0,'prenom');
$telephone = mysql_result($resultat,0,'telephone');
$site = mysql_result($resultat,0,'nom_site');
$service = mysql_result($resultat,0,'libelle_service');



(visualsation)


<input name="envoyer" type="button" onClick="javascript:location.href='creation.php';" value="retour menu"><br>

if ($_POST['mois'] !="" && $_POST['année'] !="")
{
$connexion = mysql_connect('****','****','****');// Connexion à la base de donnée 
mysql_select_db('****',$connexion)  or die('Erreur de selection '.mysql_error()); 
$requete = "SELECT * FROM detail LEFT JOIN staus on staus.id_status = detail.id_status  WHERE  date_inter LIKE '".$_POST['année']."-".$_POST['mois']."-%'  ";
$resultat = mysql_db_query('base_portable',$requete,$connexion) or die('Erreur de selection '.mysql_error()); // execution de la requete 
mysql_close($connexion);// Fermeture de la connexion 
echo "<table><tr><td>INCIDENT</td><td>PORTABLE</td><td>MATRICULE</td><td>DATE</td><td>DATE INTERVENTION</td><td>STATUS</td></tr>\n";
while($rows = mysql_fetch_array($resultat)) 
{ 


    $id_detail = $rows['id_detail'];
    $num_portable = $rows['num_portable']; 
	$matricule = $rows['matricule'];
	$date = $rows['date'];
	$dateinter = $rows ['date_inter']; 
    $status = $rows['libelle_status']; 
	
echo "<tr><td><input type=\"button\" onClick=\"location.href='portables.php?incident=".$id_detail."';\" value=\"".$id_detail."\"></td><td>$num_portable</td><td>$matricule</td><td>$date</td><td>$dateinter</td><td>$status</td></tr>";
//echo "<input type=\"button\" onClick=\"location.href='portables.php?incident=".$id_detail."';\" value=\"".$id_detail."\">|".$num_portable."|".$matricule."|".$date."|".$dateinter."|".$status."<br />\n";
	

	
} 
}
echo "</table>";

Mammouth du PHP | 19672 Messages

11 janv. 2006, 13:49

Le premier code comporte des erreurs :
- "ET" en SQL s'écrit "AND" et non "&&";
- L'opérateur de comparaison dans un if() est "==" et non "=":
Proposition de correction:
<?php
session_start();
if (isset($_POST['matricule']))
{
    $_SESSION['matricule'] = $_POST['matricule'];
}

$connexion = mysql_connect('***','***','***') or die('Erreur de connexion '.mysql_error()); // Connexion à la base de donnée
mysql_select_db('****',$connexion)  or die('Erreur de selection '.mysql_error()); //Sélection de la base
$requete = "SELECT matricule, nom, prenom, telephone, service.id_service, libelle_service, sites.id_site, nom_site ".
           "FROM utilisateur,service,sites ".
           "WHERE matricule = '".$_SESSION['matricule']."' ".
           "AND utilisateur.id_service = service.id_service  ".
           "AND service.id_site = sites.id_site"; // requete
$resultat = mysql_query($requete) or die('Erreur SQL !'.$requete.'<br>'.mysql_error()); // execution de la requete
mysql_close(); // Fermeture de la connexion

if ($_SESSION['matricule'] == "")
{
    echo "<script languague=\"javascript\">location.href='creation.php?error=Matricule erroné ou inexitant';</script>";
}

$matricule = mysql_result($resultat,0,'matricule');
$nom       = mysql_result($resultat,0,'nom');
$prenom    = mysql_result($resultat,0,'prenom');
$telephone = mysql_result($resultat,0,'telephone');
$site      = mysql_result($resultat,0,'nom_site');
$service   = mysql_result($resultat,0,'libelle_service');
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

11 janv. 2006, 15:50

Micka, clique donc sur le bouton [Répondre] au lieu du bouton [Nouveau], j'ai balancé l'autre message orphelin à la poubelle !
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

micka
Invité n'ayant pas de compte PHPfrance

11 janv. 2006, 17:06

a alors ou en etions nous .
au niveau de ces petites session sais tu pourquoi je pointe sur le meme enregistrement alors que j'ai plusieurs fichiers de session ?

Mammouth du PHP | 19672 Messages

11 janv. 2006, 17:10

Tu as essayé le code corrigé que je t'ai indiqué ? Quel est le résultat ? As-tu d'autres messages d'erreur ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

micka
Invité n'ayant pas de compte PHPfrance

11 janv. 2006, 17:41

je n'est pas de changement.
par contre apparement des que je ferme internet explorer les sessions sont detruites

micka
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 12:59

aprés avoir appliqué les modifications je n'ai pas de chagement.
le dernier enregistrement de session et recupéré sur tout mes appels

Mammouth du PHP | 19672 Messages

13 janv. 2006, 13:03

Tant que tu es connecté, c'est normal: ce qu'il faudrait savoir, c'est si tu as quelque part une instruction pour supprimer cette session et les informations qu'elle contient... je ne l'ai pas vue dans ton code :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

micka
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 13:14

je n'ai pas de session-destroy dans mon code.
voila ce que j'ai dans mes sessions.

matricule|s:7:"p007777";
matricule|s:7:"p007843";

et c'est donc le dernier entré qui prend le pas sur tout les autres.
sa ne pointe pas vers le matricule souhaité mais sur le dernier enregisté.

Mammouth du PHP | 19672 Messages

13 janv. 2006, 13:24

Ha... bon, et alors ? Si tu formulais clairement ta question en l'argumentant avec les extraits de code pertinents, peut-être bien que j'aurais au moins une petite chance de comprendre la nature du problème rencontré ? Là, je n'ai aucune idée précise de ce que tu veux faire ou ne pas faire, ce que que tu obtiens que tu ne veux pas, de ce que tu n'obtiens pas que tu voudrais et comment tu codes tout ça... :-k

Sois logique en tout temps. Le programme exécutera les instructions que tu crées. Si l'instruction n'est pas convenablement faite, le résultat ne pourra pas être celui attendu. Et si tu veux qu'une action précise se produise, il faut que l'instruction correspondante existe également.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

micka
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 14:00

tu as raison.

en fait dans un premier temps je rentre un matricule utilisateur.
<form name="recherche" action="portables.php" method="post">
Enregistrer le matricule utilisateur : <br>
  <br>
  Numéro matricule :
  <input type="text" name="matricule">
  <FONT size="+2">  
  <input name="envoyer2" type="submit" value="valider">
la page suivante l'analyse, si le matricule existe alors le programa affiche les informations correspondand à ce matricule.
session_start();
if (isset($_POST['matricule']))
{
$_SESSION['matricule'] = $_POST['matricule'];
}

$connexion = mysql_connect('localhost','root','') or die('Erreur de connexion '.mysql_error()); // Connexion à la base de donnée 
mysql_select_db('base_portable',$connexion)  or die('Erreur de selection '.mysql_error()); //Sélection de la base 
$requete = "SELECT matricule,nom,prenom,telephone,service.id_service,libelle_service,sites.id_site,nom_site 
FROM utilisateur,service,sites 
WHERE matricule = '".$_SESSION['matricule']."' && utilisateur.id_service = service.id_service && service.id_site = sites.id_site"; // requete 
$resultat=mysql_query($requete) or die('Erreur SQL !'.$requete.'<br>'.mysql_error()); // execution de la requete 
mysql_close(); // Fermeture de la connexion

if ($_SESSION['matricule']="")
{
echo "<script languague=\"javascript\">location.href='creation.php?error=Matricule erroné ou inexitant';</script>";
}

$matricule = mysql_result($resultat,0,'matricule');
$nom = mysql_result($resultat,0,'nom');
$prenom = mysql_result($resultat,0,'prenom');
$telephone = mysql_result($resultat,0,'telephone');
$site = mysql_result($resultat,0,'nom_site');
$service = mysql_result($resultat,0,'libelle_service');

la je fais un enregistrement dont je passes les details (portable en pret la date ect).

à ce moment j'ai un numero d'identification por l'incident enregistre, et un numero de matricule utilisateur correspondant.

exemple : 56 V60EAP p007843 2006-04-16 2006-01-13 RESERVE .

en cliquant sur le bouton 56 le programme et sencé dans mon esprit recupérer la session que je fais passé dans le formulaire (portables) que j'ai affiché plus haut. soit les information de reference du matricule (nom prenom tel ect)
echo "<tr><td><input type=\"button\" onClick=\"location.href='portables.php?incident=".$id_detail."';\" value=\"".$id_detail."\"></td><td>$num_portable</td><td>$matricule</td><td>$date</td><td>$dateinter</td><td>$status</td></tr>";

et la je ne peut plus suivre c'est que malgré l'enregistrement apparement correct de mes session.
en cliquant sur n'import qu'el enregistrement d'incident (exemple 56 55 autres) le programme pointe toujours sur la derniere session enregistré et non pas le bon matricule utilisateur.
j'espere avoir été plus clair.

Mammouth du PHP | 19672 Messages

13 janv. 2006, 14:58

Tu as toujours une erreur dans le code. Dans un if(), l'opérateur de comparaison est "==" et non "=" qui est un opérateur d'affectation. Donc :
if ($_SESSION['matricule'] == "")
ET NON
if ($_SESSION['matricule'] = "")
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

micka
Invité n'ayant pas de compte PHPfrance

17 janv. 2006, 12:19

j'ai trouvé une solution je voulai la mettre sur le forum au cas ou.
cela venais de la variable session qui n'étai pas remise à jour
session_start();
if (isset($_POST['matricule']))
	{
	$_SESSION['matricule'] = $_POST['matricule'];
	} else {
	$_SESSION['matricule'] = $_GET['mat'];
	}
$matricule = $_SESSION['matricule'];
merci de votre aide
[RESOLU]