Condition if qui ne fonctionne pas !!!

Résolu
sly456328971 Messages postés 20 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 15 novembre 2010 - 27 oct. 2010 à 13:58
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.

9 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
28 oct. 2010 à 01:48
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 '
';
}

?>
3
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
27 oct. 2010 à 14:13
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
}
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 oct. 2010 à 14: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.
0
sly456328971 Messages postés 20 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 15 novembre 2010
27 oct. 2010 à 14:19
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
0

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

Posez votre question
cs_ludwig59 Messages postés 128 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 6 mai 2011 2
27 oct. 2010 à 14:24
Dans ta boucle FOR fais des echo de $position[2] pour voir ce qu'il affiche.
0
sly456328971 Messages postés 20 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 15 novembre 2010
27 oct. 2010 à 14:28
je l'ai déja fait et il m'affiche bien ce qu'il faut soit :

vrai vrai faux vrai vrai vrai vrai faux ....
0
sly456328971 Messages postés 20 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 15 novembre 2010
27 oct. 2010 à 14:29
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
0
sly456328971 Messages postés 20 Date d'inscription mardi 26 octobre 2010 Statut Membre Dernière intervention 15 novembre 2010
3 nov. 2010 à 10:27
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 ...
0
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
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>";
}
0