récupération de l'id de la session

Eléphant du PHP | 250 Messages

12 mai 2008, 14:06

Bonjour
A toutes et tous
Je ne sais si je post dans le bon forum, si ce n'est pas le cas, que les admins m'excusent et replace ce sujet où il devrait... :oops:
Bon, voici mon problème:
Après enregistrement de l'identité du client via un formulaire, il est dirigé vers la page où il pourra commander.
Jusque là ça marche; je récupère l'id client dans la session, ou bien le visiteur est redirigé vers la page d'accueil faute d'id.
Mais ensuite, à partir de l'id je souhaite récupérer/afficher ses nom prénom, puis un peu plus loin l'adresse postale ou mail pour envoyer la commande. Et c'est là que ça se corse:
A l'affichage d'accueil il y a bien mon "Bonjour"...mais ni son nom ni son prénom!
Mais voici les codes en questions:
Le code d'enregistrement du client (code fonctionnel donc):
<?php
//Recuperation des champs
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";
if(isset($_POST['prenom'])) $prenom=$_POST['prenom'];
else $prenom="";
if(isset($_POST['adresse'])) $adresse=$_POST['adresse'];
else $adresse="";
if(isset($_POST['email'])) $email=$_POST['email'];
else $email="";

//connexion à la base
  $liendb = mysql_connect('blabla', 'chuuuttt', 'secret!');
  mysql_select_db ('chuuuttt',$liendb);
  $sql = "INSERT INTO suivi_cde (id, date, nom, prenom, adresse, email) VALUES ('', NOW(), '$nom', '$prenom', '$adresse', '$email')";
//si un problème lors de l'insertion dans la bdd on le signale  
  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  //récupération de l'id client
  $id = mysql_insert_id();
    
    mysql_close();
    session_start();
    $_SESSION['identification'] = $id;
    header('Location: choix_cde.php');
    exit();
?>
et maintenant le code qui me pose problème:
<?php
//connection à la base
 include ('bases/connexion.inc.php');
 $id = $_SESSION;
 $sql = "SELECT prenom, nom FROM suivi_cde WHERE id = '$id'";
 $resultat = mysql_query ($sql);
 while ($civilite = mysql_fetch_array($resultat));
 {
 $id = $civilite['$_SESSION'];
 $prenom = $civilite['prenom'];
 $nom = $civilite['nom'];
 echo "Bonjour $prenom $nom";
} 
 mysql_close($base);
?>
Ce dernier code (include dans la page) fonctionne jusqu'à "Bonjour"...après rien!???
J'ai testé juste avec le N° client, ça fonctionne (:shock: :shock: :shock: :shock: ), je ne comprends plus rien. Je suis certain d'avoir la cause/solution sous les yeux...mais je ne vois plus rien... :oops: :oops:
Si quelqu'un passant par là (alors qu'on serait mieux à la plage :P ) pouvait me donner un conseil, avis, coup de main, pour m'aider à comprendre et à solutionner le pb, je suis preneur :lol:
D'avance, merci
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Eléphant du PHP | 209 Messages

12 mai 2008, 14:59

Salut,

ya un truc qui me choque quand même :
$id = $_SESSION
alors que juste avant tu as fait ceci :
    $_SESSION['identification'] = $id; 
...

Mammouth du PHP | 1668 Messages

12 mai 2008, 15:01

Hum, je ne comprend pas pourquoi tu n'utilise pas $_SESSION['id_utilisateur'], par exemple

Je ne vois pas session_start(): au fait
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

12 mai 2008, 15:05

:oops: Le drame du copier/coller...non, simplement oublié de modifier après un essai, au cas ou...Merci de l'avoir vu SpintroniK
Katagoto: Simple oubli de ma part, mais il est y est bien, en début de page et avant tout html; le voici quand même:
<?php
 session_start();  
 if (!isset($_SESSION['identification'])) { 
    header ('Location: ../index.php'); 
    exit();  
 }
