8795 sujets

Développement web côté serveur, CMS

Bonjour,

Je cherche à faire un générateur de page sur mon site de manière à ne plus passer systématiquement par FileZilla lorsque je souhaite créer une page.

J'ai fait un script, mais je n'ai pas du tout le comportement souhaité :

Formulaire :
<form class="form1" id="form1" method="post" action="page_generator.php">
	<p>
	<select name="marque" id="marque">
		<option value="" selected="selected"> - Choisir -</option>
		<option value="Volvo" selected="selected">Volvo</option>
		<option value="Mercedes" selected="selected">Mercedes</option>
		<option value="Renault" selected="selected">Renault</option>
	  </select>
	<label for="marque">Marque</label>
	 </p>
	<p>
	<select name="couleur" id="couleur">
		<option value="" selected="selected"> - Choisir -</option>
		<option value="Bleu" selected="selected">Bleu</option>
		<option value="Blanc" selected="selected">Blanc</option>
		<option value="Noir" selected="selected">Noir</option>
		<option value="Jaune" selected="selected">Jaune</option>
	  </select>
	<label for="couleur">Couleur</label>
	 </p>
	<p>
	<input name="type" type="text" id="type"/>
	<label for="type">Type</label>
	 </p>
	<p>
	<input type="submit" name="Submit" value="Creer" id="Generate"/>
	 </p>
	</form>


page_generator.php
<?
 
$page_url = '/'$_POST['marque'].'/'.$_POST['couleur'].'/'.$_POST['type'].'.php';
 
$header = include $_SERVER["DOCUMENT_ROOT"].'/frags/header.php';
 
$footer = include $_SERVER["DOCUMENT_ROOT"].'/frags/footer.php';
 
 
 
  $fichier = fopen ($page_url , "w+");
 
  fwrite ($fichier , $header.'<div id="arrondi">Blabla</div>'.$footer);
 
  fclose ($fichier);
 
  $fichier = fopen ($page_url , "r");
  while (!feof($fichier))
    {
    echo fgets ($fichier, 4096);
    echo "<BR>";
    }
  fclose ($fichier);
?>


Lorsque je valide le formulaire, j'ai le droit à une prévisualisation du résultat dans page_generator.php, la page correspondante à l'URL est créée sur mon serveur, mais elle est vide.
De plus, je ne peux créer une page que dans le dossier où se trouve page_generator.php, si non ça m'affiche des lignes d'erreur.

J'aurais voulu pouvoir créer des pages dans différents répertoires depuis le même formulaire, que lorsque je valide mon formulaire, je sois renvoyé directement sur la page créée et que celle-ci bien entendu reçoivent le fwrite.

Pouvez-vous m'aider à corriger mon script dans ce but s'il vous plait ?
Salut,

les question qui me viennent à l'esprit:

