bonjour,

je suis en train de crée un espace membre

et j'ai un problème

j'ai des commande qui s'enregistrer dans une table (commande)

cette table est commune a tout les membres (toute les commande son enregistrer dedans)

mais ce que j'aimerais faire c'est afficher seulement les commande que le membre "A" a faite dans son espace perso, le membre "B" seulement les sienne etc etc.

j'imagine qu'il doit avoir une histoire d'id dedans mais comment procéder?

merci a tous

20 réponses


PhiSyX
Réponse acceptée

Hello, alors on va expliquer autrement :p

Partie 1 : Identification/Inscription
login.php : L'utilisateur doit taper ses identifiants pour se loguer.
-> A toi de récupérer son ID et de le stocker en session.
register.php : L'utilisateur doit taper ses informations personnelles et ses identifiants
-> A toi de récupérer son ID et de le stocker en session.

Une fois ceci fait, dans ta page des commandes, vérifie que $_SESSION'Auth']'user_id'] est bien définis avec isset().
S'il ne l'est pas, donc pas d'utilisateur connecté, on laisse un champ vide ou -1 ? :)

...
<input type="text" name="username" value="<?php echo (isset($_SESSION'Auth']'username'])) ? $_SESSION'Auth']'username'] : 'TonPseudo'; ?>"/>
<input type="hidden" name="user_id" value="<?php echo (isset($_SESSION'Auth']'user_id'])) ? $_SESSION'Auth']'user_id'] : -1; ?>"/>
...

Voilà, ensuite à toi de traiter les données récupérés par $_POST. ^^

PS: N'oublie pas le session_start();

Et bien tout simplement en suivent le code du editer les news dans le tutoriel news en php
voila un exemple a peux prét :
Config.php:

define("DB_HOST","localhost"); // L'Adresse ip du serveur;
define("DB_LOGIN","root"); // Login du serveur;
define("DB_PASS",""); // Mot passe du serveur;
define("DB_BDD",""); // Bases de données du serveur;

membre.php :

<?php
//On se connecte a la Bdd
require "config.php";
mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
mysql_select_db(DB_BDD);
if(!empty($_POST)){
extract($_POST);
//Selection de la Bdd
$sql="UPDATE membre SET pseudo='$pseudo', mail='$mail', WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
echo "Votre compte a était mise a jour";
}
$_GET"id"]=$id;
$sql="SELECT * FROM membre WHERE id={$_GET"id"]}";  
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
$data=mysql_fetch_assoc($req);
//Ici metre se que tu veut exemple :
echo ''.$data'pseudo'].'bienvenue sur votre profil';        
?>
<form method="post" action="membre.php">
Votre pseudo:<br />
<input type="text" name="pseudo" value="<?php echo $data"pseudo"]; ?>"/><br />
Votre Mail:<br />
<input type="text" name="mail" style="width:639px; height:200px;"><?php echo $data"mail"]; ?></textarea><br />
<label>Autoriser les commentaires sur cet article :</label>  
<input type="submit" value="Modifiée" />
</form>
corsinu
Auteur

re alors voila un des champ de mon formulaire

<td width="140"><div align="right"><font face="Verdana" size="2">Titre</font></div></td>
      <td align="center" valign="middle" width="30">
      <?php
      if ($erreur_champ3) {
      echo($icone);
      }
      ?>
      </td>
      <td><input name="champ3" type="text" value="<?=stripslashes($_SESSION'champ3']);?>"></td>

comment insérer la valeur du champs? j'ai essayé $champ3 il est vide et $_SESSION'champ3'] la page ne fonctionne plus :s

merci de ton aide

corsinu
Auteur

personne ne le sais? :s

il faut que j'insert les données du formulaire dans la base de donnée en prenant l'id du membre qui le rempli

ensuite afficher les donnée en fonction de l'id du membre le membre id1 aura toute les donnée enregistré contenant l'id 1 etc

merci a tous

Hello, j'imagine que tu utilises un système d'authentification pour tes membres, donc il faudrait stocker l'ID du membre dans une session.
Tu n'auras plus qu'à faire une requete SQL du genre : SELECT champs_a_recup FROM commandes WHERE user_id = $user_id;
Et pour l'insertion, INSERT INTO commandes (champs,...,user_id) VALUES ('...', '...', $user_id)
Sachant que $user_id = $_SESSION'user_id'] ^^

corsinu
Auteur

désolé mais je suis complétement a l'ouest la et je ne comprend plus rien ..

la valeur de mes champs dans le formulaire sont

<?=stripslashes($_SESSION'champ3']);?>

dans INSERT INTO la valeur est donc? $champ3, .$_SESSION'champ3']. ou ... je c'est pas lol

pour la zone membre j'ai utilisé le tuto de grafikart avec le fichier Auth.php
pour récupérer l'user_id suffi simplement insérer la variable $user_id?

une dernière chose a savoir que l'inscription ne sera pas obligatoire pour accéder au formulaire mais conseillé

donc si un visiteur rempli le formulaire que devient la variable user_id?

je me suis lancer dans un truc un peu fou mais sa me fait progresser et "professionnalise" mon site le simplifie et le complète.

je reprend tous depuis le début:

un visiteur arrive -> remplit le formulaire commande -> fin
un visiteur arrive -> s'inscrit -> rempli le formulaire commande -> rentre dans son espace membre et accède au suivi etc

j'espère être assez clair :s la j'avoue je n'arrive plus a réfléchir lol

merci a toi ^^

corsinu
Auteur

je comprend pas j'arrive pas a stocker l'id il reste vide :s même après plusieurs essai recherche etc

voici le print_r de $_SESSION:

Array ( [login] => test [pass] => a94a8fe5ccb19ba61c4c0873d391e987982fbb [user_id] => )

merci de ta réponse.
je connais que vraiment très peu le php et je m'aide beaucoup mais par la suite plus j'apprends mieux ce sera

Dans ta requête SQL, il faut spécifier le champ id. (SELECT id,..)
Puis stocker les résultats : $data = $sql->fetch(PDO::FETCH_OBJ); ( ou $data = mysql_fetch_object($sql); )
Et au moment des stockages de sessions, rajouter : 'user_id' => $data->id
Voila :p

corsinu
Auteur

ahhhhh :) mici je vais faire sa de ce pas je te tien au courant

corsinu
Auteur
require "config.php";
        mysql_connect(DB_HOST,DB_LOGIN,DB_PASS);
        mysql_select_db(DB_BDD);
        $login = addslashes($login);
    $sql = "SELECT id FROM membres WHERE login='$login' AND pass='$pass'";
    $data = mysql_fetch_object($sql);
    $req = mysql_query($sql) or die(mysql_error());
    if(mysql_num_rows($req)>0){
    $_SESSION'Auth'] = array(
    'login' => $login,
    'pass' => $pass,
    'user_id' => $data->id
    );

voila le code mais le tableau m'indique toujours user_id => '' :s

$sql = "SELECT id FROM membres WHERE login='$login' AND pass='$pass'";  
$req = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_object($req);

print_r($_SESSION) : Array ( [Auth] => Array ( [login] => PhiSyX [pass] => a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 [user_id] => 1 ) )

:)

corsinu
Auteur

heureusement que tu est la lol ^^

corsinu
Auteur

sa y est sa prend forme de nouveau probleme montre le bout du nez

1- dans le panel de l'utilisateur je n'arrive pas a faire afficher la ou les commandes passez seulement la 1ere de la table saffiche et pour tout le monde
2- je n'arrive pas a comprend comment enregistrer le "user_id" dans le formulaire de commande qui est dans un autre dossier du site il reste a 0 (le reste sont bien enregistrer)

au cas ou je te fait un Copier Coller du code

voila deja les morceau qui font le travail

//démarrage ou recup de la session
session_start();
...suite code...
// Vérifier que le formulaire a été envoyé...
if (isset($_POST'envoi'])) {
$_SESSION'champ1'] = $_POST'champ1'];
$_SESSION'champ2'] = $_POST'champ2'];
$_SESSION'champ3'] = $_POST'champ3'];
$_SESSION'champ4'] = $_POST'champ4'];
$_SESSION'zone_email1'] = $_POST'zone_email1'];
$_SESSION'liste1'] = $_POST'liste1'];
//Enregistrement des zones de texte
$_SESSION'zone_texte1'] = $_POST'zone_texte1'];
...suite....
//envoi
if (@!mail($email_dest,$sujet,$sortie,$entetes)) {
                    echo("Envoi du formulaire impossible");
                    exit();
                    } else {

                                        // et enregistrement des champs voulu dans la bdd..
                    $zone_email1 = $_POST'zone_email1'];
                    $zone_texte1 = $_POST'zone_texte1'];
                    $champ3 = $_POST'champ3'];

        mysql_connect('localhost','pparadis_adminis','clandest12b');
        mysql_select_db('pparadis_mondesign');
$sql = "INSERT INTO commandes(id,titre,details,mail,userid,date) values('','$champ3','$zone_texte1','$zone_email1','$user_id', NOW())";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_close();

