Problème avec la boucle for et la condition if

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec la boucle for et la condition if

par John80 » 10 mai 2009, 22:29

J'ai
$string = $_GET['v'];

$ligne = 0;
$ligneafaire = 5;
$nbligne= $ligne + $ligneafaire;

for ($i=$ligne; $i<$nbligne; $i++) {

if ($i == $nbligne - 1) {
$texte = "(substr('$string', $i, 1); == 1)";
}else {
$texte = "(substr('$string', $i, 1); == 1)&&";
}echo $texte."<br><br>";
}

if(eval($texte)) { echo "UN DES CHIFFRE A 1"; } else { echo "UN DES CHIFFRE A 0"; }
$string etant une serie de 0 ou de 1

par orgerix » 10 mai 2009, 20:41

Montre moi ce que tu as dans ton code.

par John80 » 10 mai 2009, 18:56

J'ai tester la première solution et sa na pas l'air de fonctionner, sa me retourne:

Code : Tout sélectionner

Parse error: parse error in C:\Program Files\wamp\www\test/test.php(17) : eval()'d code on line 1
Peut être ai je mal place le code ?

par orgerix » 10 mai 2009, 17:03

Le problème, c'est que dans ta boucle, tu crée une chaine et qu'ensuite tu veux l'utiliser comme condition.

Tu as, je pense deux solution.

La première, dont je suis sur qu'elle marche, c'est tout simplement de faire
if(eval($text))
Mais bon, c'est moche, très moche.

Il y a une autre possibilité, je pense même si je suis pas sur qi est beaucoup mieux (si ele marche). Tu construit au fur et à mesure un bouléen qui contiendra le résultat de ta condition.
//on initialise le booléen à 1 puisque c'est le neutre de l'opérateur &&
$bool=1;
for() {
   if() {
      $bool=$bool && conditon1
   }
   else {
      $bool=$bool && conditon2
  }
}
if($bool) {


}

Problème avec la boucle for et la condition if

par John80 » 10 mai 2009, 14:19

Bonjour,

j'essaie de mettre le résultat d'une boucle dans la condition d'un if, je m'explique
$string = $_GET['v'];

$ligne = 0;
$ligneafaire = 5;
$nbligne= $ligne + $ligneafaire;
for ($i=$ligne; $i<$nbligne; $i++) {

if ($i == $nbligne - 1) {
	$texte = "(substr($string, $i, 1) == 1)";
}else {
	$texte  = "(substr($string, $i, 1) == 1)&&";
}echo $texte;
} 
if ($texte) { echo "UN DES CHIFFRE A 1"; } else { echo "UN DES CHIFFRE A 0"; }
J'obtient avec ma boucle

Code : Tout sélectionner

(substr(00000000000000000000, 0, 1) == 1)&&(substr(00000000000000000000, 1, 1) == 1)&&(substr(00000000000000000000, 2, 1) == 1)&&(substr(00000000000000000000, 3, 1) == 1)&&(substr(00000000000000000000, 4, 1) == 1)
et j'aimerais que dans le if qu'il suit apparaissent ceci

Code : Tout sélectionner

if ((substr(00000000000000000000, 0, 1) == 1)&&(substr(00000000000000000000, 1, 1) == 1)&&(substr(00000000000000000000, 2, 1) == 1)&&(substr(00000000000000000000, 3, 1) == 1)&&(substr(00000000000000000000, 4, 1) == 1))
Voila mon problème en espérant que cela soit possible.

Merci d'avance.