?>
Hum, je ne comprend pas pourquoi tu n'utilise pas $_SESSION['id_utilisateur'], par exemple
Heu, là c'est moi qui ne comprends pas: que veux tu dire exactement? Tu pourrais me donner un exemple, stp?
Merci à vous deux
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Mammouth du PHP | 1668 Messages

12 mai 2008, 15:10

Bah, moi je ne m'y serait pas pris comme ça pour faire le système, j'aurais du mal a te mettre sur la voix :roll:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

12 mai 2008, 15:14

Merci tout de même Katagoto...mais je suis preneur de tous conseils. Puis je te demander comment tu t'y serais pris?
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

ViPHP
ViPHP | 2291 Messages

12 mai 2008, 18:25

Moi je trouve la remarque de SpintroniK trés pertinente

Eléphant du PHP | 250 Messages

12 mai 2008, 18:48

Merci dunbar; moi aussi et c'est pourquoi j'ai déjà corrigé ce petit détail; mais l'essentiel ne venait pas de là.
En l'état de mes (maigres) connaissances et recherches ici ou là, il semblerait que si je définissais pour commencer des $_SESSION avec nom, prenom, etc (tout ce que je souhaite récupérer par la suite, en fait), et un simple echo des variables $prenom et $nom...j(obtienne ici au moins ce que j'attends...et n'est ce pas plus simple?
Ce qui donnerai pour la session_start:
<?php
 session_start();  
 if (!isset($_SESSION['identification']) && !isset($_SESSION['prenom']) && !isset($_SESSION['nom']) && !isset($_SESSION['email'])) { 
    header ('Location: ../index.php'); 
    exit();  
 }
?>
Dans mon fichier enregistrement du client la fin de celui-ci devenant:
  $sql = "INSERT INTO suivi_cde (id, date, nom, prenom, adresse, email) VALUES ('', NOW(), '$nom', '$prenom', '$adresse', '$email')";
//si un problème lors de l'insertion dans la bdd on le signale  
  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  //récupération de l'id client
  $id = mysql_insert_id();
    
    mysql_close();
    session_start();
    $_SESSION['identification'] = $id;
    $_SESSION['prenom'] = $prenom;
    $_SESSION['nom'] = $nom;
    $_SESSION['email'] = $email;
    $_SESSION['adresse'] = $adresse;
    header('Location: choix_cde.php');
    exit();
...et apparemment ça marche bien!
Par contre, ce qui m'intéresserait de savoir, c'est si j'ai adopté là, la bonne solution, ou est-ce un pis aller? Vos commentaires sont les bienvenues! :wink:
Note aux admins: Puis je attendre 24h avant de noter ce post comme résolu en attendant d'autres avis???D'avance merci
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Mammouth du PHP | 1668 Messages

12 mai 2008, 19:01

Voilà déjà ça le fait plus mais je ferais ça plutôt :

if (!isset($_SESSION['identification']) || !isset($_SESSION['prenom']) || !isset($_SESSION['nom']) || !isset($_SESSION['email'])) {  
Comme ça si il manque une valuer il y aura erreur, avec ton code nous attendons un manque de toute les variables...

PS : je testerais également s'il sont plein avec !empty()

++
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

12 mai 2008, 19:05

Aaaaaaaaaaaaaaaahhhhhhhhh ouiiiiiiiiiiiiiiiiiiiiiiiiiiii! Merci katagoto! Effectivement!
Pour le empty, je ne sais pas, car je vérifies déjà mon form avant enregistrement, et tous ces camps doivent être impérativement remplis sinon, pas d'enregistrement. Serait ce quand même nécessaire?
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."

Mammouth du PHP | 1668 Messages

12 mai 2008, 19:53

Moi je le fait tout le temps :roll:

PS : Je savais pas qu'on pouvait donné autant de plaisir en 2m :roll:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 250 Messages

13 mai 2008, 21:01

:P 4mn!
Encore merci à toi pour m'avoir aiguillé!
Et encore merci à tous et toutes!
...et effectivement, IL FAUT FAIRE UN EMPTY! :wink:
Je clos le post
Bonne soirée tout le monde!
"L'histoire, à l'image de toutes choses dans l'univers, semble avoir comme unique règle le côté ondulatoire."