Page 1 sur 2

Multiple problème d'includes.

Posté : 26 mars 2011, 14:36
par piotrowski-s
Bonjour, j'ai un fichier qui prends des informations sur la base de donnée (jusque la tout va bien)
Mais le problème est lors de l'inclusion. en fait ce fichier doit me générer le code pour naviguer sur le site.
et voici sa structure (du générateur)
<?
//insertion de fichier de configuration
require("_include/config/config.inc.php");
// connection et selection de la base ce donnée
$connect=mysql_connect($host,$login,$pass) or die ("Connection impossible");
mysql_select_db($base,$connect) or die ("selection impossible");
?>
<?php 
echo "<?php\n";
echo "if (!isset(\$_GET['page'])) \$page= 'accueil'; else \$page= \$_GET['page'];\n ";
echo "switch(\$page)\n";
echo "{\n";
echo "case 'accueil': include ('accueil.html');break;\n";

// on crée la requête SQL
$sql = 'SELECT name_category, name_file FROM contenu';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
echo "case '" .$data['name_category']. "': include ('" .$data['name_file']. ".html');break;\n";   
 
    }

// on ferme la connexion à mysql
mysql_close();

echo "}\n";
echo "?>\n";
 
?>
Bon, le soucis est que lors de l'inclusion de ce fichier il me fait bien l'intégration mais ne l'interprète pas, puisque dans la source de la page qui intègre le fichier j'ai
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="theme.css" />
<meta name="generator" content="Namo WebEditor(Trial)">
</head>
<body>

    <table border="0" width="100%" cellpadding="0" cellspacing="0">
        <tr>
            <td width="50%">
                <p><a href=index.php?page=accueil>Accueil</a><br><a href=index.php?page=Home>Home</a><br></p>

            </td>
            <td width="598">
                <p><?php
if (!isset($_GET['page'])) $page= 'accueil'; else $page= $_GET['page'];
 switch($page)
{
case 'accueil': include ('accueil.html');break;
case 'Home': include ('accueil.html');break;
}
?>
</p>
            </td>
        </tr>
    </table>
</div>
</body>
</html>
le soucis c'est que le code est juste inclu mais n'est pas interprété... alors ça m'arrange pas, je suis obliger de le copier et coller dans la source... enfin la page qui utilise ce code est http://asplosion.com/test123/
et la page qui génère ce code a été mis en première source ici présente.

je ne sais pas si vous m'avez compris, car étant malade j'ai du mal a me faire comprendre.

d'avance merci pour votre aide

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 15:04
par Ryle
La fonction include() inclus le script et exécute le code php qu'elle contient... si le code php contenu lui demande de faire des echo, elle affiche ce qu'il y a à afficher à l'écran, mais ne fera rien de plus...

Il te faut donc soit exécuter directement ton code php en le repensant pour qu'il fasse ce que tu veux de lui, soit si tu as besoin de générer du code, le faire évaluer avec eval() (en prenant toutes les précautions nécessaires qui vont avec ce genre de fonctions :)), mais il n suffit pas d'afficher du code pour qu'il fonctionne ;)

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 15:14
par piotrowski-s
et si je fais un enregistrement dans un fichier tiers de l'echo et que je fais une include dans le fichier principal?

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 15:23
par Ryle
Vouip, tu peux tout à fait générer un fichier php à inclure :)
(faudra quand même remplacer tes echo vu que le but n'est pas d'afficher, mais de stocker)

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 15:37
par piotrowski-s
oui merci beaucoup car la fonction dont vous me parlez m'est totalement inconnue (eval)

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 15:55
par piotrowski-s
J'ai pas réussi. j'ai fait ça
<?php
$fp=fopen("generator.php", "w"); //ouverture du fichier en mode écriture, création du fichier s'il n'existe pas.
fwrite($fp,"<?php 
echo "<?php\n";
echo "if (!isset(\$_GET['page'])) \$page= 'accueil'; else \$page= \$_GET['page'];\n ";
echo "switch(\$page)\n";
echo "{\n";
echo "case 'accueil': include ('accueil.html');break;\n";

// on crée la requête SQL
$sql = 'SELECT name_category, name_file FROM contenu';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
echo "case '" .$data['name_category']. "': include ('" .$data['name_file']. ".html');break;\n";   
 
    }

// on ferme la connexion à mysql
mysql_close();

echo "}\n";
echo "?>\n";
 
?>"); // insert le texte: Un texte dans votre fichier.
?> 
mais ça me donne pas le résultat attendu :s

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 16:22
par moogli
salut,

a tu vérifier le contenu de generator.php ?

je ne vois pas l'utilité d'un tel système pour réaliser un système de pseudo frame :/

Avec une simple requête sql en fonction de $_GET['page'] s'il y a un retour tu inclus la page sinon la page d’accueil :)


@+

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 16:32
par piotrowski-s
c'est pour de l'autogestion. pour que mon père puisse mettre a jour son site sans toucher au code j'utilise un wysiwyg et les autres cms ne permettent pas de toucher au design, le wysiwyg enregistre sur la bdd et ce code doit generé. mais pour l'enregistrer je sais pas.

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 19:40
par xTG
Plutôt que de faire un eval je te conseillerai plutôt de coupler include() avec la gestion des buffer qui est plus propre.
ob_start();
include("fichier.php");
$contenu = ob_get_clean();
echo $contenu;

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 20:03
par piotrowski-s
je vais étudier cela, mais comment l'intégrer à mon code?

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 20:07
par piotrowski-s
ce code ci
ob_start();
include("fichier.php");
$contenu = ob_get_clean();
echo $contenu;
je le met à la place de mon include dans le fichier qui appel le code généré?

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 20:44
par xTG
Ce code te permet de faire l'include mais d'afficher plus loin dans le code ce qui est renvoyé par le contenu de cet include.
En gros charger ce que devrait afficher le fichier dans une variable.

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 20:51
par piotrowski-s
d'accord je comprends mieux, mais je ne sais pas du tout comment l'exploiter.

Re: Multiple problème d'includes.

Posté : 26 mars 2011, 21:10
par piotrowski-s
bon j'ai bien réussi, l'include se fait mais il ne fait qu'afficher le code généré mais ne l'exécute pas, comme dans l'include classique précédente du début que j'avais fait.

Re: Multiple problème d'includes.

Posté : 27 mars 2011, 09:44
par xTG
Oui car tu fais des echo d'un code PHP en fait dans ton fichier.
Pourquoi ne pas stocker le code en brut ? Je comprends pas la démarche. :/