IF

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

par ephemere » 16 mars 2006, 14:25

bon ok je pensais qu'on pouvait faire plus simplement pour obtenir la valeur d'un champs mais apparemment non...
:wink: et merci pour le mode gonzesse ça convient pas mal à mon niveau! :wink:

mysql_fetch_assoc

par rafaelle » 16 mars 2006, 14:14

Bah, tu ne peux avoir la valeur du champ qu'en parcourant (fetch) le tableau constitué par les résultats de ta requête, donc en utilisant mysql_fetch_assoc ou mysql_fetch_array ou mysql_fetch_row, qu'il y ait un ou plusieurs résultats.

<mode gonzesse>En gros je viens de faire mes courses (ma requête), tu peux savoir combien j'ai ramené de sacs (mysql_num_rows), mais pour savoir ce qu'il y a dans les sacs, faut aller voir dedans (mysql_fetch_assoc) :D </mode>

Raf

par ephemere » 16 mars 2006, 12:40

Alors en fait moi je voyai ça comme ça...
Dans le cas ou on trouve un bon login et un bon password, la requête ne trouve qu'un seul résultat Fonction_user. Ce champs peut prendre la valeur 1,2 ou 3.
Donc je voulais simplement étoffer ma condition en disant "si on trouve un seul résultat et que la valeur du champs Fonction_user est égale à 1, alors...."
Bon d'accord ma façon de le formuler était certainement pourrie..
Mais la je comprend pas l'utilité de la fonction mysql_fetch_assoc($req)...

Peu importe maintenant je galère méchamment avec mes redirections de page qui commencent à me prendre la tête...(voir le sujet redirection posté par moi même)

Merci raf :wink:

Re: IF

par rafaelle » 16 mars 2006, 12:13

Bonjour

Contente que ça marche ...

Mon histoire de "logique" : Si mysql_num_rows($req) n'est pas égal à 1, il est donc égal à 0 (le couple user/password n'existe pas) ou à plus que 1 (y'a des doublons dans la base, ce qui est très mal). Dans le premier cas $res['Fonction_user'] n'existe pas, dans le second c'est un tableau (un array). Dans les deux cas tester $res['Fonction_user'] == 1 est une absurdité, et probablement peut te renvoyer un message d'erreur. Si tu testes d'abord que le couple user/password existe et qu'il est unique (donc qu'il y a un résultat et un seul dans ta requête), tu peux parcourir ton résultat sans faire une boucle (le while est inutile) et là c'est logique de tester la valeur du $res['Fonction_user'].

Enfin c'est ma logique à moi, hein ...

Raf :?

par ephemere » 15 mars 2006, 17:07

parmis vos solutions j'ai choisit celle de raphaëlle..qui marche nickel..
j'ai rien compris mais ça marche!

Je comprend pas pourquoi il fallait admettre que je puisse avoir plusieur résultat puisque cette condition "secondaire" n'était censé s'afficher que si UN seul résultat correspondait au login et au password...
Si il ya plusieurs résultats c'est direct "login incorect"....
Bon enfin je suis dans un de ces moments ou j'comprend plus rien à rien...je rentre et je DORS ! ceci dit postez vos explications je relirai tous ça demain matin.
MERCI a tous !
PS: cyrano j'avais pas vu mais 11800 messages...ça commence à faire!! je m'incline! :agenouille: :wink:

Re: IF

par rafaelle » 15 mars 2006, 16:43

Bonjour

Tu dois parcourir (fetch en anglais) les résultats ... Ensuite, tu admets la possibilité qu'il puisse y avoir plusieurs résultats, donc tu dois imbriquer tes ifs, sinon ce serait pas logique
$sql = "SELECT Login_user, Password_user, Fonction_user FROM user WHERE Login_user = '".$login."' AND Password_user = '".$password."'";
$req = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($req) == 1) {
$res=mysql_fetch_assoc($req);
if ($res['Fonction_user'] == 1) {
//ce que tu veux faire
}
}
else {
//là tu as plusieurs résultats, donc tu fais en conséquence
}
Raf

par seinto28 » 15 mars 2006, 16:42

par Cyrano » 15 mars 2006, 16:35

Certainement pas de cette manière, essaye plutôt :
$sql = "SELECT Login_user, Password_user, Fonction_user FROM user WHERE Login_user = '".$login."' AND Password_user = '".$password."'";
$req = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($req) == 1)
{
    while $ligne = mysql_fetch_assoc($req)
    {
        if($ligne["Fonction_user"] == 1)
        {
            //.... etc...

IF

par ephemere » 15 mars 2006, 16:32

bon je sais j'ai déjà posté ce message à la fin d'un autre sujet mais apparemment personne ne le remarque:
$sql = "SELECT Login_user, Password_user, Fonction_user FROM user WHERE Login_user = '".$login."' AND Password_user = '".$password."'";
$req = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($req) == 1 and "Fonction_user" == 1)
la condition ne se remplit jamais...je me demande donc si j'ai le droit d'inclure la valeur d'un champ dans une condition comme j'ai essayé de le faire ici...qu'en pensez vous?