[PHP] Gestion de design

Statut
N'est pas ouverte pour d'autres réponses.

Ezekiel !

Elite
Hello !
J'aimerais faire une gestion de design en "temps réel" en php.
Comprenez par la que j'aurai besoin d'une page permettant de modifier le design et de voir directement le resultat. Je pense pouvoir le faire en "ajax" sans trop de probleme.
La ou je ne sais pas trop quoi faire c'est pour stocker les informations.
Dois-je stocker toute les infos (alignement, position, police, taille police, bref un paquet d'infos) dans une bdd.
Ou bien dois-je gérer le tout avec des fichiers mais quelle type de fichier ? Stocker directement sous forme de CSS ? Mais la je vais galérer pour récuperer les styles quand l'user voudra les modifier ...
Sous forme de fichier php du style : header.php qui contient
<?
$bg = "#FFFFFF";
$color = "...";
...
?>
Ou bien sous forme de fichier xml. Je pencherais pour cette 3eme solution mais le probleme est que je n'ai jamais utilisé de xml ^^
Bref si qqun a des liens, des infos, des conseils à me donner, je suis preneur :D
 

FoX SpeEd

Touriste
déja petite question qu'elle style de modification tu veut pouvoir faire? Juste les couleurs? les images aussi? Faire toi même plusieurs styles prédéfini que l'utilisateur choisira?
 

*Serval

Elite
■ Lire un fichier XML en PHP
■■■■

Il existe plusieurs techniques selon la version de PHP. Supposons que vous utilisez PHP 5. L'extension SimpleXML est activé par défaut. On peut donc charger un document xml très simplement.

Supposons que 'librairie.xml' contienne les informations de libraire décrites en début de propa. Dans la librairie, il y a trois livres. La balise livre est donc présente trois fois au même niveau. En php, on aura donc un tableau.

Code:
<?php
$fichier = 'librairie.xml';

if ( file_exists($fichier) ) {

/* On charge le fichier */
$maLibrairie = simplexml_load_file($fichier);

/* Pour les curieux, on regarde le contenu de la variable */
var_dump($maLibrairie);

/* Affiche "Douglas Adams" */
echo $maLibrairie->livre[0]->auteur;

/* On parcourt le tableau de livres */
foreach ($maLibrairie->livre as $book) {
echo $book->auteur;
echo " est l'auteur du livre ";
echo $book->titre;
}

} else {
echo "Le fichier $fichier n'existe pas.";
}
?>
Il est donc très simple d'utiliser XML pour y lire des informations. Le principal est de savoir où trouver l'information.



■ Ecrire un fichier XML en PHP
■■■■

On utilise toujours les même techniques pour écrire dans un fichier. Ca fait longtemps que ça n'a pas été présenté en propa, alors c'est parti :p

Supposons que vous vouliez générer un fichier atom. Don't Panic ! C'est du xml aussi :p Les utilisateurs de votre site auront seulement accès au fichier "flux.xml". Vous générez votre fichier quand vous voulez en appelant ce script. Je suppose que vos infos sont stockées ailleurs ;) Par exemple dans une base MySql.

Attention, ce script est un cas d'exemple. Le flux est volontairement raccourci, pour maintenir une certaine lisibilité du code. On suppose que la connection sql est faite.

Code:
<?php
/* ... */

$monFichier = "flux.xml";
$monContenu = '';

$requete = "SELECT titre,link,desc FROM mesArticles WHERE estPublie='true' ORDER BY date DESC LIMIT 7";
$result = mysql_query($requete);
/* On suppose qu'on est connecté ;) */

$monContenu.= '<?xml version="1.0" encoding="utf-8"?>'."\n";
$monContenu.= '<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">'."\n";
$monContenu.= '<title>Mon site web</title>'."\n";

while ( $entry = mysql_fetch_object($result) ) {
$monContenu.= '<entry xml:lang="fr">'."\n";
$monContenu.= '<title>'.$entry->titre.'</title>'."\n";
$monContenu.= '<link rel="alternate" type="text/html" href="'.$entry->link.'" />'."\n";
$monContenu.= '<summary>'.$entry->$desc."</summary>\n";
$monContenu.= "</entry>\n";
}

