> Tous les forumsForum des Webmasters

 Récuperer donnes dans Bdd d'un inscrit
Statut du sujet : NON RESOLU Imprimer
 BxG
  Posté le 21/09/2008 @ 14:43  
 Astucien

1335 Messages

Bonjour a tous amis astuciens,

Je suis un peu en galère la, j'essaye d'afficher les données ( qui proviennent d'une bdd ) d'un membre inscrit, or je n'arrive pas a trouver la syntaxe ou le moyen d'y parvenir.

<?php session_start();

$log = $_SESSION['login'] ;
echo $log;

$base = mysql_connect("localhost", "root", ""); // connexion bdd
mysql_select_db("projet", $base); // connexion bdd


$reponse = mysql_query('SELECT * FROM membre where login = "$log"'); // Requête SQL
$donnees = mysql_fetch_array($reponse);

...

<?php echo $donnees['nom']; ?>

____________________________________________________________________________________

Et la bein il ne m'affiche rien du tout, alors que si je met le nomde l'utilisateur dans la requéte sql tout fonctionne.

 Afficher le profil de BxGEnvoyer un message privé à BxG
 
 
Publicité
 Malcolm  Posté le 21/09/2008 à 14:53  
  Astucien


7297 Messages

Je pense que c'est une mauvaise idée de passer par ça. ça t'oblige à traiter les caractères spéciaux, etc. Ce qui n'est pas toujours facile (sans parler de ta requête SQL qui n'est pas "bien" écrite)

Fais le en plusieurs étapes :

$log = $_SESSION['login'] ;
echo $log;

est-ce que ça s'affiche bien ?

$req = "SELECT * FROM membre WHERE login='".$log."';";

$reponse = mysql_query($req) or die($req."<br>".mysql_error());

Est-ce qu'il affiche une erreur ?

si pas d'erreur :

$donnees = array();

if (mysql_num_rows($reponse) == 1)

$donnees = msql_fetch_array($reponse);

echo 'NOM : '. $donnes['nom'] .'<br>';

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 BxG  Posté le 21/09/2008 à 15:12  
Astucien

1335 Messages

$log = $_SESSION['login'] ;
echo $log;

Oui cela s'affiche correctement.

$req = "SELECT * FROM membre WHERE login='".$log."';";

$reponse = mysql_query($req) or die($req."<br>".mysql_error());

Non pas d'erreur, et cela fonctionne : )

if (mysql_num_rows($reponse) == 1)

A quoi sert cette ligne ?

Afficher le profil de BxGEnvoyer un message privé à BxG
  Revenir en haut de la page
 Malcolm  Posté le 21/09/2008 à 18:27  
  Astucien


7297 Messages

S'il y a une ligne dans la réponse MySQL (dataset).

S'il y a plus d'une ligne, c'est que 2 personnes peuvent avoir le même login ... Et je pense qu'il serait temps dans un te:l cas de remettre en cause la conception de ton appli

Que vaut réellement $_SESSION['login'] ? N'as-tu pas le souci d'entités HTML, de caractères échappés ?

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 BxG  Posté le 22/09/2008 à 09:03  
Astucien

1335 Messages

Alors si je comprends bien, le fait de compter les lignesme renseinge sur le nombre d'entrée qui corresponde a ma recherche ? et dans ce cas si plusieurs utilisateurs ont le méme login ( ce qui est impossible bien sur XD ), mysql_num_rows($reponse) vaudra le nombre de lignes c'est ça ? ou il vaudra 0 ?

$_SESSION['login'] vaut le login de l'inscrit, enfin je ne comprends pas trop ta question, et qu'entends tu par " N'as-tu pas le souci d'entités HTML, de caractères échappés ? "

Afficher le profil de BxGEnvoyer un message privé à BxG
  Revenir en haut de la page
 Malcolm  Posté le 22/09/2008 à 15:09  
  Astucien


7297 Messages

mysql_num_rows retourne le nombre d'enregistrement retournés par une requête SELECT. Si ton SELECT retourne 1 enregistrement, mysql_num_rows($dataset) vaudra 1 (entier numérique). Si ton SELECT retourne 12345 enregistrements, mysql_num_rows($dataset) vaudra 12345.

mysql_num_rows(...) est toujours supérieur ou égal à zéro.

Si plusieurs personnes ont le même login, bin il retournera le nombre de logins qui se "chevauchent".

Concernant les entités : le fait que tu copies direct dans phpmyadmin la requête avec le bon login et que ça marche peut être une question de caractères accentués etc.

par exemple si ton login est Dédé, il sera affiché Dédé mais dans le code source, il peut soit être Dédé, soit D&eacute;d&eacute;

Auquel cas lorsque tu fais ton SELECt, il SELECT WHERE login='D&eacute;d&eacute;' ce qui peut expliquer, si ta BDD dontient "Dédé" que rien ne soit retourné.

Tu travailles en quel charset aussi ? UTF-8 ou ISO-8859-1(5) ? Dans ta base, et dans ton fichier.

Parce que le "é" en UTF-8 et le "é" en ISO ne sont "pas les mêmes".

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page