Probleme Php et condition if

Fermé
Tydher Messages postés 123 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 17 mai 2011 - 8 juin 2009 à 11:19
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 - 8 juin 2009 à 11:33
Bonjour,
J'ai un gros probleme sur des conditions.
Sur une page j'affiche les données d'un contact et d'une entreprise.
Quand je clique sur suppression du contact il me le supprime
J'actualise la page et j'ai des conditions :
Si le resultat de la requete ne renvoi rien alors les données contact ne s'affiche pas (en gros pas de tableau)
sinon il me l'affiche
Le probleme c'est que le code parcourt toute les conditions

$req9 = mysql_query($sql8) or die("erreur de connexion 9".mysql_error());

if (is_null($sql8))
{
$test = 'NULL';
}
else
{
$test = 'PAS NULL';
}

if ($test = 'NULL')
{
$req = mysql_query($sql) or die("erreur de connexion 1".mysql_error());
$req2 = mysql_query($sql2) or die("erreur de connexion 2".mysql_error());
$req3 = mysql_query($sql3) or die("erreur de connexion 3".mysql_error());
$req4 = mysql_query($sql4) or die("erreur de connexion 4".mysql_error());
$req5 = mysql_query($sql5) or die("erreur de connexion 5".mysql_error());
$req6 = mysql_query($sql6) or die("erreur de connexion 6".mysql_error());
$req7 = mysql_query($sql7) or die("erreur de connexion 7".mysql_error());

$req8 = mysql_query($sql0) or die("erreur de connexion 8".mysql_error());

//On utilise mysql_result car il n'y a qu'un seul resultat numerique possible.
$result = mysql_result($req8,0) or die("erreur de connexion 8".mysql_error());
$resultat ='1';
}

if ($test = 'PAS NULL')
{
$req = mysql_query($sql) or die("erreur de connexion 1".mysql_error());
$req2 = mysql_query($sql2) or die("erreur de connexion 2".mysql_error());
$req3 = mysql_query($sql3) or die("erreur de connexion 3".mysql_error());
$req4 = mysql_query($sql4) or die("erreur de connexion 4".mysql_error());
$req5 = mysql_query($sql5) or die("erreur de connexion 5".mysql_error());
$req6 = mysql_query($sql6) or die("erreur de connexion 6".mysql_error());
$req7 = mysql_query($sql7) or die("erreur de connexion 7".mysql_error());

$req8 = mysql_query($sql0) or die("erreur de connexion 8".mysql_error());

//On utilise mysql_result car il n'y a qu'un seul resultat numerique possible.
$result = mysql_result($req8,0) or die("erreur de connexion 8".mysql_error());
$resultat = mysql_result($req9,0) or die("erreur de connexion 9".mysql_error());
}

avec un echo $test et $resultat il m'affiche
PAS NULL 61 (61 = id du contact)

Si j'inverse les conditions :

$req9 = mysql_query($sql8) or die("erreur de connexion 9".mysql_error());

if (is_null($sql8))
{
$test = 'NULL';
}
else
{
$test = 'PAS NULL';
}


if ($test = 'PAS NULL')
{
$req = mysql_query($sql) or die("erreur de connexion 1".mysql_error());
$req2 = mysql_query($sql2) or die("erreur de connexion 2".mysql_error());
$req3 = mysql_query($sql3) or die("erreur de connexion 3".mysql_error());
$req4 = mysql_query($sql4) or die("erreur de connexion 4".mysql_error());
$req5 = mysql_query($sql5) or die("erreur de connexion 5".mysql_error());
$req6 = mysql_query($sql6) or die("erreur de connexion 6".mysql_error());
$req7 = mysql_query($sql7) or die("erreur de connexion 7".mysql_error());

$req8 = mysql_query($sql0) or die("erreur de connexion 8".mysql_error());

//On utilise mysql_result car il n'y a qu'un seul resultat numerique possible.
$result = mysql_result($req8,0) or die("erreur de connexion 8".mysql_error());
$resultat = mysql_result($req9,0) or die("erreur de connexion 9".mysql_error());
}

if ($test = 'NULL')
{
$req = mysql_query($sql) or die("erreur de connexion 1".mysql_error());
$req2 = mysql_query($sql2) or die("erreur de connexion 2".mysql_error());
$req3 = mysql_query($sql3) or die("erreur de connexion 3".mysql_error());
$req4 = mysql_query($sql4) or die("erreur de connexion 4".mysql_error());
$req5 = mysql_query($sql5) or die("erreur de connexion 5".mysql_error());
$req6 = mysql_query($sql6) or die("erreur de connexion 6".mysql_error());
$req7 = mysql_query($sql7) or die("erreur de connexion 7".mysql_error());

$req8 = mysql_query($sql0) or die("erreur de connexion 8".mysql_error());

//On utilise mysql_result car il n'y a qu'un seul resultat numerique possible.
$result = mysql_result($req8,0) or die("erreur de connexion 8".mysql_error());
$resultat ='1';
}

j'ai NULL 1

JE ne comprend pas
A voir également:

2 réponses

easycomp Messages postés 86 Date d'inscription samedi 6 juin 2009 Statut Membre Dernière intervention 4 juillet 2009 30
8 juin 2009 à 11:25
Salut,

Normal pour tes tests tu utilise l'opérateur d'affectation (=) au lieu de l'opérateur de comparaison (==) :)
De plus tu écris:
if (is_null($sql8))
Qui ne sera jamais null puisque c'est ta requête et pas le retour de ta requête.
Ce serait plutôt
if(is_null($req9))
Ou encore mieux
if(mysql_num_rows($req9) == 0)

Bon courage.
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
8 juin 2009 à 11:33
Houlala, c'est un peu bricolé tout ça, hein ? ^^
Le principal problème est que la comparaison n'est pas = mais ==
Donc ça c'est à la limite pas bien violent à corriger, mais le reste je trouve ça pas très propre.

En réaction à ça : is_null($sql8)
au lieu de tester ça regarde plutôt ce qu'a renvoyé mysql ( if(mysql_num_rows($req8)>0) ), parce que si jamais ta requête n'est pas nulle mais qu'elle ne renvoie aucun n-uplet, tu va rentrer dans le if quand-même.

Ensuite, n'utilise pas 'NULL' et 'PAS NULL'. C'est comme si tu utilisais $nom='JEAN-PIERRE' ou 'PAULETTE', ça marche aussi mais c'est pas vraiment parlant, utilise plutôt un booléen : $requete_valide=TRUE ou FALSE

Ensuite, je ne vois pas l'intérêt de tester $test='NULL' ou 'PAS NULL' puisque tu fais la même chose à l'intérieur. Si c'est parce que tu n'as pas fini d'écrire ton code, pense à sortir le code commun aux deux conditions. D'ailleurs plutôt que deux if() ce serait plutôt ici un if() else ou if() elseif()

EDIT : Donc c'est une redite :)
0