condition très simple mais qui ne fonctionne pas

Petit nouveau ! | 3 Messages

16 août 2008, 09:20

bonjour à tous.

Débutant le php, je me confronte souvent à quelques problèmes épineux comme beaucoup je pense.
En voici un qui m'est insoluble et qui pourtant doit être d'une grande stupidité :roll:
Pouvez vous m'aidez svp?

le problème est le suivant:

j'ai une base de données mysql dans laquelle 2 champs existent, un champs titre et un champs url_commentaire.
je récupère les url de sujets crées sur un forum et les inclus dans ma base de données, dans les champs url_commentaire.

Je fais ensuite le code suivant:
<?php

	if($infosjeu['url_commentaire']!=' ')
					{
					echo
					'<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire</a>'
					;}
						
	else
					{
					echo '<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire</a>'
					;}
	?>	

comme vous le voyez, si une url est inscrite j'affiche un lien vers le sujet déjà crée, sinon ce lien mène vers la page de création de sujet du forum.

mais la partie contenue dans le else n'est jamais activée :shock:
j'ai vérifié ma base de données, essayé avec else if, essayé d'inverser les conditions etc mais rien ni fait!
Je suis sur free et rien ne se passe ni sur firefox ni sur ie7.

merci d'avance pour vos solutions.

ViPHP
ViPHP | 2291 Messages

16 août 2008, 13:36

Salut

Exxaye comme ceci peut-être :?:
<?php



    if($infosjeu['url_commentaire']!="")
                    {
                    echo
                    '<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire01</a>'
                    ;}

    else
                    {
                    echo '<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire02</a>'
                    ;}
    ?>
Chez moi cela fonctionne

Eléphant du PHP | 424 Messages

16 août 2008, 16:13

Moi je fais plus simple :
<?php 
if ($infosjeu['url_commentaire'] !="")
echo "<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire01</a>"
else
 echo "<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire02</a>"    ?>
Modifié en dernier par Dom! le 17 août 2008, 11:26, modifié 1 fois.
Youpi Youpi Yo !

ViPHP
ViPHP | 2291 Messages

16 août 2008, 17:57

Moi je fais plus simple :
<?php 
if ($infosjeu['url_commentaire'] != "")
echo "<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire01</a>"
else
 echo "<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire02</a>"    ?>
A part les erreurs que tu rajoute, dit nous ou est ta simplicité stp :twisted:

ViPHP
AB
ViPHP | 5818 Messages

16 août 2008, 19:27

...
Je fais ensuite le code suivant:
<?php

	if($infosjeu['url_commentaire']!=' ')
					{
					echo
					'<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire</a>'
					;}
						
	else
					{
					echo '<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire</a>'
					;}
	?>	

comme vous le voyez, si une url est inscrite j'affiche un lien vers le sujet déjà crée, sinon ce lien mène vers la page de création de sujet du forum.

mais la partie contenue dans le else n'est jamais activée :shock:

merci d'avance pour vos solutions.
Ben si tu n'arrive jamais dans le else c'est sans doute que la première condition if($infosjeu['url_commentaire']!=' ') est toujours vérifiée :wink: sûrement de ce côté là qu'il faut chercher.
A part ça aucun message d'erreur généré par php ?

Petit nouveau ! | 3 Messages

16 août 2008, 20:29

Salut

Exxaye comme ceci peut-être :?:
<?php



    if($infosjeu['url_commentaire']!="")
                    {
                    echo
                    '<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire01</a>'
                    ;}

    else
                    {
                    echo '<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire02</a>'
                    ;}
    ?>
Chez moi cela fonctionne

merci infiniment!
c'était si simple mais pourriez vous m'expliquer pourquoi une si infime différence rend le code valide?!
parce que j'ai déjà fais des conditions et c'est la 1ere fois que je vois ça!
il y à des "interférences" avec des affichages similaires?

merci à tout les autres aussi en tout cas :D

ViPHP
ViPHP | 2291 Messages

16 août 2008, 22:30

Salut,
J'ai simplement enlever l'espace que tu avais laisser :wink:
if($infosjeu['url_commentaire']!=' ') 
est devenu
if($infosjeu['url_commentaire']!='') 
Tu lui demandait une condition différente d'une espace vide :idea: ce qui ne veut pas dire la même chose que pas de donnée

