Page 1 sur 1

Problème include - fwrite

Posté : 29 avr. 2012, 12:32
par Nippok
Bonjour à tous !

J'ai un petit souci dans la création dynamique d'un fichier PHP.
En résumé :

Mon script ajout_categorie.php permet de rajouter des catégories à mon site :
- création d'un répertoire
- ajout d'une ligne en base de données
- création d'un fichier index.php dans mon répertoire. Ce fichier va contenir le contenu de ma catégorie.

Afin de créer ma page index.php, j'utilise ma_page.php qui contient tout le code de la future page (cette dernière contient des include de fonctions, des variables...).

Lorsque je fais :

Code : Tout sélectionner

$mapage = get_include_contents('ma_page.php'); $write = fwrite($fp, $mapage);
Cela fonctionne à peu près mais ma requête contenue dans ma_page.php gère une variable ID connue dans ajout_categorie.php.
Donc en appelant ensuite ma nouvelle page index.php, cette variable n'est plus connue.

J'ai essayé une 2ème manière :

Code : Tout sélectionner

function get_include_contents($filename) { if (is_file($filename)) { ob_start(); include $filename; return ob_end_clean(); } return false; } $mapage = get_include_contents($_SERVER['DOCUMENT_ROOT'].'/new_catego/ma_page.php'); $write = fwrite($fp, $mapage);
Cette manière de faire me ramène des erreurs car ma_page.php contient des include et un session_start(), les mêmes include que dans ma page ajout_categorie.php.

Voici les erreurs :

Notice: A session had already been started - ignoring session_start() in /xxxxxxxxxx/www/new_catego/ma_page.php on line 1
Notice: Constant SERVEUR already defined in /xxxxxxxxxx/www/base.incs.php on line 2
Fatal error: Cannot redeclare requet() (previously declared in /xxxxxxxxxx/www/requete.php:2) in /xxxxxxxxxx/www/requete.php on line 9


Je suis preneur pour un peu d'aide si j'ai été clair :P

Re: Problème include - fwrite

Posté : 29 avr. 2012, 12:42
par moogli
salut,

dans l'ordre :

Notice: A session had already been started - ignoring session_start() in /xxxxxxxxxx/www/new_catego/ma_page.php on line 1 => y a deja un session_start() et tu essai d'en réutiliser un
Notice: Constant SERVEUR already defined in /xxxxxxxxxx/www/base.incs.php on line 2 => redifinition de la constannte SERVEUR (define('SERVEUR','valeur'); déjà fait quelque part).
Fatal error: Cannot redeclare requet() (previously declared in /xxxxxxxxxx/www/requete.php:2) in /xxxxxxxxxx/www/requete.php on line 9 => redéfinition de la fonction requet déja déclaré.


en gros je suppose que ton import fait des import déja fait dans la page active ce qui apport toute ces merdes.

utilise include_once plutôt que include dans ce cas.

Pourquoi fait tu ces import ?

si cette page est "toujours" la même une seule page avec le contenu qui change (contenu en base) est amplement suffisant.

Après si tu veux avoir une belle url la faut plutôt t'orienter sur l'url rewriting :)


@+

Re: Problème include - fwrite

Posté : 29 avr. 2012, 14:18
par Nippok
Hello,

En fait ma page ajout_categorie.php où la création de la page se fait, j'ai besoin de mon "session_start", et de mes fonctions.
Dans ma future page index.php, à créer dans le répertoire à partir de l'inclusion de ma_page.php, je vais avoir besoin aussi de la session et des fonctions.

Je suis en train d'essayer le include_once dans ma_page.php mais maintenant index.php vaut 1 :boire4:

Re: Problème include - fwrite

Posté : 29 avr. 2012, 14:46
par Nippok
Bon...

J'ai trouvé une solution temporaire à mon problème...
C'est sale, mais ça marche :oops:

Mon souci avec le "file_get_contents", c'est que 2 variables n'étaient pas gérées comme je le voulais.
En gros j'avais un nom pour une entête et l'ID pour une requête.
Avec le "file_get_contents", cela ne me permettait pas de remonter la valeur, je gardais le nom de variable.
Donc je devais passer par l'include qui m'a mis des bâtons dans les roues...

Au final, la vilaine solution est au niveau de la page ajout_categorie.php :

Code : Tout sélectionner

$mapage = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/new_catego/ma_page.php'); $mapage = str_replace('$maxid$', $maxid, $mapage); $mapage = str_replace('$categorie$', $categorie, $mapage); $write = fwrite($fp, $mapage);
De cette manière, ma_page.php devient index.php dans le répertoire voulu et j'ai automatiquement la valeur de mes variables dans index.php.
De plus, il ne me soule plus pour mon session_start() et mes include.

Re: Problème include - fwrite

Posté : 30 avr. 2012, 17:23
par moogli
Vi c'est la bonne solution, je n'avais bien saisie la chose, ton fichier est un "template" et n'a pas a être interprété ;)

@+