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 : if

Re: if

par animithra » 20 nov. 2009, 17:34

Un petit tag "Résolu" l'ami !

Re: if

par kanaille » 20 nov. 2009, 17:34

Super Animithra !! Ca marche super bien, c'est vrai que je me suis compliqué la vie pour rien.

Merci !!!
Tu te compliques la vie.

Tu m'as bien dit que les paramètres de ta fonction eregi() étaient récupérés dans la base de données ?

Le cas échéant tu peux traiter ton eregi() en traitant les résultats :
while($resultats = mysql_fetch_array($requete)){
  $param = $resultats($champ);
  if(eregi($param,$str)){
    die("1");//arrete le programme s'il trouve la solution
  }
}

Re: if

par animithra » 20 nov. 2009, 16:58

Tu te compliques la vie.

Tu m'as bien dit que les paramètres de ta fonction eregi() étaient récupérés dans la base de données ?

Le cas échéant tu peux traiter ton eregi() en traitant les résultats :
while($resultats = mysql_fetch_array($requete)){
  $param = $resultats($champ);
  if(eregi($param,$str)){
    die("1");//arrete le programme s'il trouve la solution
  }
}

Re: if

par kanaille » 20 nov. 2009, 16:48

Dans ce cas tu peux gérer le tout avec des if et elseif : si tu n'as qu'un résultat tu fais un simple if, sinon tu rajoutes un elseif(eregi....).
Bonne idée ! Mais comment tu fais ? Voici mon script qui ne fonctionne pas :

Code : Tout sélectionner

$str="le vent souffle fort"; $fonction1 = if (eregi('les',$str)) { print 1; } $fonction1 .= elseif (eregi('ibiii',$str)) { print 1; } print $fonction1;

Re: if

par animithra » 20 nov. 2009, 16:38

Dans ce cas tu peux gérer le tout avec des if et elseif : si tu n'as qu'un résultat tu fais un simple if, sinon tu rajoutes un elseif(eregi....).

Re: if

par kanaille » 20 nov. 2009, 16:29

Comment faire pour que "or" fonctionne comme un opérateur et non comme une simple chaîne de caractères ?
Essai de ne pas écrire $fonction comme une chaîne de caractère :
if(eregi('les', $str) OR eregi('ibiii', $str)){
 print("1");
}
J'ai pas le choix :( En fait je récupère les termes ('les', 'ibiii' etc. ) dans une base sql. Pour chacun j'ai besoin de dégager un

" OR eregi($terme,$str)"

C'est pour ça que je distinque le "if" d'un côté et "$fonction" de l'autre.

Re: if

par animithra » 20 nov. 2009, 16:22

Comment faire pour que "or" fonctionne comme un opérateur et non comme une simple chaîne de caractères ?
Essai de ne pas écrire $fonction comme une chaîne de caractère :
if(eregi('les', $str) OR eregi('ibiii', $str)){
 print("1");
}

Re: if

par kanaille » 20 nov. 2009, 16:17

Bonjour et vraiment merci de m'aider.

*****Zeus : super, c'est presque bon, mais j'ai encore un problème. Je ne connais pas à l'avance le nombre de termes à vérifier et mon petit bout de code ne fonctionne pas :

Code : Tout sélectionner

$str="le vent souffle fort"; $fonction = eregi('les', $str); $fonction .= " or " ; $fonction .= eregi('ibiii', $str); if ($fonction) { print "1"; }
Comment faire pour que "or" fonctionne comme un opérateur et non comme une simple chaîne de caractères ?

*****Victor : merci beaucoup du conseil, je vais regarder ça.

Re: if

par Victor BRITO » 20 nov. 2009, 12:40

Soit dit en passant, on peut améliorer l'écriture de ta variable $fonction, comme suit :
$fonction = preg_match ('#i?bi{3}#i', $str);
D'autant plus que les fonctions dont le nom commence par ereg ou eregi deviennent obsolètes en PHP 5.3 et peuvent être avantageusement remplacées par les expressions régulières compatibles Perl, ne serait-ce que pour une question de performance (un tuto est à ta disposition si tu ne connais pas ce type d'expressions régulières).

Re: if

par zeus » 20 nov. 2009, 12:26

Bonjour,

Quand tu écris
$fonction="eregi('biii', $str) or eregi('ibiii', $str)";
tu ne définis pas une fonction, tu ne fais que mettre une chaine dans une variable.
Donc, quand tu fais
îf($fonction)
PHP teste la variable, trouve une chaine non nulle, et considère donc que c'est vrai.

Si ton but premier était de mettre le résultat du test dans la variable, il faut écrire :
$fonction = (eregi('biii', $str) or eregi('ibiii', $str));
Et si ton but était de créer un fonction anonyme (une fonction déclarée à la volée, qui n'as pas de nom, et qui peut aussi être appelée lambda), il aurait fallu écrire :
$function = function($str) { return eregi('biii', $str) or eregi('ibiii', $str)  };

if( $function($str) )
{
   // ...
}

if

par kanaille » 20 nov. 2009, 09:05

Bonjour,

J'ai un souci et j'ai fait un petit script pour exprimer mon problème :
<?
$str="le vent souffle fort";
$fonction="eregi('biii', $str) or eregi('ibiii', $str)";

if ($fonction)

{
print "1";
}

?>
Je crois comprendre le problème : "if" me répond oui car il vérifie l'existence de la variable "$fonction" et non sa validité. Comment faire pour qu'il vérifie la validité de $fonction et non l'existence de la variable ?

Merci d'avance pour toute aide.