$_SESSION variable selon une valeur

Répondre
Coolworld
le 23/01/2009 à 01:30
Coolworld
Bonsoir à tous il est tard..

J'ai 3 pages.
- 1st. lanlist.php
- 2nd. lanevent.php
- 3rd. changelanevent.php

Vous l'avez compris il y a donc un UPDATE à faire sur la 3eme.
J'utilise des SESSIONS pour afficher les valeurs de mes tables.

1st. Dans la premiere il y a un formulaire de connexion. Une fois votre Login/pass correct je crée une session(lan) qui récupere la valeur name de ma table
///// CODE 1st ///////
$namelan = $_POST['TB_name_lan'];

$sql2 = "select password from lans where name='$namelan'";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
$data2 = mysql_fetch_array($req2);
$_SESSION['lan'] = $namelan;

///////////////////////

2nd. Dans la seconde (c'est la que je fais l'erreur sans doute), je fais une liste de toutes mes données de ma table ayant le name=session(lan) (que j'ai créé à la 1st page). J'ai dans ma table (lans) plusieurs valeurs "name" identiques. Dans cette page je dois créer une session(lanevent) qui doit avoir pour valeur l' "ID" de mon entrée sur laquelle je clique pour accéder à ma page 3rd. Le problème c'est que comme j'ai plusieures entrées qui ont la même valeur il me sélectionne toujours la même! Je ne sais pas où placer ma variable SESSION(lanevent) pour que celle ci change selon que l'on clique sur telle ou telle entrée. voyez par le code (j'ai laisser ma variable session mal placée..).

////////CODE 2nd/ ////
<?php 
$sessionlan = $_SESSION['lan'];
$querrylans = mysql_query("SELECT * FROM lans WHERE name='$sessionlan'");
while($donneeslan = mysql_fetch_array($querrylans)) { $_SESSION['lanevent'] = $donneeslan[edition];?>
<tr onmouseover="this.style.backgroundColor='#e7e7e7';this.style.color='#FFFFFF' ; " onmouseout="this.style.backgroundColor='#f8f9fb';this.style.color='#f8f9fb'" style="cursor:pointer;" onclick="window.location.href='changelanevent.php?lanevent=<?php echo $donneeslan['edition']; ?>'">

<td valign="top"><?php echo ($donneeslan['name']); ?></td>
<td valign="top"><?php echo ($donneeslan['edition']); ?></td>
<td valign="top"><?php echo ($donneeslan['datestart']); ?></td>
</tr>
<? } ?>

////////////

3rd. Dans la troisième je dois récupérer la valeur de la SESSION(lanevent). Probleme : celle-ci reste la même puisqu'à la page 2 il selectionne toujours la même entrée.

J'espere que quelqu'un a compris, si il y a des questions allez y pas de problème ;)

MERCI
Coolworld baby
Rolland
le 23/01/2009 à 11:17
Rolland
Bonjour Coolworld,

Pas vraiment tout compris mais je ne vois pas de session_start() dans tes pages pour transmettre la valeur de tes variables de session d'une page
3SI - Sea, Sex, Sun and Internet
Rolland
le 23/01/2009 à 11:17
Rolland
On recommence.

Bonjour Coolworld,

Pas vraiment tout compris mais je ne vois pas de session_start() dans tes pages pour transmettre la valeur de tes variables de session d'une page à l'autre.

Ton pb ne viendrait-il pas de là ?
3SI - Sea, Sex, Sun and Internet
Coolworld
le 23/01/2009 à 12:25
Coolworld
Non, j'ai mis juste le bout de code de mes pages où ca pose problème. Rassure toi je démarre bien mes sessions.
Coolworld baby
Coolworld
le 23/01/2009 à 13:17
Coolworld
Ma session est juste et est bien créée. Si je fais un echo elle me renvoie bien les valeurs 'ID' que je lui demande, ca m'affiche"5 9 8".
Le soucis c'est que ma session garde toutes les données ID (puisque j'ai fait une boucle). Ce que je veux c'est que la Session soit égale à l'ID de la ligne (du <tr>) que j'ai selectionnée !
Pour l'instant la session = 5 9 8 (tous les IDs) et elle selectionne la derniere valeur 8.
Coolworld baby
i M@N
le 23/01/2009 à 14:17
i M@N
Hello.

Essaye avec ça :
<?php
/*on initialise la session*/
session_start();
/*on récupère la valeur de $_SESSION['lan']*/
$sessionlan = $_SESSION['lan'];

/*pas clair la requête, on peut faire mieux voir dessous*/
//$querrylans = mysql_query("SELECT * FROM lans WHERE name='$sessionlan'");
/*on prépare la requête*/
$sql = 'SELECT * FROM lans WHERE name='.$sessionlan.'';
/*on l'exécute et si elle foire on a un message d'erreur*/
$querrylans = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
/*on boucle sur les données du tableau $querrylans issues de la requête sql*/

while($donneeslan = mysql_fetch_array($querrylans)) {
/*je vois pas l'intérêt de ça, tu bousilles $_SESSION['lanevent'] avec la valeur de $donneeslan[edition] à l'instant ou la boucle passe sur un enregistrement, normal que $_SESSION['lanevent'] soit toujours égal à la dernière valeur de $donneeslan[edition]*/
//$_SESSION['lanevent'] = $donneeslan[edition];
/*on affiche les différentes valeurs retournées par la requête en faisant de belles concaténations au lieu de vilain <?php echo ... ?> qui finissent par un <?php } ?> trop môche ; )*/
echo '<tr onmouseover="this.style.backgroundColor=\'#e7e7e7\';this.style.color=\'#FFFFFF\';" onmouseout="this.style.backgroundColor=\'#f8f9fb\';this.style.color=\'#f8f9fb\'" style="cursor:pointer;" onclick="window.location.href=\'changelanevent.php?lanevent='.$donneeslan['edition'].'\'">

<td valign="top">'.$donneeslan['name'].'</td>

<td valign="top">'.$donneeslan['edition'].'</td>

<td valign="top">'.$donneeslan['datestart'].'</td>

</tr>';
/*fin de la boucle*/
}
?>


@+...
One Love, One Heart, One Unity.
i M@N
le 23/01/2009 à 14:20
i M@N
et ça serait mieux de séparer le style dans une feuille css --> http://css.alsacreations.com/

@+...
One Love, One Heart, One Unity.
Rolland
le 23/01/2009 à 14:26
Rolland
Coolworld,

Effectivement c'est ta boucle qui ne correspond pas.
Tant que 'edition' n'est pas cliqué, tu ne peux pas connaitre sa valeur.
Puisque tu passes cette variable dans l'URL, tu n'as pas besoin de définir ta session 'lanevent' dans la page 2.
C'est à la page 3 que tu dois la déterminer
<?php
if(isset($_GET['lanevent'])) $_SESSION['lanevent'] = $_GET['lanevent'];
//tes requêtes etc...
?>
3SI - Sea, Sex, Sun and Internet
Rolland
le 23/01/2009 à 14:30
Rolland
Euuh ! smiley Ce serait plutôt ça
<?php
if(isset($_GET['edition'])) $_SESSION['lanevent'] = $_GET['edition'];
//tes requêtes etc...
?>
3SI - Sea, Sex, Sun and Internet
Répondre
LoadingChargement en cours