Page 1 sur 2
MySQL, vérifier dans 2 tables
Posté : 02 mai 2005, 19:18
par Ju
Bonjour
J'ai une requete du style
[php]$sql = "SELECT pass FROM table WHERE login='$login'";[/php]
j'aimerais vérifier dans 2 table en même temp , selectionner table et table2 dans la même requete, c'est possible ?
Merci
Posté : 02 mai 2005, 19:31
par Cyrano
Bien sur, il suffit de faire une jointure:
Code : Tout sélectionner
SELECT table1.champ1, table1.champ2, table2.champ1
FROM tabase
WHERE table1.champ1 = table2.champ1
Ce qui en clair veut dire : on cherche les champs 1 et 2 de la table un et le champ 1 de la table 2 à condition que le champ 1 de la table 1 ait la même valeur que le champ 1 de la table 2.
Re: MySQL, vérifier dans 2 tables
Posté : 02 mai 2005, 19:31
par albat
Ça dépend de la structure de tes tables et du modèle de ta base.
S'il y a une jointure entre tes tables, c'est possible.
Sinon, tu vas nous faire un joli produit cartésien !...

Posté : 02 mai 2005, 19:33
par albat
Code : Tout sélectionner
SELECT table1.champ1, table1.champ2, table2.champ1
FROM tabase
WHERE table1.champ1 = table2.champ1
Ce qui en clair veut dire : on cherche les champs 1 et 2 de la table un et le champ 1 de la table 2 à condition que le champ 1 de la table 1 ait la même valeur que le champ 1 de la table 2.
C'est pas pour être désagréable, mais je comprends moins bien l'explication que le code.

Posté : 02 mai 2005, 19:35
par Cyrano
C'est pas pour être désagréable, mais je comprends moins bien l'explication que le code.

Pas grave
albat, je te ferai une explication de texte quand tu seras grand

Posté : 02 mai 2005, 19:52
par albat
Tu as raison.
D'ici là, j'aurai peut-être appris à lire !

Posté : 02 mai 2005, 20:24
par jojo
je suis pas le seul a ne pas bien connetre le francai ^^
Posté : 03 mai 2005, 14:48
par Ju
Bonjour à tous,
Merci de vos réponses !
Et bien j'ai essayer mais je n'y parviens pas :?
$sql = "SELECT serveur.pass, revendeur.pass FROM MABASE WHERE serveur.login = revendeur.login";
Si je fais ca j'ai le droit a :
Erreur SQL !
SELECT serveur.pass, revendeur.pass FROM hosting_site WHERE serveur.login = revendeur.login
Table 'hosting_site.hosting_site' doesn't exist
Ou est mon erreur ?
Merci d'avance.
Posté : 03 mai 2005, 14:52
par Cyrano
Tu fais deux erreurs :
-1- si tu lisais moins vite, et prenais le temps de comprendre, tu ne ferais pas la seconde;
-2- SELECT ..... FROM matable1, matable2 ... ET pas SELECT .... FROM maBase ...
Relis correctement mon premier post.
Posté : 03 mai 2005, 14:58
par Ju
ok merci !
Mais... Toujours un truc, maintenant il me dis "Mot de passe invalide..."
Alors que l'user et le pass existe bien dans la table 1 ( pas dans la 2, logique puisque je veut verifier dans les 2 et prendre celle qui existe )
Posté : 03 mai 2005, 15:04
par Cyrano
On peut pas deviner : si ton code est correct, c'est que les informations n'existent pas, sinon, c'est que tu as fait une erreur et sans voir le code, personne ne pourra te répondre.
Posté : 03 mai 2005, 15:08
par Ju
L'user existe bien dans la table 1 car si je met le code simple ca fonctionne.
Le code le voici actuellement ( qui me repond que l'utilisateur n'existe pas... )
// Connexion mysql
mysql_connect("localhost","user","password") or die ('connexion failed');
mysql_select_db("mabase") or die ('selection failed');
$sql = "SELECT serveur.pass, revendeur.pass FROM serveur,revendeur WHERE serveur.login = revendeur.login";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_array($req);
if($data['pass'] != $pass)
{
header("Location: index.php?messag=login+et+/+ou+mot+de+passe+incorrect+!");
mysql_close();
exit;
}
else
{
Posté : 03 mai 2005, 15:10
par Cyrano
Active donc les bbCodes quand tu fais un message
Vérifie que les types de champ sont les mêmes dans les deux tables
Posté : 03 mai 2005, 15:14
par Ju
désolé, j'avais pas fais gaffe pour les bbcode :oops:
Je viens de vérifier mes tables, c'est les 2 même, juste le nom change ( serveur et revendeur sinon kiff kiff, j'avais fais un copier/coller de la structure... ) comprend pas donc :?
Posté : 03 mai 2005, 15:30
par Cyrano
Je sais pas: j'ai le sentiment que ta structure de base est curieuse: à quoi ça sert D'avori la même donnée dans deux tables différentes quand une seule suffirait. Un autre truc m'échappe aussi dans ta requeête:
L'utilisateur tape un mot de passe mais on dirait que pour ta requête c'est n'a aucune importance puique tu ne vérifies même pas que ce mot de passe existe dans la base.
Grosso modo : une table avec un champ id_utilisateur, un champ log_utilisateur et un champ mdp_utilisateur; la requête comme suit :
$login = $_POST['login'];
$login = addslashes($login); /* petit ajout de sécurité */
$mdp = $_POST['mdp'];
$sql = SELECT * FROM `utiisateur` WHERE `login` = '". $login ."' AND `passe` = '". $mdp ."';
// etc....
Soit tu as un retour et ça existe et on laisse passer, soit on en a pas et l'utilisateur tente de pénétrer en zone interdite.
Au final : une seule table. Mais bon, comme je sais pas quel genre d'aplication tu fais qui nécessite deux tables... ?