Problème PHP if..else

Résolu
nab13 Messages postés 57 Statut Membre -  
nab13 Messages postés 57 Statut Membre -
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.
Configuration: Windows Vista
Firefox 2.0.0.14

13 réponses

  1. nabla
     
    pour afficher une ligne vierger, afficher <br /> c est le code de retour a la ligne en HTML
    0
  2. Remad Messages postés 1694 Statut Membre 720
     
    Le mieux serait de faire
    $zero="0,0 €";
    if ($tab2[$i]==$zero)
    then
    {
    echo " ";
    }
    else
    {
    echo "$tab2[$i]";
    }
    0
  3. nab13 Messages postés 57 Statut Membre 12
     
    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
  4. Chris-vip
     
    Bah enlève le then ! C'est pas du PHP là, et en plus ça a rien à voir entre le if et { !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nab13 Messages postés 57 Statut Membre 12
     
    Ben si j'enlève le then je reviens sur mon code de départ qui pose problème
    0
  7. Puzzer Messages postés 1 Statut Membre
     
    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
  8. nab13 Messages postés 57 Statut Membre 12
     
    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
  9. nab13 Messages postés 57 Statut Membre 12
     
    <?
    $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
  10. nab13 Messages postés 57 Statut Membre 12
     
    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
  11. Remad Messages postés 1694 Statut Membre 720
     
    Non en fait le problème est que ton $tab2[$i], tu ne le met pas entre guillemets !!! met "$tab2[$i]"
    0
  12. nab13 Messages postés 57 Statut Membre 12
     
    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
    1. macgawel Messages postés 676 Statut Membre 89
       
      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
  13. Remad Messages postés 1694 Statut Membre 720
     
    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
  14. nab13 Messages postés 57 Statut Membre 12
     
    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