Probleme Php et condition if

Tydher Messages postés 123 Date d'inscription   Statut Membre Dernière intervention   -  
Yoan Messages postés 11795 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Membre Dernière intervention   30
 
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   Statut Modérateur Dernière intervention   2 331
 
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