IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Incrémenter une chaine de caractères


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut Incrémenter une chaine de caractères
    salut,
    j'ai une methode php qui me retourne une liste des objets getListeObjets()
    puis je fait une boucle sur cette liste .
    et pour chaque objet dans la liste j'ai une chaine : =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       $maChainer =  ". $object->getValeur(1) ." == ". $valeur ."";
    je veux incrementer cette chaine pour chaque object Afin d'obtenir à la fin de la cette boucle comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $maChainer = ($object->getValeur(1) == " .$valeur. " &&  $object->getValeur(2) == " . $valeur ." )  || $object->getValeur(3) == ". $valeur ."3"
    pr les operateur je peux les recuperer.
    merci de m'aider
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    J'ai absolument rien compris à ce que tu essayes de faire...
    Que vas-tu faire de cette chaine une fois construite ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    merci de votre reponse.
    on fait je tente d'affecter un article a une categorie selon les info article.

    Chaque categorie a une ensemble des critères ( getListeCritere()).
    et ou mement de l'ajout de l'article j'affecte cette article a des categorie selon les attribut de cette article. (Si elle remplit a toutes les criteres ou l'un des critères)
    pour cela je boucle sur les categorie et pour chaque categorie je recupere les criteres puis je verifier s'ils correspondent bien au article si c'est le cas je l'affecte a cette categorie..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    foreach ($listeCategorieBd as $categorie) {
             $listeCritereCategorie = $categorie->getListCritereCategorie();
             foreach($listeCritereCategorie as $critereCategorie) {
                   //la je vais verifier si les criteres a correspondents bien a l'article
                   //c a dire je vais verifier si les info ds l'article correspondent bien a les critere 
                   //de categorie
             $contenuIf = ($article->getValeur($attributPourArticle) == " .$critereCategorie->getValeur(). " &&  $article->getValeur($autreAttributPourArticle) == " .$critereCategorie->getValeur(). " )  ||  $article->getValeur($autreAttributPourArticle) == " .$critereCategorie->getValeur(). "
     
               //puis je vais faire un test 
              if ($contenuIf) {
                     //j'affecte l'article a la categorie
              }
     
     
     
             }
    }
    merci de m'aider
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Regarde cette discussion : http://www.developpez.net/forums/d82...ner-condition/
    Tu devrais y trouver un début de réponse
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    salut,
    en fait ça marche pas bien,

    il considere la variable $contenuIf comme une chaine de caractere
    voila le contenu de la variable $contenuIf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     "(valeur1 == valeur2 ) && (valeur3 == valeur4) || (valeur5 == valeur6)"
    pour cela le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     //puis je vais faire un test 
              if ($contenuIf) {
                     //j'affecte l'article a la categorie
              }
    il est toujour vrai.
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Une chaine de caractères non vide est équivalente à true. Donc forcément...
    Ce qu'il faut que tu fasses c'est évaluer directement ton booléen à chaque fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    foreach ($listeCategorieBd as $categorie) {
            $contenuIf = true;
            $i = 1;
             $listeCritereCategorie = $categorie->getListCritereCategorie();
             foreach($listeCritereCategorie as $critereCategorie) {
     
             if ($i == 1) {
                   $contenuIf = $contenuIf && ($article->getValeur($attributPourArticle)  == $critereCategorie->getValeur());
             } else  {
                   $contenuIf = $contenuIf && ($critereCategorie->getOperateur() .$article->getValeur($attributPourArticle)  == $critereCategorie->getValeur() );
     
             }
     
     
               //puis je vais faire un test 
              if ($contenuIf) {
                     //j'affecte l'article a la categorie
              }
     
     
     
             }
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Pour ton problème, je m'orienterais à première vue vers la fonction eval().

    Je dis bien à première vue car je n'ai pas creusé. J'ai toujours trouvé horribles les chaînes de test construites par le code.
    Je n'ai pas le temps ce soir, mai je suis persuadé qu'il y a un algo pour éviter ce fonctionnement.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  8. #8
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    merci de votre reponse ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    foreach ($listeCategorieBd as $categorie) {
            $contenuIf = true;
            $i = 1;
         foreach ($listeCategorieBd as $categorie) {
      $contenuIf = true;
      $i = 1;
      $listeCritereCategorie = $categorie->getListCritereCategorie();
      while ($i < count($listeCritereCategorie)) {
     
        if ($valeurEav == $valeurCritere) {
    	$critereOk = " true " ;
        } else {
    	$critereOk = " false " ;
        }
     
        if($i != 0) {
          $condition = $condition . $operateurLiaison . $critereOk;
        } else {
          $condition = $critereOk;
        }
        $i = $i + 1;
      }
    }
    si je mets un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump($condition);
    j'obtien
    true and true or false // pr categorie 1
    false and false or false // categorie 2

    et quand je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if ($condition) 
    {
     //j'affecte l'article a la categorie
    }
    moi je veux convertit la chaine $condition en script php afin de la mettre ds le test
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

  9. #9
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    Presque j'ai trouvé une solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    foreach ($listeCategorieBd as $categorie) {
            $contenuIf = true;
            $i = 1;
                $listeCritereCategorie = $categorie->getListCritereCategorie();
                 while ($i < count($listeCritereCategorie) &critereOk) {
     
                    if ($valeurEav == $valeurCritere) {
    	            $critereOk = " true " ;
                    } else {
    	           $critereOk = " false " ;
                    }
     
                    if ($i == 0){
                          $condition =  ' ( ' .$valeurCritere .' == '. $valeurArticle. ' ) ';
                   } else {
                          $condition = $condition . $operateurLiaison .' ( ' .$valeurCritere .' == '.    $valeurArticle. ' ) ';
                   };
                }
              //puis j'ai utilisé la fonction php eval
              eval('$conditionIf = '.$condition.';');
             //puis je fait
            if ($condition == true) {
               //traitement
            }
    }
    ça marche mais avec un problem de parse.
    Si l'une des mes $val contient un '@' il genere une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <b>Parse error</b>:  syntax error, unexpected '@' in ..... : eval()'d code</b> on line <b>1</b><br />
    est ce qu'il y qlq un peut me dire pourquoi ..
    merci d'avance
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je pense que eval considère @ que le modificateur qu'on place devant une fonction pour bloquer le renvoi des warning.
    Il doit falloir que tu ajoutes des "" pour délimiter les chaines...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    Re-
    merci de votre reponse

    on fait j'ai trouvé une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    foreach ($listeCategorieBd as $categorie) {
            $contenuIf = true;
            $i = 1;
                $listeCritereCategorie = $categorie->getListCritereCategorie();
                 while ($i < count($listeCritereCategorie) &critereOk) {
     
                    if ($valeurEav == $valeurCritere) {
    	            $critereOk = " true " ;
                    } else {
    	           $critereOk = " false " ;
                    }
     
                    if ($i == 0){
                         $condition = " '$valeurEav' == '$valeurCritere'" ;
     
                   } else {
                         $condition = $condition .  " '$valeurEav' $operateurCritere '$valeurCritere'" ;
                   };
                }
              //puis j'ai utilisé la fonction php eval
              $condition = "return(".$condition .");";
     
            if (eval($condition) == true) {
               //traitement
            }
    }
    merci encore une fois
    «En théorie, la théorie et la pratique sont les mêmes. En pratique, ils le sont pas."
    Albert Einstein.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. incrémentation d'une chaine de caractère
    Par franco9 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2013, 18h57
  2. Réponses: 7
    Dernier message: 29/05/2012, 16h16
  3. incrémenter une chaine de caractère
    Par manaliac dans le forum Fortran
    Réponses: 7
    Dernier message: 04/06/2010, 16h52
  4. Réponses: 5
    Dernier message: 26/08/2008, 16h00
  5. Réponses: 7
    Dernier message: 25/04/2008, 22h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo