Problème PHP if..else

Résolu/Fermé
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 - 29 mai 2008 à 16:33
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 - 30 mai 2008 à 10:48
Bonjour à tous,
J'ai un petit problème avec un script.
Voila je récupère des données que j'ai stocké dans un tableau et que j'affiche ensuite à la demande. Cela marche très bien mais je voudrais que s'affiche une ligne vierge quand la valeur "0,0 €" apparait.
Enfin je sais pas si je suis très clair mais voici le script en question :

<?
$zero="0,0 €";
if ($tab2[$i]==$zero){echo " ";}
else { echo $tab2[$i];}
?>

j'ai essayé ça aussi :

<?
$zero="0,0 €";
if ($tab2[$i]==$zero){echo "rien";}
else { echo $tab2[$i];}
?>

Le problème vient du fait que même si $tab2[$i]==$zero, cela m'affiche $tab2[$i].
De plus j'ai bien vérifié que dans mon tableau, cela soit la 0.0 € qui apparait et pas 0.0 ou 0 € ou 0.0€.....

J'espère avoir été suffisamment clair.
Merci d'avance pour vos réponses et votre aide.
A voir également:

13 réponses

pour afficher une ligne vierger, afficher <br /> c est le code de retour a la ligne en HTML
0
Remad Messages postés 1662 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 27 juillet 2012 680
29 mai 2008 à 16:35
Le mieux serait de faire
$zero="0,0 €";
if ($tab2[$i]==$zero)
then
{
echo " ";
}
else
{
echo "$tab2[$i]";
}
0
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
29 mai 2008 à 16:45
Wouhou quelle rapidité !!!!
Merci de ta réponse mais je viens de tester et ça marche pas.
En fait cela me met une erreur au niveau du "then" qui n'a pas l'air d'être du PHP.
0
Bah enlève le then ! C'est pas du PHP là, et en plus ça a rien à voir entre le if et { !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
29 mai 2008 à 16:56
Ben si j'enlève le then je reviens sur mon code de départ qui pose problème
0
Puzzer Messages postés 1 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 29 mai 2008
29 mai 2008 à 17:10
Si les valeurs de ton tableau sont des réels, ce qui est probable, essaie:

<?
$zero=0.0;
if ($tab2[$i]=$zero)
{
echo "";
}else{
echo $tab2[$i]."€<br>";
}
?>


- Pas de "=="
- "<br>" = retour à la ligne
0
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
29 mai 2008 à 17:21
En fait je vais reprendre un peu mon problème car j'ai eu du mal à m'expliquer...
Le script m'affiche bien les valeurs du tableau même si la condition if ($tab2[$i]==$zero) et c'est ça le problème. Sur ma page j'ai plein de 0.0 € alors que je voudrais des vides.
Au début mon code ressemblait à ça :

<?
if ($tab2[$i]=="0.0 €"){echo " ";}
else { echo $tab2[$i];}
?>

mais cela ne marchait pas non plus
0
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
29 mai 2008 à 17:26
<?
$zero="0,0 €";
if ($tab2[$i]==$zero){echo "qq chose ";}
else { echo $tab2[$i];}
?>

ne marche pas non plus
c est toujours $tab2[$i] qui s affiche
0
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
29 mai 2008 à 17:29
Voici mon code complet au cas ou

<?
$cat=$_GET['cat'];
$tab = array();
$tab2 = array();
$fichier = file("".$cat.".txt");
$fichier2 = file("p".$cat.".txt");
$fichier3 = file("i".$cat.".txt");
$total = count($fichier);
for($i = 0; $i < $total; $i++)
{
$tab1[$i]=$fichier[$i];
$tab2[$i]=$fichier2[$i];
$tab3[$i]=$fichier3[$i];
}
?>
<table border="1" cellpadding="5px">
<?
for($i = 0; $i < $total; $i++)
{
?>
<tr>
<td>
<?
echo $tab3[$i];
?>
</td>
<td>
<?
echo $tab1[$i];
?>
</td>
<td>
<?
$zero="0,0 €";
$prix=$tab2[$i];
if ($prix==$zero)
{echo "rien";}
else
{echo $prix;}
?>
</td>
</tr>
<?
}
?>
</table>
0
Remad Messages postés 1662 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 27 juillet 2012 680
29 mai 2008 à 18:01
Non en fait le problème est que ton $tab2[$i], tu ne le met pas entre guillemets !!! met "$tab2[$i]"
0
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
29 mai 2008 à 22:10
Même problème.
J' ai essayé de simplifié le script :

<?
if ($tab2[$i]="0,0 €")
{echo "rien";}
else {echo $tab2[$i];}
?>

Mais là il m'écrit tout le long "rien"

Moi je dis chelou tout ça
0
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
30 mai 2008 à 08:47
Là, c'est normal qu'il t'écrive "rien" :
SI (je réussis à AFFECTER "0,0 €" à $tab2[$i]) {...}
Tu teste l'affectation (symbole =) et pas la comparaison (symbole ==)

Pour ton problème :

1. Si c'est possible, mets tes valeurs numériques au format "normal". Tu rajouteras dans ton php les fioritures (la virgule, le €)
2. tu peux essayer de tester si $tab2[$i] converti en nombre est égal à zéro (Au passage, teste si c'est <> de zéro, et tu n'as plus besoin de faire un ELSE) :
if (doubleval($tab2[$i]) <> 0) {
   echo $tab2[$i];
}
0
Remad Messages postés 1662 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 27 juillet 2012 680
30 mai 2008 à 08:31
Est en mettant entre simple cote le $i ??
echo "$tab2['$i']"; ???
Sinon sa veut dire que tu récupère jamais "0,0€" dans "$tab2[$i]".
fait un écho de ce que tu as dedans juste avant ton if. regarde si tu as pas un point a la place de la virgule.
0
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
30 mai 2008 à 10:48
Bon voila j'ai changé de technique et le code donne ça :

<?php
$mon_texte = $tab2[$i];
$texte_clean = trim($mon_texte);

$euro= '€';
$new_texte_clean = ereg_replace('€', $euro, $texte_clean);

if ($new_texte_clean == "0,0") echo " ";
else echo $texte_clean." €";
?>

et ça marche

Merci beaucoup à tous pour vos conseils !
0