utiliser variable de sessions pour executer requete sql

grusgrus
Invité n'ayant pas de compte PHPfrance

30 juil. 2005, 22:28

Bonjour , voici mon problème :
pour le site d'une assoc. je doit mettre en place une zone réservée et pour cela j'utilise les sessions.
Voici le formulaire d'ouverture de session : http://grusgrus.free.fr/index.php
L'adherent devra y entrer son login de la forme nomprenom et son mot passe.
vous pouvez utiliser login : grusonlaurent ; mot de passe : tdlp
Les informations des 130 adherents sont sur une base de donnée.
Comment puis je faire pour afficher les informations d'un adherent qui vient de se loguer ? Le problème vient du fait que son nom d'utilisateur est une concaténation de deux champs. Dans ma requete sql (qui me permettrai de rechercher les informations de l'adherent) je ne sait pas quoi derriere le WHERE ?

Eléphanteau du PHP | 22 Messages

30 juil. 2005, 22:30

Cela devrait te mettre sur une piste:
$nomdutilisateur = $nom . $prenom;
Une simple concaténation à l'aide de l'opérateur ".".
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."

grusgrus
Invité n'ayant pas de compte PHPfrance

30 juil. 2005, 22:56

voici le code qui me donne comme erreur :Parse error: parse error, unexpected $ in /var/www/free.fr/4/b/grusgrus/membre.php on line 66
la ligne 66 c'est la derniere

Code : Tout sélectionner

<?php require("config.php"); $res = @mysql_connect($serveur,$login,$pass) or die ("probleme connexion"); @mysql_select_db($bdd,$res) or die ("probleme dans selection base"); if ($res<>0) { $login=$_SESSION['login']; $nomdutilisateur = ($nom . $prenom); $sql = "SELECT id,adresse FROM adherents WHERE $nomdutilisateur=$login"; $result = mysql_query($sql,$res) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); mysql_free_result($result); echo"$result"; mysql_close(); ?>

Mammouth du PHP | 1311 Messages

30 juil. 2005, 23:04

salut
dans le code que tu donne ta condition n'est pas refermer mais ce n'ai pas ton erreur
je pencherai plus sur echo
essaye avec
echo $result;

Invité
Invité n'ayant pas de compte PHPfrance

30 juil. 2005, 23:11

j 'ai trouvé l'erreur elle était au début du code
voici le bon

Code : Tout sélectionner

<?php require("config.php"); $res = @mysql_connect($serveur,$login,$pass) or die ("probleme connexion"); @mysql_select_db($bdd,$res) or die ("probleme dans selection base"); $login=$_SESSION['login']; $nomdutilisateur = $nom . $prenom; $sql = "SELECT id,adresse FROM adherents WHERE '$nomdutilisateur'='$login'"; $result = mysql_query($sql,$res) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); mysql_free_result($result); echo"$result"; mysql_close(); ?>
maintenant la page s'ouvre mais le resultat de ma requete est Resource id #3

Mammouth du PHP | 1311 Messages

30 juil. 2005, 23:20

met des mysql_error des que tu rentre en actio avec ta base

ton message peut venir
@mysql_select_db($bdd,$res) or die ("probleme dans selection base");
enleve @
et essaye
$conn=mysql_select_db($bdd,$res) or die ("probleme dans selection base");

Mammouth du PHP | 19672 Messages

31 juil. 2005, 08:11

Ta requête SQL ne fonctionnera pas parce que tu ne testes pas les bons éléments. Là, tu compares deux variables dans la clause WHERE. Or ce qu'il faut vérifier, c'est a présence dans la base de données du pseudo et du mot de passe de l'utilisateur. Ce que tu dois vérifier, c'est que ces variables sont présentes dans les champs de la table "adherents". Ta requête doit donc avoir la forme suivante:

Code : Tout sélectionner