- Pourquoi inclure tes headers et footer en dur alors que tu peut écrire des includes directement dans le fichier? (niveau maintenabilité, c'est épouvantable!)

- Tes droits d’accès aux fichiers sont ils bons?

- La prévisualisation affiche bien la page comme tu le souhaite?

- Le but est il de créer des pages par combo Marque/Couleur/Type? (si oui, une base de donnée et une page dynamique seront de meilleur goût...)
Modifié par JJK801 (05 Oct 2012 - 10:21)
a écrit :
- Pourquoi inclure tes headers et footer en dur alors que tu peut écrire des includes directement dans le fichier? (niveau maintenabilité, c'est épouvantable!)

Oui effectivement ça serait plus simple mais je ne sais pas comment faire pour écrire le script PHP dans mon nouveau fichier en y passant les variables nécessaires. Hors je ne les ais pas fait apparaitre mais il y a quelques variables pour le header comme le titre et les mots clés.

Par exemple si je veux écrire :
<?php
$page_title = $_POST['marque'].' - '.$_POST['couleur'].' - '.$_POST['type'];
include ($_SERVER[\"DOCUMENT_ROOT\"].'/frags/header.php'); 
?>


dans le fwrite je mets ça :
fwrite ($fichier , "
<?php
$page_title = $_POST['marque'].' - '.$_POST['couleur'].' - '.$_POST['type'];
include ($_SERVER[\"DOCUMENT_ROOT\"].'/frags/header.php'); 
?>
");


j'ai l'erreur suivante : Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

a écrit :
- Tes droits d’accès aux fichiers sont ils bons?

Je n'ai touché à rien, donc mes dossiers et fichiers sont en droits d'accès 705.

a écrit :
- La prévisualisation affiche bien la page comme tu le souhaite?

Oui

a écrit :
- Le but est il de créer des pages par combo Marque/Couleur/Type? (si oui, une base de donnée et une page dynamique seront de meilleur goût...)

Par Combo ? Je comprends pas ce que tu veux dire, le but est de créer la page www.monsite.com/marque/couleur/type.php. Je ne maîtrise pas les BDD, donc dans la mesure du possible, j'aimerais éviter de m'en servir Smiley decu
Nheavy a écrit :

Par exemple si je veux écrire :
&lt;?php
$page_title = $_POST['marque'].' - '.$_POST['couleur'].' - '.$_POST['type'];
include ($_SERVER[\&quot;DOCUMENT_ROOT\&quot;].'/frags/header.php'); 
?&gt;


dans le fwrite je mets ça :
fwrite ($fichier , &quot;
&lt;?php
$page_title = $_POST['marque'].' - '.$_POST['couleur'].' - '.$_POST['type'];
include ($_SERVER[\&quot;DOCUMENT_ROOT\&quot;].'/frags/header.php'); 
?&gt;
&quot;);



fwrite ($fichier , '<'.'?php
$page_title = "$_POST[\'marque\'] - $_POST[\'couleur\'] - $_POST[\'type\']";
include ($_SERVER["DOCUMENT_ROOT"]."/frags/header.php"); 
?'.'>');


Nheavy a écrit :

Je n'ai touché à rien, donc mes dossiers et fichiers sont en droits d'accès 705.


Dossier : 755
Fichiers: 644

Nheavy a écrit :

Par Combo ? Je comprends pas ce que tu veux dire, le but est de créer la page www.monsite.com/marque/couleur/type.php. Je ne maîtrise pas les BDD, donc dans la mesure du possible, j'aimerais éviter de m'en servir Smiley decu


Tu ne souhaite pas t'en servir? oO Le web statique c'est fini depuis ... 2000?
Modifié par JJK801 (05 Oct 2012 - 14:06)
Oo merci beaucoup,

J'ai réécrit mon fwrite avec les header et footer en 'pas dur' (mou?) et grâce à toi, mon fichier s'écrit au lieu de rester vide !

J'ai toujours, par contre, mon soucis de dossier :
a écrit :
Dossier : 755
Fichiers: 644

J'ai mis tous mes dossiers en 755, mais pour les fichiers, lesquels dois-je modifier ?

Aussi, je ne comprends pas pourquoi lors de la validation de mon formulaire, je suis envoyé vers page_generator.php au lieu d'atteindre mon nouveau fichier comme devrait le faire :
$fichier = fopen ($page_url , "r");


a écrit :
Tu ne souhaite pas t'en servir? oO Le web statique c'est fini depuis ... 2000?

Ça s'imposera en temps voulu mais tant que je peux faire avec PHP, je préfère éviter de me prendre la tête avec un nouveau langage. J'ai déjà essayé de m'y frotter mais j'ai pas compris le fonctionnement des table Smiley decu
Nheavy a écrit :

J'ai mis tous mes dossiers en 755, mais pour les fichiers, lesquels dois-je modifier ?


Théoriquement tous Smiley cligne après ça dépend de tes contraintes.

Nheavy a écrit :

Aussi, je ne comprends pas pourquoi lors de la validation de mon formulaire, je suis envoyé vers page_generator.php au lieu d'atteindre mon nouveau fichier comme devrait le faire :
$fichier = fopen ($page_url , "r");



fopen n'est pas une redirection, il sert a ouvrir un fichier sur le serveur (dans ton cas en lecture seule du fait du paramètre "r").

Pour être redirigé vers tapage, il faut faire:

header('location:/chemin/vers/ma/page.html');


à la fin de ton fichier page_generator.php

Nheavy a écrit :
Ça s'imposera en temps voulu mais tant que je peux faire avec PHP, je préfère éviter de me prendre la tête avec un nouveau langage. J'ai déjà essayé de m'y frotter mais j'ai pas compris le fonctionnement des table Smiley decu


Je ne peut que te conseiller de intéresser aux tutos sur le sujet (ainsi que sur le PHP5 et les objets), sinon tes projets seront obsolètes dès leurs mise en ligne, c'est assez contre productif...

Sans compter que tu gagnera un temps fous sur tes projets une fois que tu les maîtrisera. ( c'est genre 2 mois de boulot pour apprendre tout ça en s'y mettant 1h ou 2h tous les soirs )

C'est un peu comme construire une maison high-tech sur des fondations pourries, ça tiens un moment mais la cata est inévitable.

c'est ce qu'on appel reculer pour mieux sauter.
Merci beaucoup, ça fonctionne nickel.

Je vais me mettre aux BDD suivant tes conseils Smiley cligne

Bonne continuation !