ELSEIF dynamique

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 : ELSEIF dynamique

par Sékiltoyai » 18 mai 2007, 12:14

ah oui, bonne question, c'est vrai qu'il y a moyen de simplifier si tu nous en dit plus...

par dogmongo » 18 mai 2007, 12:06

oui mais $toto il sort d'ou :lol: tu veux pas nous le dire :D d'une requete?

par Sékiltoyai » 18 mai 2007, 11:54

Bah ce que je veux faire c'est spécifiquement le dernier exemple donné.

C'est a dire je veux tester une ou plusieurs variables différentes fixes + une ou plusieurs variables de type tableau avec une longueur dynamique, le tout dans un ordre précis.

Cad que si la premier test est positif, tout s'arrête et on récupère l'erreur concerner.

Mais bon apparemment il n'existe aucune solution à part du bidouillage avec des variables :)
Donc sur le coup je vais pouvoir me débrouillez.

Merci à tous.
Il y aune solution, et je ne vois pas en quoi c'est du bidouillage :
if($a>0)
{
...
}
else
{

    for($i=0;$i<count($toto)&&$toto[$i]<=0;$i++);
    if(isset($toto[$i]))
    {
    ...
    }
    elseif($b>0)
    {
    ...
    }
    else
    {
    ...
    }

}
Sinon, je ne pense pas que eval soit la bonne solution, aussi bien au niveau codage, qu'au niveau performances.

par dogmongo » 18 mai 2007, 11:31

attend j'ai compris ton champ $toto sort d'un explode c'est la ton problème ? tu peux donc pas le traiter à la requête ?

par dogmongo » 18 mai 2007, 11:24

Au finale tu veux quoi comme résultat ?

quesque ça doit donner à l'écran

Parce que tu peux peu être manipuler ça dans une requête un peu plus travaillé en manipulant directement $toto

par Klomac » 18 mai 2007, 10:17

Bah au pire tu te débrouille avec une boucle pour "écrire" ta série de conditions (if, elseif, elseif...) dans une chaine et tu la passe par la fonction eval() qui exécute la chaine comme du code PHP.

Après à mon avis c'est pas très joli comme méthode ;) Je dis ça je dis rien ;)

par Wells83 » 18 mai 2007, 09:42

Bah ce que je veux faire c'est spécifiquement le dernier exemple donné.

C'est a dire je veux tester une ou plusieurs variables différentes fixes + une ou plusieurs variables de type tableau avec une longueur dynamique, le tout dans un ordre précis.

Cad que si la premier test est positif, tout s'arrête et on récupère l'erreur concerner.

Mais bon apparemment il n'existe aucune solution à part du bidouillage avec des variables :)
Donc sur le coup je vais pouvoir me débrouillez.

Merci à tous.

par jojolapine » 15 mai 2007, 09:59

il faudrait en effet nous en dire plus sur ton problème...
Depuis le début tu te cantonnes à nous donner des exemples qui n'ont que peu à voir avec ton problème, et tu cherches peut-être quelque chose de pas très logique...
Dis nous d'où sort ce tableau $toto ce $a ce $b, et ce que tu veux en faire précisément!

par Sékiltoyai » 15 mai 2007, 09:58

Oki effectivement j'avias mal lu le truc. Bon maintenant passont au cas qui m'interesse et qui lui est a mon avis mort:

if($a>0).....
elseif($toto[1]>0).....
elseif($toto[2]>0).....
elseif($toto[3]>0).....
elseif($b>0).....
else .....

$toto ayant tjs un nb d'entre dynamique.
Ca marche pareil, sauf que tu utilises des if pour tester $a et $b, et un while pour tester ce qui est dynamique...

par dogmongo » 15 mai 2007, 09:55

c'est pour traiter des données en sortie de table ? une requête en gros ?

par Wells83 » 11 mai 2007, 14:44

Oki effectivement j'avias mal lu le truc. Bon maintenant passont au cas qui m'interesse et qui lui est a mon avis mort:

if($a>0).....
elseif($toto[1]>0).....
elseif($toto[2]>0).....
elseif($toto[3]>0).....
elseif($b>0).....
else .....

$toto ayant tjs un nb d'entre dynamique.

par titerm » 11 mai 2007, 14:06

Le code de sékil :wink: correspond exactement a la série de ifelse que tu as donnée.
Dans tes if, le premier qui est vérifié est executer et seulement lui.

Il fait exactement la meme chose dans un while, il cherche le premier elemant du tableau qui est > 0, puis effectue le code dans le if si il a en a trouvé 1 et le code du else si aucun élément du tableau n'étaient > 0.

par Genova » 11 mai 2007, 12:31

Salut,
si tu veux vérifier les données d'un tableau il te suffit d'utiliser un while () ou un foreach () pour le parcourir.

par Wells83 » 11 mai 2007, 10:11

si je comprend bien ton code, c'est le $i le plus élevé qui sera prit en compte non?

Or moi je veux que se soit le moins. Ou alors j'ai pas saisie ton code complètement.

par Sékiltoyai » 10 mai 2007, 13:21

Avec un while tout simplement :
$i=0;
while(isset($toto[$i]) && $toto[$i]<=0)
{
$i++;
}

if(isset($toto[$i]))
{
// code...
}
else
{
// code...
}