MySQL, vérifier dans 2 tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : MySQL, vérifier dans 2 tables

par Ju » 03 mai 2005, 15:58

Et pourquoi pas une table accès avec les login et mot de passe avec la clé primaire que tu retrouverais en clé étrangère dans la table client et dans la table revendeur ?? Comme ça tu ne vérifies que sur une seule table.
J'ai pas très bien saisi là :?
Tu aimes ça te compliquer la vie ? ;)
C'est quand on complique qu'on apprend plus de chose :P

Merci en tout cas de tes réponses :)

par Cyrano » 03 mai 2005, 15:53

Et pourquoi pas une table accès avec les login et mot de passe avec la clé primaire que tu retrouverais en clé étrangère dans la table client et dans la table revendeur ?? Comme ça tu ne vérifies que sur une seule table.

Tu aimes ça te compliquer la vie ? ;)

par Ju » 03 mai 2005, 15:44

c'est en fait 2 espace membre séparé, 1 coté client, 1 coté revendeur

et j'ai un formulaire pour se connecter a un forum, et avec ce formulaire je veut verifier dans les 2 tables.

C'est peut etre plus clair la? :)

par Cyrano » 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... ?

par Ju » 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 :?

par Cyrano » 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

par Ju » 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 
   {

par Cyrano » 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.

par Ju » 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 )

par Cyrano » 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.

par Ju » 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.

par jojo » 02 mai 2005, 20:24

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

par albat » 02 mai 2005, 19:52

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

par Cyrano » 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:

par albat » 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: