Bonjour,
J'ai une dB mysqld avec 2 tables: users(id, username, password, email, active) ,et, confirm(id, userid,key,email).
La page d'acceuil (index.php) envoit un email avec le username et un lien key codé vers le site. Cela fonctionne.
Mais sur la page de retour 'confirm.php', à la place de:
<?php echo "Welcome1 '{$confirm_info'userid']}'"; ?> qui m'affiche le numero 133 correspondant à l'utilisateur 133 (correct: table confirm valeur userid), je voudrais afficher le nom de l'utilisateur (table users valeur username). NB: confirm.id = users.id (meme valeur).
PS: il faut sur base de confirm.id retrouver la valeur correspondante 'username' dans users sur base de 'id'.
J'ai essayé:
$username_info = mysql_query("SELECT users.username,users.id , confirm.userid WHERE '$users.id' = '$confirm_info[userid]' LIMIT 1") or die(mysql_error());
avec
<?php
echo "Welcome '$username_info'";?>
Sans succès...
Mercis beaucoup Xtr3me :
j'ai remplacé 'reponse' par le nom de ma query et ca marche avec
<?php
while($resultat = mysql_fetch_assoc($users_info))
{ print_r($resulat);
echo $resultat'username'];
}?>
Bonjour,
c'est normal fait
<pre>
<?php var_dump($username_info) ;?>
</pre>
tu comprendras mieux ce qu'il se passe.
Merci Antho07 pour la réponse, mais ca ne fonctionne pas.
Notice: Undefined variable: users in /var/www/vhosts/miam.biz/httpdocs/confirm.php on line 62 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE '.id' = '143' LIMIT 1' at line 1
Line 62 =
$username_info = mysql_query("SELECT users.username,users.id , confirm.userid WHERE '$users.id' = '$confirm_info[userid]' LIMIT 1") or die(mysql_error());
puis j'ai rajouté ton code:
<pre>
<?php var_dump($username_info) ;?>
</pre>
en lieu et place de la ligne 62 j'ai aussi essayer sans succés:
$users_info = mysql_query("SELECT 'username' FROM users
WHERE id
= '$confirm_info[userid]' LIMIT 1") or die(mysql_error());
$username_info = mysql_query("SELECT users.username,users.id , confirm.userid WHERE '$users.id' = '$confirm_info[userid]' LIMIT 1") or die(mysql_error());
Tu précises pas la table là ...
et aussi:
$users_info = mysql_query("SELECT users.id, users.username FROM users INNER JOIN confirm ON users.id = confirm.userid WHERE email
= '$email' AND key
= '$key' LIMIT 1") or die(mysql_error());
semble presque fonctionner, mais erreur: Column 'email' in where clause is ambiguous
Tu as fait une jointure et dans les deux tables il y a un champ portant le même nom qui est celui de l'email comme tu n'indiques pas dans quelle table tu veux vérifier la condition de l'email tu reçois une erreur d'ambiguïté.
Il faut donc préciser la table et donc remplacer email par users.email par exemple.
Merci pour vos réponses. Structure 2 tables: users(id, username, password, email, active) ,et, confirm(id, userid,key,email).
Xtr3me, j'ai essayé de changer par users.email, mais je me suis viandé:
$users_info = mysql_query("SELECT users.id, users.username FROM users INNER JOIN confirm ON users.id = confirm.userid WHERE users.email
= '$email' AND key
= '$key' LIMIT 1") or die(mysql_error());
ou
$users_info = mysql_query("SELECT users.id, users.username FROM users INNER JOIN confirm ON users.id = confirm.userid WHERE email
= '$users.email' AND key
= '$key' LIMIT 1") or die(mysql_error());
pareil, erreur = Unknown column 'users.email' in 'where clause'
J ai essayé ceci aussi (sans succes):
$users_info = mysql_query("SELECT users.id, users.username, users.email FROM users INNER JOIN confirm ON users.id = confirm.userid WHERE email
= '$email' AND key
= '$key' LIMIT 1") or die(mysql_error());
Dernier essai (pas d'erreur mais pas d'extraction du 'username') :
$users_info = mysql_query("SELECT users.id, users.username FROM users INNER JOIN confirm ON users.id = confirm.userid WHERE users.id = confirm.userid LIMIT 1") or die(mysql_error());
Merci Xtr3me, j'ai retiré le WHERE (et ce qui suivait), mais j'ai l'erreur: Resource id #7'Resource id #7
Laisse le limit et ce n'est pas une erreur mais le fait que tu essayes d'afficher directement le résultat.
Le echo tu le mets dans une boucle ainsi:
while($resultat = mysql_fetch_assoc($reponse))
{ print_r($resulat);
echo $resultat'username'];
}
Postes-moi le résultat ici.
C'est bien ce que je disais donc ;) .
MYSQL de base tu récupérais le retour de MySQL hors il te fallait l'avoir sous forme de tableau à l'aide la fonction MySQL_fetch_assoc.
Tu peux supprimer le
print_r($resulat);
c'était simplement pour débogger et voir ce que contenait le tableau.
En effet j'ai oublié de remplacer le $reponse par le retour de ta requête ça arrive ;) .
Après tu peux créer une Session dans laquelle tu mettras les informations liées à l'utilisateur et tu pourras y faire appel quand tu le souhaites n'importe où sur le site par exemple.