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 :

exécuter du code php inséré dans une chaine


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut exécuter du code php inséré dans une chaine
    Bonjour,

    Quand j'écris une chaine exemple :
    $chaine="jlkjldslq d qsjlkjldqs sd qd qsd qd $variable1 sddqdqs $variable2 ";

    les variables $variables1 $variables2 sont rempalcées par leur valeur.

    Comment faire si à la place des variables $variable1 et $variable2, je veux mettre du code exemple une condition.

    Comment dois-je dans ce cas écrire la chaine afin que les codes contenus s'exécutent dans la chaine

    Merci,
    Hat

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine="jlkjldslq d qsjlkjldqs sd qd qsd qd";
    if (condition) { echo "abcd"; }
    echo "sddqdqs";

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    Bonne question, c'est en effet possible à partir de PHP 5.3 avec le hack suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $_ = function ($v) { return $v; };
     
    $a = 1;
    $b = 2;
     
    echo "Est ce que A vaut B ? {$_($a == $b ? 'oui' : 'non')}";
    Affiche: "Est ce que A vaut B ? non"

    Si tu ne dispose pas de PHP 5.3 ou que tu ne veux pas utiliser cette méthode, tu n'as plus qu'a renseigner des variables intermédiaires.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    ou comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $variable1 = 'blabla';
    $variable2 = 'blabla';
    $chaine = "jlkjldslq d qsjlkjldqs sd qd qsd qd $variable1 sddqdqs $variable2 ";
     
    ob_start();
    include 'data:,' . urlencode($chaine);
    $out = ob_get_clean();
     
    echo $out;
    //jlkjldslq d qsjlkjldqs sd qd qsd qd blabla sddqdqs blabla

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Merci Benjamin votre réponse correspond à ce que je recherche,

    mais je peux pas tester car je travaille sous php 4.2.0.

    Il y a vraiment pas autre chose qui fonctionne sous php 4

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Négatif, le support des fonction lambda est assuré à partir de PHP 5.3.

    Vous pouvez toujours essayer de bricoler quelque chose avec des eval mais je vous recommande vivement d'utiliser des variables intermédiaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $a = 1;
    $b = 2;
     
    $a_vaut_b = $a == $b ? 'oui' : 'non';
     
    echo "Est ce que A vaut B ? $a_vaut_b";
    ça m'étais sorti de la tête mais on peut toujours utiliser printf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $a = 1;
    $b = 2;
     
    printf("Est ce que A vaut B ? %s", $a == $b ? 'oui' : 'non');

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par hat_et_m Voir le message
    Merci Benjamin votre réponse correspond à ce que je recherche,

    mais je peux pas tester car je travaille sous php 4.2.0.

    Il y a vraiment pas autre chose qui fonctionne sous php 4
    le mien devrai marcher mais en faisant plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $out = ob_get_contents();
    ob_end_clean();
    mais pourquoi 4.2.0 ??? c'est sortie y'a 9ans !!! tout hébergeur propose PHP 5

  8. #8
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Oui mais la plupart ne proposent pas PHP 5.3 (j'ai vérifié).

    mais pourquoi 4.2.0 ??? c'est sortie y'a 9ans !!! tout hébergeur propose PHP 5
    ça arrive si on travaille par exemple sous redhat 4: le repos n'a pas PHP 5 et à moins qu'on ne pête la license de support on ne peut pas l'installer.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Je voudrais en fait qu'une chaine codée soit excécutée.

    $chaine="<select name="tri_champ" size="1" onchange="submit();">
    <option value="||order by p.prix_unitaire asc|Tri par prix croissant" {$_(if($tri_champ=="||order by p.prix_unitaire asc|Tri par prix croissant"){echo "selected";})}>Tri par prix croissant</option>
    <option value="||order by p.prix_unitaire desc|Tri par prix décroissant" {$_(if($tri_champ=="||order by p.prix_unitaire desc|Tri par prix décroissant"){echo "selected";})}>Tri par prix décroissant</option>
    <option value="||and p.status='meilleure_vente'|Meilleure vente" {$_(if($tri_champ=="||and p.status='meilleure_vente'|Meilleure vente"){echo "selected";})}>Meilleure vente</option>
    <option value="||and p.status='nouveau_prod'|Nouveau produit" {$_(if($tri_champ=="||and p.status='nouveau_prod'|Nouveau produit"){echo "selected";})}>Nouveau produit</option>
    </select>";

    pour pouvoir par exemple réafficher les sélections d'un formulaire après un post

    à priori la méthode initiale de Benjamin me semble pratique

  10. #10
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    à priori la méthode initiale de Benjamin me semble pratique
    C'est pratique mais ça reste de l'ordre de la bidouille. Jamais je n'utiliserai cette technique pour un site entier !
    Pourquoi ne pas te servir de PHP pour faire ça ??
    Tu peux créer des pages que tu nomme ainsi ma_page.html.php
    dans lequelles tu mèles le PHP au HTML (à la vieille mode pour ainsi dire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php foreach ($comments as $comment): ?>
    <div class="comment">
      <h2><?=$comment->title?></h2>
      <p><?=$comment->body?></p>
    </div>
    <?php endforeach; ?>
    Et tu l'inclus avec un bête "include"

    A mort les moteurs de templates et autres smarty dégoûtants !

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est plus une question de technique et de logique, la faut faire autrement pour faire quelque chose de plus propre et moins bidouille parce que la c'est immonde je sais pas comment tu fais pour t'y retrouver

    EDIT : Benjamin ta monté une vraie méthode simple et lisible

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    Par rapport à l'exemple que je vous ai montré, je n'ai pas vraiment le choix. Je voudrais pouvoir paramétrer le formulaire de tri dans une interface d'administration.

Discussions similaires

  1. interperter du code PHP contenu dans une string
    Par veto_fr_2000 dans le forum Langage
    Réponses: 13
    Dernier message: 08/12/2010, 18h34
  2. [MySQL] Interpreter du code php stocker dans une base de donnee
    Par sloat dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/02/2009, 20h28
  3. [MySQL] Code PHP stocké dans une base MySQL
    Par yvon_huynh dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2008, 02h28
  4. Exécuter du code php issue d'une base Mysql
    Par yobogs dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2008, 13h30
  5. Réponses: 4
    Dernier message: 18/02/2007, 20h28

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