MySQL, vérifier dans 2 tables

Ju
Petit nouveau ! | 9 Messages

02 mai 2005, 19:18

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

Mammouth du PHP | 19672 Messages

02 mai 2005, 19:31

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

02 mai 2005, 19:31

Ç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 !... :evil:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

02 mai 2005, 19:33

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. :langue:

Mammouth du PHP | 19672 Messages

02 mai 2005, 19:35

C'est pas pour être désagréable, mais je comprends moins bien l'explication que le code. :langue:
Pas grave albat, je te ferai une explication de texte quand tu seras grand :langue:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

02 mai 2005, 19:52

Tu as raison.
D'ici là, j'aurai peut-être appris à lire ! :lol:

Eléphant du PHP | 84 Messages

02 mai 2005, 20:24

je suis pas le seul a ne pas bien connetre le francai ^^

Ju
Petit nouveau ! | 9 Messages

03 mai 2005, 14:48

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.
Modifié en dernier par Ju le 03 mai 2005, 15:14, modifié 1 fois.

Mammouth du PHP | 19672 Messages

03 mai 2005, 14:52

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Ju
Petit nouveau ! | 9 Messages

03 mai 2005, 14:58

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 )

Mammouth du PHP | 19672 Messages

03 mai 2005, 15:04

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Ju
Petit nouveau ! | 9 Messages

03 mai 2005, 15:08

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 
   {
Modifié en dernier par Ju le 03 mai 2005, 15:15, modifié 2 fois.

Mammouth du PHP | 19672 Messages

03 mai 2005, 15:10

Active donc les bbCodes quand tu fais un message

Vérifie que les types de champ sont les mêmes dans les deux tables
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Ju
Petit nouveau ! | 9 Messages

03 mai 2005, 15:14

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 :?

Mammouth du PHP | 19672 Messages

03 mai 2005, 15:30

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... ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: