Page 1 sur 2

affichage de php depuis la base de données

Posté : 07 juin 2006, 12:29
par Invité
Bonjour,
J'utilise une base mysql pour stocker des articles.

J'y incorpore du html à l'intèrieur des champs, pas de problèmes pour l'affichage côté site, il affiche bien les tableaux, les images, le javascript, etc... sur la page.php qui va chercher dans la base l'article.

Par contre, à un endroit je voudrai faire un include de cette forme:
<? include "departement_form.inc.php"; ?> et là pas moyen.

Est-ce qu'il n'est pas possible de remonter du php depuis la base de données ? ou bien y a t-il quelque chose à rajouter autour, genre des / ou des ' ?

Posté : 07 juin 2006, 13:28
par Vorkosigan
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.

Posté : 07 juin 2006, 14:09
par Invité
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...

Posté : 07 juin 2006, 16:39
par Vorkosigan
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.

Posté : 07 juin 2006, 16:55
par ouckileou
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é...

Posté : 07 juin 2006, 17:43
par Invité
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...

Posté : 07 juin 2006, 22:59
par Vorkosigan
Cette liste de départements ne s'affiche pas. Il doit y avoir une histoire de slash...
Tu peux nous fournir le code HTML ?

Posté : 14 juin 2006, 14:03
par Invité
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 ?

Posté : 14 juin 2006, 14:09
par ouckileou
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()

Posté : 14 juin 2006, 14:11
par Invité
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 ?

Posté : 14 juin 2006, 14:16
par Invité
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.

Posté : 14 juin 2006, 15:39
par Invité
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()...

Posté : 14 juin 2006, 15:53
par ouckileou
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...

Posté : 14 juin 2006, 16:20
par Invité
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...

Posté : 14 juin 2006, 16:34
par ouckileou
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