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 :

eval() et mysql


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut eval() et mysql
    Bonjour à tous,

    Voilà j'ai pas mal d'article qui sont stocké dans ma base mysql.
    Mais j'ai décidé dans mes articles d'inclure un fonction PHP

    Donc sur ma page article.php qui affiche mes articles je tente donc de mettre en place un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval('echo \''.$article_info['articles_description'].'\';');
    si ma cellule mysql contient quelque chose type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table cellspacing="1" cellpadding="0" border="1">
        <tbody>
            <tr>
                <td class="main">
    			test
    	    </td>
                <td class="main" align="center">
                            '. tep_description_product(554) .'
    	    </td>
            </tr>
        </tbody>
    </table>
    mais le problème se pose sur tous les articles déjà existant contenant un apostrophe.

    Il y a t il une solution, que de remplacer dans mes 3000 articles ' par \'

  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
    Il vaudrait peut être mieux pour réaliser ça, utiliser des syntaxes internes :

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td class="main" align="center">{product:554}</td>
    A la lecture, avec une expression régulière tu replaces le code par sa valeur.

    C'est plus propre et plus flexible.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    Encore toi sabotage je te remercie.

    Donc si je comprend bien j'ai
    $article = $article_info['articles_description'];
    puis je suppose que je recherche {product: [:alnum:] } et que je vais remplacer.?

    Mais je vois pas comment je fais appel à ma fonction.?
    sachant que ma fonction ressemble à cel:
    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
    $product_info_query = tep_db_query("select p.products_id, pd.products_head_title_tag, p.products_quantity, p.products_image, p.products_subimage1, p.products_subimage2, p.products_subimage3, p.products_subimage4, p.products_tax_class_id,  ptc.classification_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CLASSIFICATION . " ptc where p.products_status = '1' and p.products_id = '" . (int)$products_id  . "' and pd.products_id = p.products_id and ptc.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
    $product_info = tep_db_fetch_array($product_info_query);
    $products_quantity = $product_info['products_quantity'];
     
    if ($products_quantity > '1') { 
        $product_order_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_ORDER_IMAGE . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'");
            $product_order_check = tep_db_fetch_array($product_order_check_query);
            if ($product_order_check['total'] > 0) {
                $product_image_query = tep_db_query("select * from " . TABLE_PRODUCTS_ORDER_IMAGE . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' ");
                $product_image = tep_db_fetch_array($product_image_query);
                $order = array();
                $a=1;
                while ($a<6) 
                {
                    if ($product_image['products_order_image']==$a){$img_order[$a] = $product_info['products_image'] ; }
                    if ($product_image['products_order_subimage1']==$a){$img_order[$a] = $product_info['products_subimage1'] ; }
                    if ($product_image['products_order_subimage2']==$a){$img_order[$a] = $product_info['products_subimage2'] ; }
                    if ($product_image['products_order_subimage3']==$a){$img_order[$a] = $product_info['products_subimage3'] ; }
                    if ($product_image['products_order_subimage4']==$a){$img_order[$a] = $product_info['products_subimage4'] ; }
                    $a++;    
                }
                $img =$img_order['1'];
            } else {
                $img = $product_info['products_image'] ;
            }    
     
     return  '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_id) . '" title="'.$product_info['products_name'].'">' . tep_image(DIR_WS_IMAGES .'product/' .$img, $listing['products_name'], 400, 266) . '<br>'.$product_info['products_head_title_tag'].'</a>';
    Je te remercie encore pour ton aide.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    a moins que je fasse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $article = $article_info['articles_description'];
    $pos = strpos($article, "{product:");
    if ( $pos === false){
    echo $article;
    } else {
    echo   substr($article,0,$pos). tep_description_product(substr($article,0,$pos+9,3)) .substr($article,$pos+14)
    }
    }
    avec un boucle pour chercher toute les occurences?
    Mais ca me parait pas propre.

  5. #5
    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
    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $description =  '<td class="main" align="center">{product:54}</td>';
    echo preg_replace_callback("#{product:(\d+)}#", "tep_description_product" , $description);
     
    function tep_description_product ($match) {
       $remplacement = "Ceci est le produit " . $match[1];
       return $remplacement;
    }

  6. #6
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    Je te remercie.
    C'est nikel.
    Désolé d'avoir mis tu temps à répondra j'avais pas capter le $match[1]

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

Discussions similaires

  1. [MySQL] eval d'un tableau depuis mysql
    Par jaas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/05/2008, 09h54
  2. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  3. Probleme C++Builder et Mysql
    Par noname dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/06/2002, 13h40
  4. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 15h26

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