Condition if qui ne fonctionne pas !!!

[Résolu]
Signaler
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
-
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
-
Bonjour,

j'ai ma fonction suivante me permettant d'afficher un tableau :

 function afficher($fichier, $separateur)
{
$tab = file($fichier); // le fichier est placé dans un tableau ($tab[0] correspond à la 1ere ligne du fichier)
print "\";
$num_ligne=1;
for($i=0;$i<count($tab);$i++) // on compte le nombre de lignes et tant qu'on n'a pas parcouru tout le fichier
{
// on découpe une chaine de caractères lorsqu'on rencontre $separateur afin de créer un dans un tableau
$position=explode($separateur,$tab[$num_ligne-1]);
print \"----
\";
if ($position[2]=faux)
{
print \", \";
}
else
{
print \", \";
}
$act=$position[0];
$cli=$position[1];
print \"$act, \"; // on affiche $act
print \"$cli, \";

// on affecte à chaque ligne un id utilisé pour la suppression d'une ligne précise
print \", \";

print \"\";
$num_ligne++;
}
print "
";
}


Mon souci est que lorsque le mot se trouvant en troisieme position de mon fichier texte après le deuxieme pipe donc est à vrai, il ne me change pas l'image.

Merci de votre aide.

9 réponses

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
14
Salut,

Si ta condition ne fonctionne pas c'est sans doute parce que ta chaîne "faux" lue dans le fichier est suivie d'un retour à la ligne. L'utilisation de trim() sur les données récupérées règle le problème. Voici ton code simplifié et corrigé (cependant le html reste dégueu) :

<?php

function afficher($fichier, $separateur)
{
  echo '';

$tab = file($fichier);
foreach ($tab as $line)
{
$data = explode($separateur, $line);
if (sizeof($data) != 3)
continue ;
if (strtolower(trim($data[2])) == 'faux')
echo ', ';
else
echo ', ';
echo '', trim($data[0]), ', ';
echo '', trim($data[1]), ', ';
}

  echo '
';
}

?>
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Bonjour,

L'élément de comparaison d'égalité n'est pas un simple '=' mais un double :

if($position[2] == "faux")
{
 // traitement image rouge
}
else
{
 // traitement image verte
}
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
14
Salut,

if ($position[2]=faux)

L'opérateur égal est pour une affectation, pas une comparaison. De plus, le mot clé faux n'existe pas en php.
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

if($position[2] == "faux") ne fonctionne pas, il m'affiche que des images vertes.

TychoBrahe, mon fichier texte se compose ainsi :

param1|param2|vrai
param3|param4|faux ...

help
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Dans ta boucle FOR fais des echo de $position[2] pour voir ce qu'il affiche.
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

je l'ai déja fait et il m'affiche bien ce qu'il faut soit :

vrai vrai faux vrai vrai vrai vrai faux ....
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

j'ai remplacé "faux" par 0 en mettant des 0 dans mon fichier texte à la place des faux et des 1 a la place des vrai et ça fonctionne ...

bizarre
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

Merci beaucoup TychoBrahe, ta solution marche à la perfection !!

Cependant je n'arrive toujours pas à faire fonctionner mon click sur image. J'ai donc ceci :

$tab = file($fichier); // le fichier est placé dans un tableau ($tab[0] correspond à la 1ere ligne du fichier)
print "<table border="1" cellpadding="3" cellspacing="2">";
$num_ligne=1;
for($i=0;$i<count($tab);$i++) // on compte le nombre de lignes et tant qu'on n'a pas parcouru tout le fichier
{
// on découpe une chaine de caractères lorsqu'on rencontre $separateur afin de créer un dans un tableau 
$position=explode($separateur,$tab[$num_ligne-1]); 
print "<tr>";
[b]					if (strtolower(trim($position[2])) == 'faux') 
{					
print "<td></td>";
}
else
{
print "<td></td>";
}/b
$act=$position[0];
$cli=$position[1];					
print "<td align='center'>$act</td>"; // on affiche $act
print "<td align='center'>$cli</td>";
}


L'image est donc affiché en fonction du troisieme paramètre de mon fichier texte qui ressemble à cela :

truc1|Machin1|faux

truc2|Machin2|faux

truc3|Machin3|vrai

si le parametre est faux = rouge.jpg sinon vert.jpg

J'aimerais que lorsqu'on clique sur une ligne avec l'image rouge cette ligne passe au vert en remplacant dans le fichier texte le parametre à 'faux' par 'vrai' et remplacer toutes les autres par 'faux'. Je ne sais pas si l'événement Onclick doit faire appel à une fonction php ou si on peut faire cela en javascript ...
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010

j'ai essayé ça mais ça ne fonctionne pas :

if (isset($_GET['ajout'])) // Si on demande de supprimer une ligne
{
$tab = file("affichage.txt");
$num_ligne =1;
for ($cpt = 0; $cpt<count($tab);$cpt++)
{
$position=explode('|',$tab[$num_ligne-1]);					
for ($a = 0; $a<count($tab);$a++)
{
$position=explode('|',$tab[$a]);
$position[2]='0';
}	
$actif .= ($cpt!=$_GET['ajout']) ? $position[$cpt] : "vrai"; // on supprime la ligne sélectionnée en la remplaçant par une ligne vide
$fic = fopen ("affichage.txt", 'w');
str_replace($actif,$position[3]);
$numligne++;				

header('Location: index.php'); 	// on recharge cette page pour la réactualiser						

}
}


récupération de l'id :

if (strtolower(trim($position[2])) == 'faux') 
{					
print "<td></td>";
}
else
{
print "<td></td>";
}