SELECT id, adresse FROM adherents WHERE champ_login = '". $login ."' AND champ_mot_de_passe = '". $motdepasse ."';
Ensuite, tu dois récupérer les valeurs retournées. Mais dans ton code, tu essayes de faire afficher $result et tu obtiens "resource", ce qui est normal.
Modifie ton code de cette manière :
$result = mysql_query($sql,$res) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
/* On commence par vérifier qu'il y a des résultats */
if(mysql_num_rows($result) > 0)
{
    /* S'il y a des résultats, on les affiche */
    while($ligne = mysql_fetch_array($result))
    {
        echo("<p>Identifiant : ". $ligne['id'] .";<br />Adresse : ". $ligne['adresse'] ."</p>\n");
    }
}
else
{
    /* Il n'y a pas de résultat, l'identification est incorrecte. */
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
pjl
ViPHP | 2119 Messages

31 juil. 2005, 11:04

L'adherent devra y entrer son login de la forme nomprenom et son mot passe.
Et si 2 adhérants ont le même nom et le même prénom ?

Mammouth du PHP | 19672 Messages

31 juil. 2005, 11:48

Alors il y a une erreur de conception au départ. On ne devrait enregistrer en pseudonyme que des noms uniques ou bien des mots de passe uniques. Il ne faut pas laisser une chance d'avoir la possibilité que deux adhérents aient le même couple "pseudo/mot-de-passe"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

grusgrus
Invité n'ayant pas de compte PHPfrance

31 juil. 2005, 14:32

Il est impossible que 2 adherents est le meme nom et le meme prenom car j'ai la liste de tous les inscrits (Il ya 130 adherents dans cette association de theatre)

Mammouth du PHP | 983 Messages

31 juil. 2005, 14:45

Et si un nouveau adhérent arrive et qu'il a un homonyme. Tu fais comment: tu lui donnes un autre nom? Ou bien tu fais exprès de faire une faute d'orthographe à son nom? ;)

Mammouth du PHP | 19672 Messages

31 juil. 2005, 14:55

Pour éviter ce cas, on utilisera un autre champ et l'utilisateur devra choisir un pseudonyme.

Enfin voyons, soyez donc un peu logique :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

grusgrus
Invité n'ayant pas de compte PHPfrance

31 juil. 2005, 15:03

Code : Tout sélectionner

SELECT id, adresse FROM adherents WHERE champ_login = '". $login ."' AND champ_mot_de_passe = '". $motdepasse ."';
Le champ_login n'existe pas .
Pour s'identifier dans la session l'adherent entre comme login "nomprenom" ou nom et prenom sont deux champs de ma table adherents (j'ai utilisé concat(nom,prenom) dans le script d'ouverture de session)

je veux pouvoir récupérer et afficher divers informations (contenu dans la table adherents) concernant le loguer .
Je m'explique plus clairement :
- L'adherent est sur l'index ou on lui demande son login et son mot de passe
-il entre comme login : nomprenom et un mot de passe qu'on lui a attribué;
- la session est ouverte si il est reconnu et il est redirigé vers la page membre.php
-dans ma table "adherent" , il n'ya pas de champ nomprenom. Le script d'ouverture de session utilise la fonction CONCAT(nom,prenom) ou nom et prenom son deux champs de la table

Code : Tout sélectionner

$sql = 'SELECT count(*) FROM adherents WHERE CONCAT(nom,prenom)="'.addslashes($_POST['login']).'" AND pass_md5="'.(addslashes($_POST['pass'])).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req);
- Je veux que sur la page membre.php toutes les information concernant le logué s'affiche (nom,prenom,adresse,code postal, ville, date de naissance,...) qui sont des champs de la table adherent .
Pour cela je veux utiliser l'identification de session

Code : Tout sélectionner

$sql = "SELECT id,adresse,nom,prenom,ville,......etc FROM adherents WHERE champ_login = $login ; $result = mysql_query($sql,$res) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while ($row=mysql_fetch_row($result)){ echo $row["id,adresse,nom,....."]; mysql_close();
cOMMENT DANS LA CLAUSE WHERE je doit coder ca : concat(nom,prenom)=$login ; ou bien $nom . $prenom =$login

sans oublier que $login=$_SESSION['login'];[/quote]