$monContenu.= '</feed>';

$pf = fopen($monFichier, "w"); /* On l'ouvre */
fputs($pf, $monContenu); /* Le contenu dans le fichier */
fclose($pf); /* On le ferme */

?>


Ceci est un gros copier/coller d'un article sur le secteur PHP du site parano.be ;)

Auteur : Yannick-O-WEB 66587
 

cyse

Elite
La façon dont je le ferai :

Avec un fichier CSS par défaut, dont toutes les propriétés modifiables sont des $variable :

exemple :
Code:
h1
{
background-color:  $style1;
background-image: url("...");
background-repeat: no-repeat;
background-position: $style2;
color: $style3;
margin: 0px 0px 0px 0px;
font-size: $style4 ;
font-family: "Verdana";
text-align: left;
height: 40px;
padding-left: 180px;
}
Sur ta page HTML, t'as un formulaire ou tu peux entrer facilement tes choix, quand t'envoit le formulaire, tu récupert ce que l'utilisateur veut :
$style1 = $_POST['bgcolor'] ... ça c'est facile, si l'utilisateur a rien entré, une valeur par défaut.

Pour optimiser la chose, tu pourrais faire deux CSS, un statique (celui commun à tous), et un dynamique (généré par php).

Pour chaque utilisateur tu mets soit un fichier css dynamiquement créée par php (avec infos récupéré de la base de données), ou bien, mieux, tu créées un fichier css pour chaque utilisateur (ça permet aussi aux utilisateurs de voirs les styles des autres), mais tu as toujours besoin d'une copie en base de données si l'utilisateur veut modifier son design (le fichier css permet de soulager la base de données, car les gens vont pas modifier leur design tout les deux jours).

Ce qui risque d'être dure c'est de voir les modification du design en temps réel, je ne suis pas sure que ça soit possible d'ailleurs, sans rechargement de page. Avec rechargement, faudrait faire un bouton afficher, qui envoit le formulaire, php mets alors les données du formulaire en session, crée un fichier css, et re-affiche le formulaire avec les données qui viennent d'etre envoyées.

Si tu veux du xml, tu fais comme je viens d'expliquer, mais au lieu de mettre une copie du fichier en base de données pour pouvoir modifier, tu mets ça dans un fichier xml, ça soulage la base de données, ca prendra juste un peu plus d'espace disque.

Autre solution, tu fais juste un fichier xml, et tu génères le fichier css à partir de là, par contre ça fait plus de traitement que d'avoir directement un fichier css, mais t'économise de la place.

a toi de voir
 

*Serval

Elite
la solution de cyse me semble également être la meilleure
 

cyse

Elite
:love:

serval tu sais si on peut forcer le navigateur a ré-interprété le fichier css sans recharger la page ?
 
1er
OP
Ezekiel !

Ezekiel !

Elite
Yeah j'mattendais pas à avoir une si belle réponse :)
Je pense que ta solution est la meilleur cyse, je vais y travailler toute la journée de demain (la j'en peux plus de php) & je dirais quoi ici ^^
Merci encore pour toutes les réponses ! A demain ^^
 

PiaFlalCoOl

NiuAge
Si tu réussis, montre-nous le résultat, je trouve ca une excellente idée !
 

*Serval

Elite
cyse a dit:
:love:

serval tu sais si on peut forcer le navigateur a ré-interprété le fichier css sans recharger la page ?
hum suis pas encore un pro en AJAX et autres, donc à première vue, je vois pas bien non...


Mais ca serait interessant de se renseigner, si j'y pense après mes exams ^^
 
1er
OP
Ezekiel !

Ezekiel !

Elite
PiaFlalCoOl a dit:
Si tu réussis, montre-nous le résultat, je trouve ca une excellente idée !
Je mettrais une ptite démo :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut