affichage de php depuis la base de données

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 : affichage de php depuis la base de données

par Invité » 14 juin 2006, 16:43

et oui... je m'en doutais un peu.

Dans ce champ descrip_art j'ai de tout du html et du php.

Un extrait du champ:

...

Code : Tout sélectionner

<select name="departement" class="inputbox"> <? include('departement_form.inc.php'); ?> </select>
...

faut que je réfléchisse là, est-ce que je sépare, comment, ou est-ce que je m'y prend autrement... est-ce que je commence le texte du champ par un echo" et terminé par un "; de façon à avoir tout le champ en php...

vais tester...

par ouckileou » 14 juin 2006, 16:34

Etant donné que la chaîne contenant le PHP est dans $descrip_art, pourquoi veux-tu absolument passer par une autre variable ?
$descript_art = "include('fichier.inc.php');";
eval($descrip_art);
Après, tu risques d'avoir des problèmes dû au mélange HTML/PHP

par Invité » 14 juin 2006, 16:20

hhhuuu... dur dur

J'ai mis ceci:

Code : Tout sélectionner

$str = "$descrip_art"; eval("\$str = \"$str\";"); echo "$str";
dans le champ j'ai ça:

Code : Tout sélectionner

<? include('departement_form.inc.php'); ?>
j'ai essayé aussi ça:

Code : Tout sélectionner

<? include("departement_form.inc.php"); ?>
et ça:

Code : Tout sélectionner

<? include"departement_form.inc.php"; ?>
et il me répond tout le temps cela...

Parse error: syntax error, unexpected T_LNUMBER in /usr/home/v1006/html/societe.php(75) : eval()'d code on line 2

à force de change d'un côté et de l'autre, je sais plus où c'est bon ou pas...

par ouckileou » 14 juin 2006, 15:53

Quelqu'un sait comment on utilise cette fonction eval()...
Ben ça parait évident, et tu sembles avoir compris

Sauf que tu rajoutes une couche en plus... résultat, ton code (include...) se trouve encore dans la dernière, et n'est pas interprété.
$str = '$descrip_art'; // Avec les guillemets simples, tu récupères le nom de la variable, et pas sa valeur
eval("\$str = "$str";"); // tu fais éval() sur une chaîne qui contient la première variable, ça doit t'afficher "$descrip_art = $descrip_art
echo "$str"; // ça doit afficher : $descript_art
A aucun moment tu n'as demandé d'exécuter le code contenu dans $descript_art...

par Invité » 14 juin 2006, 15:39

Bon... si quelqu'un est là, je veux bien encore un peu d'aide...

j'ai mis ceci dans la page .php qui contient le champ à afficher:
$str = '$descrip_art';
eval("\$str = \"$str\";");
echo "$str";
$descrip_art est la fameux champ qui contient le code html et le <? include('departement_form.inc.php') ;?>

je n'ai pas d'erreur mais ma liste ne s'affiche toujours pas.

Quelqu'un sait comment on utilise cette fonction eval()...

par Invité » 14 juin 2006, 14:16

Heu... j'ai rien dit... je suis en train de me documenter sur eval(), merci beaucoup, ça m'a bien l'air d'avoir un rapport certain avec mon sujet...
Je reviendrai quand j'aurai la bonne formule.

par Invité » 14 juin 2006, 14:11

Excuses-moi mais je ne comprend pas ce que tu veux dire par:
Quand le PHP sera interprété il exécutera le echo, qui affichera le texte
que dois-je faire alors pour qu'il interprête le php ?

par ouckileou » 14 juin 2006, 14:09

si je regardes la source je vois exactement ce code au lieu de voir ma liste déroulante comme cela devrait être le cas normalement.
C'est normal, ce code n'est pas interprété, il est affiché comme du texte

C'est pareil que :
echo "<?php include('fichier.inc.php')";
Quand le PHP sera interprété il exécutera le echo, qui affichera le texte

Regarde la fonction eval()

par Invité » 14 juin 2006, 14:03

Alors, voici le code que j'insère dans le champ de la base de données:

Code : Tout sélectionner

<table width="388" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#FFFFFF"><form action="result.php" method="post" name="form1" id="form1"> <table width="100%" border="0" align="left" cellpadding="0" cellspacing="0"> <tr> <td width="275" height="15" class="formulaire_titre">Ville:</td> </tr> <tr> <td width="275" bgcolor="#DDE8FA"><input name="ville" type="text" id="ville" size="25" /></td> </tr> <tr> <td width="275" height="15" class="formulaire_titre">Département:</td> </tr> <tr> <td width="275" bgcolor="#DDE8FA"> <select name="departement" class="inputbox"> <? include('departement_form.inc.php') ;?> </select></td> </tr> <tr> <td width="275" align="center" bgcolor="#DDE8FA"><input type="submit" name="Submit" value="Envoyer" /></td> </tr> </table> </form></td> </tr> </table>
j'ai raccourci, le formulaire est bcp plus long.

Le code html s'affiche tout à fait bien, sauf <? include('departement_form.inc.php') ;?>, il n'affiche rien ,et si je regardes la source je vois exactement ce code au lieu de voir ma liste déroulante comme cela devrait être le cas normalement.

Mon champ est un champ "text" est-ce que ça ne peut pas venir plutôt de ça, est-ce qu'il ne faut pas le passer en "varchar" ou autre ?

par Vorkosigan » 07 juin 2006, 22:59

Cette liste de départements ne s'affiche pas. Il doit y avoir une histoire de slash...
Tu peux nous fournir le code HTML ?

par Invité » 07 juin 2006, 17:43

Oui, en fait il est stockés correctEment mais ne s'affiche pas.

Le include remonte dans une select la liste des departements contenu dans la base departement.

Cette liste de départements ne s'affiche pas. Il doit y avoir une histoire de slash...

par ouckileou » 07 juin 2006, 16:55

Par contre, à un endroit je voudrai faire un include de cette forme:
<? include "departement_form.inc.php"; ?> et là pas moyen.
Qu'est-ce que ça veut dire exactement "pas moyen", tu peux préciser ?

Parceque ton PHP est peut-être bien stocké, mais s'il est récupéré et affiché comme du texte il ne sera pas interprété...

par Vorkosigan » 07 juin 2006, 16:39

Ben, apparemment oui, tout est stocké normalement, même les ?
Il me semble avoir déjà vu une façon de faire mais peut être que je confond... un truc du genre \\, ou '\ ou \' mais je retrouve pas la bonne formule magique...
Pour les "?" dans une chaine de caracteres il n'y a rien de particulier a faire.

par Invité » 07 juin 2006, 14:09

Ben, apparemment oui, tout est stocké normalement, même les ?
Il me semble avoir déjà vu une façon de faire mais peut être que je confond... un truc du genre \\, ou '\ ou \' mais je retrouve pas la bonne formule magique...

par Vorkosigan » 07 juin 2006, 13:28

Je peux t'assurer que tu peux stocker des "?" dans une base de donnees. Pour t'en assurer tu peux tester un script style

Code : Tout sélectionner

create table temp(id varchar(10)); insert into temp values ("?"); select * from temp;
Pour repondre a ta question il faudrait savoir si les "?" sont bien stockes en base ou non.