1) Je n'ai pas très bien compris ? Tu souhaites afficher les "commandes" de l'utilisateur connecté ??
2) Bha.. Grâce aux sessions... Si tu enregistres une session sur /pwet/index.php, il pourra être gérer sur /lol/coucou.php et autre.. (sauf si session_start() n'est pas spécifié). Global

<form action=".." method="post">
...
<input type="hidden" name="user_id" value="<?php echo (isset($_SESSION'Auth']'user_id'])) ? $_SESSION'Auth']'user_id'] : -1; ?>"/>
...
</form>

Si tu as ça, normalement, ça devrait te retourner le bon résultat -> $_POST'user_id']. Si tu as -1 comme résultat, ça voudrait dire qu'il n'y a pas de $_SESSION'Auth']'user_id'].

Voila ^^

corsinu
Auteur

j'ai session_start(); sur mes formulaire les page de connexion et du panel

a la connexion auth.php récupère bien l'id mais si je vais remplir un formulaire l'id retourner sera 0(Zéro) connecter ou pas :s je vais essayer de faire un print_r(); de la session du formulaire pour voir ske sa me dit je viens dy penser :D

edit: je n'arrive pas a comprendre
je me connecte j'ai bien mon user_id a 1 sur le formulaire.
je suis déconnecté mon tableau session est bien vide sur le formulaire.

et quand je test le formulaire en ligne (obliger car il a aussi un envoi via mail) il me renvoi dans ma table Zéro pour la valeur user_id même en étant connecté

ps: bonne nuit a demain et surtout MERCI tu est au top!

Que donne le print_r de $_SESSION sur ta page de formulaire quand tu es connecté ?

corsinu
Auteur

salut désoler du temps de réponse j'ai eu un souci de net c'est deux dernier jours

je vais voir sa pour le formulaire

corsinu
Auteur

j'ai trouver mon erreur
j'avais pas mis deux element dans mon code

1. //démarrage ou recup de la session  
   2. session_start();  
   3. ...suite code...  
   4.   
   5. // Vérifier que le formulaire a été envoyé...  
   6. if (isset($_POST'envoi'])) {  
   7. $_SESSION'Auth']'user_id'] = $_POST'user_id']; <- sa  
   8. $_SESSION'champ1'] = $_POST'champ1'];  
   9. $_SESSION'champ2'] = $_POST'champ2'];  
  10. $_SESSION'champ3'] = $_POST'champ3'];  
  11. $_SESSION'champ4'] = $_POST'champ4'];  
  12. $_SESSION'zone_email1'] = $_POST'zone_email1'];  
  13. $_SESSION'liste1'] = $_POST'liste1'];  
  14.   
  15. //Enregistrement des zones de texte  
  16. $_SESSION'zone_texte1'] = $_POST'zone_texte1'];  
  17.   
  18. ...suite....  
  19.   
  20. //envoi  
  21. if (@!mail($email_dest,$sujet,$sortie,$entetes)) {  
  22. echo("Envoi du formulaire impossible");  
  23. exit();  
  24. } else {  
  25.                       
  26. // et enregistrement des champs voulu dans la bdd.. 
                          $user_id = $_POST'user_id']; <- et sa 
  27. $zone_email1 = $_POST'zone_email1'];  
  28. $zone_texte1 = $_POST'zone_texte1'];  
  29. $champ3 = $_POST'champ3'];  
  30.                       
  31. mysql_connect('localhost','pparadis_adminis','clandest12b');  
  32. mysql_select_db('pparadis_mondesign');  
  33. $sql = "INSERT INTO commandes(id,titre,details,mail,userid,date) values('','$champ3','$zone_texte1','$zone_email1','$user_id', NOW())";  
  34. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
  35. mysql_close();

userid enregistrer est bien le 1 maintenant vais tester avec plusieurs compte pour etre sur que sa marche

corsinu
Auteur

sa fonctionne bien :)
regarde :)

Modifier Effacer 1 Titre256 qzdqzd qz dqz dqz qzd qzdqzdqzdqz d wgfw efe test@test.fr 0 2011-04-06
    Modifier Effacer 2 Titre256 qzdqzd qz dqz dqz qzd qzdqzdqzdqz d wgfw efe test@test.fr 1 2011-04-06
    Modifier Effacer 3 Titre256qdzqd qzdqzqzdqzqzdqzdqzdqzd david2b@dav.fr 2 2011-04-06
    Modifier Effacer 4 dqdqzd qzdqzdqzdqzdqzdqzdqzd test@test.fr -1 2011-04-06

la ligne une est quand javais le probleme et apres le probleme est regler on voit bien id1, id2, id-1

corsinu
Auteur

tous fonctionne

  • l'affichage (j'ai fait un SELECT avec WHERE login='$login') en ayant bien défini que $login etait $_SESSION'Auth']'login'];
  • pareil pour userid a l'affichage des commande en cours
  • pareil pour le ptit bonjour 'utilisateur'

jusque la tout fonctionne a merveille :)

et tout sa grâce a toi tu ma vraiment beaucoup aider je t'en remercie beaucoup!