ViPHP
ViPHP | 1996 Messages

16 août 2008, 22:43

Vu qu'AB est dans le coin...

On n'aurait pas pu utiliser
if(empty($infosjeu['url_commentaire']))
Ce qui aurait pu éviter les erreurs de "" ou " "...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 2291 Messages

16 août 2008, 23:34

Vu qu'AB est dans le coin...

On n'aurait pas pu utiliser
if(empty($infosjeu['url_commentaire']))
Ce qui aurait pu éviter les erreurs de "" ou " "...
Effectivement empty détermine simplement si variable contient une valeur ou pas

ViPHP
AB
ViPHP | 5818 Messages

17 août 2008, 05:48

Vu qu'AB est dans le coin...

On n'aurait pas pu utiliser
if(empty($infosjeu['url_commentaire']))
Ce qui aurait pu éviter les erreurs de "" ou " "...
Effectivement empty détermine simplement si variable contient une valeur ou pas
Dans le contexte plus haut :
1/
if($infosjeu['url_commentaire'] != '')
pour avoir une équivalence plus restrictive, il aurait fallu écrire :
2/
if(!empty($infosjeu['url_commentaire']))
La première condition est vraie pour toutes les valeurs différentes de rien ('').
La numéro 2 est vraie pour toutes les valeurs différentes de rien ('') et différentes de 0

Attention donc quand vous utilisez empty ou son inverse !empty. C'est très pratique mais il faut faire gaffe au cas particulier de la valeur 0

Eléphant du PHP | 424 Messages

17 août 2008, 11:25

Dunbar pourquoi dis tu que j'affiche les erreurs !? le code que j'ai marqué fonctionne parfaitement !
Youpi Youpi Yo !

Petit nouveau ! | 3 Messages

17 août 2008, 22:52

Salut,
J'ai simplement enlever l'espace que tu avais laisser :wink:
if($infosjeu['url_commentaire']!=' ') 
est devenu
if($infosjeu['url_commentaire']!='') 
Tu lui demandait une condition différente d'une espace vide :idea: ce qui ne veut pas dire la même chose que pas de donnée
merci bcp :wink:
on est moins idiot chaque jour qui passe :lol:

ViPHP
AB
ViPHP | 5818 Messages

17 août 2008, 23:51

Quand c'est résolu on a l'habitude de cliquer sur le bouton "résolu" qui se situe en haut de ta page. ça aide les personnes à savoir que le sujet contient la réponse.
A bientôt :wink:

ViPHP
ViPHP | 2291 Messages

18 août 2008, 13:14

Dunbar pourquoi dis tu que j'affiche les erreurs !? le code que j'ai marqué fonctionne parfaitement !
Parce que le bout de code comme tu le donne ne sais pas fonctionner
<?php  
if ($infosjeu['url_commentaire'] !="") 
echo "<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire01</a>" 
else 
 echo "<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire02</a>"    ?> 

ViPHP
AB
ViPHP | 5818 Messages

18 août 2008, 23:19

Ben oui Dom!

C'est pas terrible quand le code est en orange, ça ressemble à des commentaires, non ?
et puis même ta première condition est mal codée et il manquait un point virgule.

Si tu tiens à utiliser des doubles cotes il aurait fallu écrire
if ($infosjeu['url_commentaire'] !="") 
echo "<a href=\"".$infosjeu['url_commentaire']."\">Laisser un commentaire01</a>";
else 
echo "<a href=\"http://truc.heberg-forum.net/post_newtopic_62.html\">Laisser un commentaire02</a>";
?> 
Mais il est souvent beaucoup plus simple d'utiliser les simples quotes comme le code initial
<?php
if($infosjeu['url_commentaire'] != '')
echo '<a href="'.$infosjeu['url_commentaire'].'">Laisser un commentaire</a>';
else
echo '<a href="http://truc.heberg-forum.net/post_newtopic_62.html">Laisser un commentaire</a>';
 ?> 
Maintenant si par "plus simple" tu voulais dire que pour des conditions simples on peut se passer d'accolades ouvrantes et fermantes {... ;} on est d'accord;
Juste le pb est que pour le reste les doubles quotes sont souvent moins faciles à formater, et tu en as donné la preuve :wink:

Bon je crois qu'on peut considérer le sujet comme résolu maintenant vu que son auteur l'a déclaré ainsi.