[PHP] Problème bête avec if()

WRInaute discret
Bonjour,

J'explique la situation tout d'abord :

Je souhaite afficher une image pour mon concours si deux conditions sont remplies :
- Qu'il existe le concours correspondant
- Que l'on ne soit pas mercredi (le concours étant actif tout les reste de la semaine)

Voilà mon code qui ne fonctionne pas (erreur : mysql_result() : supplied argument is not a valid MySQL result ressource in ... on line 93) :

Code:
// On est déjà connecté à la base de données

$dbtable = "concours";

// On vérifie qu'il existe un concours activé

$req = "SELECT mk_debut FROM $dbtable WHERE actif='1'";
$res = mysql_query($req);
$mk_debut = mysql_result($res,$i,"mk_debut");

// Si on n'est pas un mercredi (3ème jour de la semaine, dimanche = 0), on affiche le concours :)

if(date("w",time()) != 3 OR mk_debut != ""){

// Affichage du concours

}

J'explique ma démarche : je cherche dans la base données dans la table concours, s'il existe un concours qui possède la valeur 1 pour le champs actif. Si il existe un résultat pour ma requête le champs $mk_debut ne sera pas vide.

Je sais que c'est un peu tordu mais je n'ai pas trouvé d'autres solutions et sachant que ce code génère donc une erreur je fais appel à vos connaissances PHP :P

Merci d'avance pour tous ceux qui m'aideront ! :wink:

NB : La condition par rapport au jour marche et n'a pas besoin d'être remis en question (j'en ai fait le test ;)).
 
A
Albert1
Guest
pourquoi tu ne fais pas ta condition par rapport au jour avant de faire la requête ?
ça ne serait pas plus logique ? (et plus économique)
 
WRInaute accro
(soit il y a un problème de connexion à la base mais on ne peut pas le voir car on n'a pas le code)
(soit il y a un problème d'orthographe des champs ou de la table)
soit, mysql_result recevant $res, $res ne retourne pas de résultat ou renvoit une erreur, mais auquel cas on devrait recevoir un "false" plutôt qu'une erreur...
hum...

ps : je me demandais : quel est le type du champ "active" ?
 
WRInaute discret
Je relisais mon code en même temps et effectivement j'ai fais une erreur bête j'avais écris active au lieu de actif.

La condition marche lorsqu'il y a un concours avec le champ actif=1, mais il y a une nouvelle erreur lorsqu'il n'y en a pas :
Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 8 in (...)membres.php on line 92

Comment éviter cette erreur lorsque la requête ne retourne aucun résultat ?

Merci pour vos réponses très rapides pour cette heure-ci :wink:


EDIT : Type du champ actif : char(1)
 
WRInaute discret
Ça serait pas un AND au lieu d'un OR dans ta condition ? Parce que la si on est pas mercredi et que le résultat SQL est vide, ça exécutera quand même.
 
WRInaute accro
$res = @mysql_query($req);
$mk_debut = @mysql_result($res,$i,"mk_debut");

evitera l'affichage du message d'erreur, ce qui ne te dispensera pas de traiter le cas 0 resultat quand même
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut