Pages :
Bonjour à tous!

Je viens vers vous aujourd'hui pour le problème suivant :

j'ai un site dont je voudrais pouvoir éditer les pages facilement, grâce à une sorte de mini cms très basique si on veut. Je voulais donc savoir s'il était possible de récupérer le contenu des includes (j'ai un gabarit qui est le même pour chaque page, seul le contenu texte change, ce contenu est dans des include) dans un texte area par exemple, d'éditer ce contenu, de valider avec un bouton qui rechargerait alors la page modifiée.

Est-ce que c'est possible? Si ce n'est pas possible avec la configuration actuelle, comment puis-je faire?

Je vous remercie d'avance Smiley smile
Hello,

a écrit :
Est-ce que c'est possible? Si ce n'est pas possible avec la configuration actuelle, comment puis-je faire?


Utilise une base de données qui contient le texte des pages, non ? Smiley smile
Hum... Je vois comment on pourrait récupérer le contenu, le mettre à jour ou le supprimer, mais dans la page du site, ce que les visiteurs voient, je ne vois pas trop comment je pourrais afficher le texte.

Disons que là c'est contenu dans un fichier php qui je "charge" grâce à un include, mais si c'est dans la base de donnée, comment lui dire que sur la page portfolio il doit afficher ce qui dans la base de données, correspond au portfolio?

De plus j'ai du javascript par exemple dans certaines pages, je peux inclure le javascript dans le texte qui sera dans la base de données?

Je débute dans le php, désolé si mes questions sont un peu naïves mais j'ai vraiment envie d'apprendre et de progresser Smiley smile

Merci déjà pour la réponse!
taggeur a écrit :
si c'est dans la base de donnée, comment lui dire que sur la page portfolio il doit afficher ce qui dans la base de données, correspond au portfolio?

La solution la plus simple et la plus rapide que je peux te conseiller :

1°) Tu crées une table "page" dans ta base de données qui contient les champs suivants :

- id_page (INT 11, clé primaire)
- nom_page (VARCHAR 50)
- contenu (TEXT)

A un enregistrement correspond le nom de ta page et son contenu texte.

2°) Sur chaque page de ton site tu crées une variable te permettant d'identifier la page (qui correspond au champ "nom_page" de ta table) :

$page = "nom-page"; (par exemple pour portfolio.php => $page = "portfolio";)

3°) Et pour finir une requête :

$req = mysql_query("SELECT * FROM page WHERE nom_page = ".$page);
$res = mysql_fetch_array($req);

$contenu_page = $res["contenu"];

echo $contenu_page;

Et le tour est joué Smiley smile

Tu pourra optimiser ça plus tard en regardant du côté de PHP_SELF (pour éviter de créer $page) et des fonctions php...

a écrit :
De plus j'ai du javascript par exemple dans certaines pages, je peux inclure le javascript dans le texte qui sera dans la base de données?

A mon avis, il vaut mieux mettre tes scripts dans un fichier externe et l'appeler dans <head>.
Bonjour bonjour Smiley smile

Je reviens à nouveau vers vous car je bloque sur une partie : comment puis-je faire pour dire de mettre à jour le champ contenu, dans la table, avec comme données ce que j'ai édité? J'ai un bouton sauvegarder les modif', je sais que la syntaxe est du type UPDATE VALUES etc, mais comment je lui dis : sur le bouton modif tu modifies, sur le bouton effacer tu effaces etc?

Merci d'avance Smiley smile
Heu... c'est plutôt: le bouton modifier est un bouton qui soumet le formulaire (qui englobe le textarea), et envoie les données du formulaire à un script (script PHP par exemple). Le script PHP en question récupère les données, fait quelques vérifications si nécessaires, se connecte à la base MySQL, et demande la mise à jour des entrées qui vont bien dans la base de données.

Sinon, je me serais plutôt penché sur un CMS très simple du type:
- PluXML;
- PureEdit (un peu jeune peut-être).
C'est à nouveau moi Smiley smile

Je suis donc en train de terminer la mini interface de gestion. J'arrive à charger le texte à modifier mais après au moment de l'update, celà ne fonctionne pas. Je crois que mon code ne dois pas être ni très bon ni très clair >_<

Vous pourriez m'aider un peu de nouveau?

Mercii Smiley smile

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Bo&icirc;te &agrave; Musique | Interface de gestion</title>
</head>

<body>
<h1 align="center">Interface de gestion du site Bo&icirc;te &agrave; Musique</h1>
<form name="admin" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<select name="choix">
<option name="admin">Index</option>
<option name="admin">Agence</option>
<option name="admin">Admin</option>
<option name="admin">Admin</option>
</select>
<input type="submit" name="Envoyer" Value="Envoyer" />
</form>
<?php
if(isset($_POST["choix"])){
$bidule=$_POST["choix"];
if($bidule == "Index"){
$page="index";
}
if($bidule == "Agence"){
$page="agence";
}
mysql_connect('localhost', 'root', '');
mysql_select_db('bamsecond');

$req = mysql_query("SELECT * FROM page WHERE nom_page = '" .$page. "'");
$res = mysql_fetch_array($req);

$contenu_page = $res["contenu"];
echo "<form name=\"edition\" method=\"post\" action=\"<?php $_SERVER['PHP_SELF']; ?>\" >";
echo "<div align=\"center\"><textarea name =\"contenu\" cols=\"100\" rows=\"25\">$contenu_page</textarea><div>";
echo "<input type=\"submit\" name=\"edition\" value=\"Editer\" >";
echo "</form>";
}?>

<?php
if(isset($_POST["edition"])){
$contenu=$_POST["contenu"];

mysql_connect('localhost', 'root', '');
mysql_select_db('bamsecond');

$update=mysql_query("UPDATE page SET contenu ='" .$contenu. "' WHERE nom_page= '".$page."' ");
}
?>

</body>
</html>
J'ai essayé comme ça, mais il me répond que la variable page n'est pas définie... Une idée??

Merci d'avance Smiley smile
Bonjour taggeur Smiley smile

Tu pourrais au moins répondre à Florent V, qui a pris la peine de te donner des suggestions, même si celles-ci ne répondent pas à ton besoin, non ?
Bin je l'ai fait Smiley smile j'ai cité mon code pour montrer ce que j'avais fait. J'ai bien récupéré les données, fait des vérifications et écrit les requêtes.

C'est vrai que ça n'était pas expressif comme réponse, je vous prie de m'excuser Smiley smile
Votre aide m'a déjà été très précieuse quant au chargement du texte dans la base de données, puis la récupération, mais là j'ai vraiment besoin de votre aide... Smiley sweatdrop
Bonsoir,

Lorsque tu fais une requête MySQL, tu n'affiches pas les erreurs éventuelles. Donc actuellement tu as sans doute des erreurs avec tes requêtes MySQL, mais tu ne sais pas lesquelles...

Il te faudrait des or die(mysql_error()); après chaque mysql_connect, mysql_select_db ou mysql_query.

(Ou bien passer par un logiciel déjà écrit et testé tel que PluXML, mais je me répète... et puis il n'est pas inutile d'apprendre à faire soi-même. Smiley cligne )
Modifié par Florent V. (30 Apr 2008 - 00:41)
Salut taggeur,

je vois au moins 2 erreurs dans ton code Smiley cligne :

d'abord il faudrait remplacer
echo "<form name=\"edition\" method=\"post\" action=\"<?php $_SERVER['PHP_SELF']; ?>\" >";
par
echo '<form name="edition" method="post" action="'.$_SERVER['PHP_SELF'].'">';

Ensuite ta seconde requête (après avoir soumis le form edition) ne peut pas fonctionner puisque comme te l'indique le message d'erreur la variable $page est inconnue : elle n'est déterminée que lorsque tu soumets le premier form admin. La solution consiste à rajouter dans le second form un input de type hidden comme par exemple :
echo '<input type="hidden" name="page" value="'.$page.'" />';
et de récupérer la variable $_POST['page']

A+ Smiley smile
Bonjour à tous et merci pour vos réponses Smiley smile

J'ai bien ajouté les mysql_error et j'ai modifié avec la ligne que tu m'as écrite heyoan, ce qui me donne un formulaire comme ça:
echo '<form name="edition" method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<div align="center"><textarea name ="contenu" cols="100" rows="25">$contenu_page</textarea><div>';
echo '<input type="submit" name="edition" value="Editer" >';
echo '</form>';


Cependant, j'ai l'erreur suivante qui s'affiche :
a écrit :
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files\EasyPHP 2.0b1\www\bamniketout\administration\gestion_site.php on line 32


Merci encore à tous Smiley smile

Edit : Je vous met le code entier, ca merdouille peut-être avant Smiley smile
<h1 align="center">Interface de gestion du site Bo&icirc;te &agrave; Musique</h1>
<form name="admin" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<select name="choix">
<option name="admin">Index</option>
<option name="admin">Agence</option>
<option name="admin">Admin</option>
<option name="admin">Admin</option>
</select>
<input type="submit" name="Envoyer" Value="Envoyer" />
</form>

<?php
if(isset($_POST["choix"])){
$bidule=$_POST["choix"];
if($bidule == "Index"){
$page="index";
}
//Connexion à la base de données
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('bamsecond') or die(mysql_error());

//Requêtes à la base de données
$req = mysql_query('SELECT * FROM page WHERE nom_page = "' .$page. '"') or die(mysql_error());
$res = mysql_fetch_array($req) or die(mysql_error());

$contenu_page = $res["contenu"];

//On affiche le contenu de la table dans un textarea pour modifier le texte
echo '<form name="edition" method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<div align="center"><textarea name ="contenu" cols="100" rows="25">$contenu_page</textarea><div>';
echo '<input type="submit" name="edition" value="Editer" >';
echo '<input type="hidden" name="page" value="'.$page.'" />';
echo '</form>';

//On récupère les variable du contenu et du nom de la page
$contenu=$_POST["contenu"];
$page=$_POST["page"];

//Connexion à la base de données
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('bamsecond') or die(mysql_error());

//Requête que la base de données
$update=mysql_query('UPDATE page SET contenu ="' .$contenu. '" WHERE nom_page= "'.$page.'" ');
echo "Le texte a bien &eacute;t&eacute; mise &agrave; jour!";


}
?>

Modifié par taggeur (30 Apr 2008 - 10:15)
J'ai continué de bidouiller, j'arrive à récupérer le contenu de la table et à l'afficher, mais j'ai deux notices.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Bo&icirc;te &agrave; Musique | Interface de gestion</title>
</head>

<body>
<h1 align="center">Interface de gestion du site Bo&icirc;te &agrave; Musique</h1>
<form name="admin" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<select name="choix">
<option name="admin">Index</option>
<option name="admin">Agence</option>
<option name="admin">Admin</option>
<option name="admin">Admin</option>
</select>
<input type="submit" name="Envoyer" Value="Envoyer" />
</form>

