Condition if qui ne fonctionne pas !!! [Résolu]

Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
- - Dernière réponse : sly456328971
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
- 3 nov. 2010 à 12:02
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.
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
3
Merci
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 '
';
}

?>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de TychoBrahe
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
0
Merci
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
}
Commenter la réponse de cs_ludwig59
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
10
0
Merci
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.
Commenter la réponse de TychoBrahe
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
0
Merci
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
Commenter la réponse de sly456328971
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
0
Merci
Dans ta boucle FOR fais des echo de $position[2] pour voir ce qu'il affiche.
Commenter la réponse de cs_ludwig59
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
0
Merci
je l'ai déja fait et il m'affiche bien ce qu'il faut soit :

vrai vrai faux vrai vrai vrai vrai faux ....
Commenter la réponse de sly456328971
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
0
Merci
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
Commenter la réponse de sly456328971
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
0
Merci
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 ...
Commenter la réponse de sly456328971
Messages postés
20
Date d'inscription
mardi 26 octobre 2010
Statut
Membre
Dernière intervention
15 novembre 2010
0
Merci
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>";
}
Commenter la réponse de sly456328971