Page 1 sur 1

utiliser variable de sessions pour executer requete sql

Posté : 30 juil. 2005, 22:28
par grusgrus
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 ?

Posté : 30 juil. 2005, 22:30
par stukov
Cela devrait te mettre sur une piste:
$nomdutilisateur = $nom . $prenom;
Une simple concaténation à l'aide de l'opérateur ".".

Posté : 30 juil. 2005, 22:56
par grusgrus
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(); ?>

Posté : 30 juil. 2005, 23:04
par jeff
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;

Posté : 30 juil. 2005, 23:11
par Invité
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

Posté : 30 juil. 2005, 23:20
par jeff
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");

Posté : 31 juil. 2005, 08:11
par Cyrano
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. */
}

Re: utiliser variable de sessions pour executer requete sql

Posté : 31 juil. 2005, 11:04
par pjl
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 ?

Posté : 31 juil. 2005, 11:48
par Cyrano
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"

Posté : 31 juil. 2005, 14:32
par grusgrus
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)

Posté : 31 juil. 2005, 14:45
par rami
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? ;)

Posté : 31 juil. 2005, 14:55
par Cyrano
Pour éviter ce cas, on utilisera un autre champ et l'utilisateur devra choisir un pseudonyme.

Enfin voyons, soyez donc un peu logique :-k

Posté : 31 juil. 2005, 15:03
par grusgrus

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]