<?php
if(isset($_POST["choix"])){
$bidule=$_POST["choix"];
if($bidule == "Index"){
$page="index";
}
if($bidule == "Agence"){
$page="agence";
}
//Connexion à la base de données
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('bamsecond') or die(mysql_error());

//Requêtes à la base de données
$req=mysql_query("SELECT * FROM page WHERE nom_page = '" .$page. "'") or die(mysql_error());
$res=mysql_fetch_array($req);

$contenu_page=$res["contenu"];
$nom_page=$res["nom_page"];
//On affiche le contenu de la table dans un textarea pour modifier le texte
echo '<form name="edition" method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<div align="center"><textarea name ="contenu" cols="100" rows="25">'.$contenu_page.'</textarea><div>';
echo '<input type="submit" name="edition" value="Editer" >';
echo '<input type="hidden" name="page" value="'.$nom_page.'" />';
echo '</form>';

//On récupère les variable du contenu et du nom de la page
$contenu=$_POST["contenu"];
$page=$_POST["page"];

//Connexion à la base de données
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('bamsecond') or die(mysql_error());

//Requête que la base de données
$update=mysql_query('UPDATE page SET contenu ="' .$contenu. '" WHERE nom_page= "'.$page.'" ');
echo "Le texte a bien &eacute;t&eacute; mise &agrave; jour!";
}

?>
</body>
</html>


J'ai essayé avec les champs hidden mais il y a quelque chose qui m'échappe... Mais je ne vois pas quoi... Les deux notices sont :
Notice: Undefined index: contenu in C:\Program Files\EasyPHP 2.0b1\www\bamniketout\administration\gestion_site.php on line 47

Notice: Undefined index: page in C:\Program Files\EasyPHP 2.0b1\www\bamniketout\administration\gestion_site.php on line 48

Donc encore une fois c'est la récupération des valeurs de page et de contenu qui merdouillent >_<
C'est encore moi Smiley ravi !

J'ai modifié le script, le formulaire renvoie à une page de mise à jour qui récupère les infos et fais l'update.

Donc sur la première page j'ai :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Bo&icirc;te &agrave; Musique | Interface de gestion</title>
</head>

<body>
<h1 align="center">Interface de gestion du site Bo&icirc;te &agrave; Musique</h1>
<form name="admin" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<select name="choix">
<option name="admin">Index</option>
<option name="admin">Agence</option>
<option name="admin">Admin</option>
<option name="admin">Admin</option>
</select>
<input type="submit" name="Envoyer" Value="Envoyer" />
</form>

<?php
if(isset($_POST["choix"])){
$bidule=$_POST["choix"];
if($bidule == "Index"){
$page="index";
}
if($bidule == "Agence"){
$page="agence";
}
//Connexion à la base de données
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('bamsecond') or die(mysql_error());

//Requêtes à la base de données
$req=mysql_query("SELECT * FROM page WHERE nom_page = '" .$page. "'") or die(mysql_error());
$res=mysql_fetch_array($req);

$contenu_page=$res["contenu"];
$nom_page=$res["nom_page"];
//On affiche le contenu de la table dans un textarea pour modifier le texte
echo '<form name="edition" method="post" action="maj.php">';
echo '<div align="center"><textarea name ="contenu" cols="100" rows="25">'.$contenu_page.'</textarea><div>';
echo '<input type="submit" name="edition" value="Editer" >';
echo '<input type="hidden" name="page" value="'.$nom_page.'" />';
echo '</form>';
}
?>
</body>
</html>


et sur maj.php :

<?php
//On récupère les variable du contenu et du nom de la page
$contenu=$_POST["contenu"];
$page=$_POST["page"];

//Connexion à la base de données
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('bamsecond') or die(mysql_error());

//Requête que la base de données
$update=mysql_query('UPDATE page SET contenu ="' .$contenu. '" WHERE nom_page= "' .$page. '" ') or die(mysql_error());
echo "Le texte a bien &eacute;t&eacute; mise &agrave; jour!";

?>


Et là le mysql_error me sauve (presque) la vie! J'ai l'erreur suivante
a écrit :
Erreur de syntaxe près de 'title="Boîte à Musique">Boîte à Musique ZOU. " WHERE nom_pag' à la ligne 1


Et visiblement encore une fois, c'est le nom de page qui est ennuyeux...

On y est presque je crois Smiley lol (ps : j'ai testé la requete directement dans SQl en entrant en dur $contenu et $nom_page et ça marche, donc la requête est bonne!)
Pages :