8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,
Je suis en train de faire un portail intranet pour une bibliothèque, et il ne me reste plus qu'une chose à faire, et je bloque.
En fait, il faudrai que je mette en place un système très simple (genre un formulaire) pour permettre à la documentaliste de mettre des news dans un petit espace réservé à ça sur le site.
Par contre, je ne vois pas trop comment m'y prendre...
Je pensai créer une autre page (orpheline) où elle entrerai le titre et le contenu de la news dans un petit formulaire (un input et un textarea).
Mais ensuite, comment faire pour qu'automatiquement la news soit afficher sur le site (dans l'espace prevu à cet effet) et que quand elle en entrera une autre, l'ancienne soit automatiquement écraser par la nouvelle?

Je pensai à une fonction php qui écrirai dans un fichier lors de l'envoi du formulaire, et une autre qui lirai ce fichier pour l'afficher...

Enfin, que me conseillez-vous de faire?

Merci de votre attention!
Salut,

le plus souple serait d'utiliser PHP et Mysql...

Si la nouvelle news doit écraser l'ancienne tu peux aussi faire au plus simple et écrire/modifier un simple fichier texte que tu pourras afficher avec un simple readfile. PHP a une foultitude de fonctions qui permettent de faire cela : voir cette page.
Merci, finalement je suis en train de tester avec un simple ficher texte. Ton lien va m'être très utile, merci!
Quand j'aurai avancé un peu plus je posterai le code au cas où quelqu'un en aurai besoin un jour... ou bien parce-que j'ai un problème avec...

Hasta luego! Smiley hippy
Administrateur
Bonjour,

comme c'est pas très dur, autant sauvegarder le fichier texte DEUX fois: sous le nom qui sera lu pour afficher la news (genre news.txt) et aussi zzarchive_147054025024.txt avec la date au format PHP.
Comme ça en cas de souci tu as une sauvegarde Smiley smile
Envoyer un mail fonctionne tout aussi bien, si c'est activé: en l'absence de sécurité ça permet de détecter une utilisation frauduleuse du formulaire et qu'une news pas voulue du tout a été postée.
Modifié par Felipe (06 May 2009 - 18:35)
Ok, merci, mais pour la date de la news, comme c'est le même fichier qui sera écrasé à chaque nouvelles news, je vais simplement utiliser un truc du genre date ('faut que j'aille voir les arguments possible pour avoir juste jour, mois, année' , last_modified ('chemin du ficher dont je veux voir la date de dernière modification').
Bon, pour la syntaxe, je suis pas sûr mais j'en suis pas encore là, alors je verrai en temps voulu (cet après-midi sûrement...)

Et sinon, ben ça devrai être bientôt prêt, pour l'instant j'ai fait ça :
- affichage du formulaire avec en valeur par défaut le contenu des fichiers (titre et contenu) en cas des simple modification
- récupération des données et stockage (ecrasement) dans les fichiers adéquat (titre et contenu)
- bouton 'rétablir' pour annuler la modification en cours
- bouton 'effacer' pour... et là je vais vous surprendre... pour éffacer!


Ce dernier est en cours de développement car un simple input type = reset n'efface pas les champs mais rétabli les valeurs par défaut, ce qui rejoint à faire le troisième point.
Du coup, je créer une fonction php pour vider les fichiers...
Voilà, il ne me restera plus qu'a faire afficher les news sur le site et pis ce sera fonctionnel!

Par contre je garde ton idée de sauvegarde, c'est pas bête du tout, je vais sûrement l'insérer une fois que ce sera déjà fonctionnel (chaque choses en son temps...)

merci beaucoup!
Bon, ça y est, j'ai terminer le travail, j'ai fait toute une serie de test, ça marche!
Par contre, ça reste dans un fonctionnement final assez basique.
Donc, voici le code (respecter l'ordre dans lequel je le présente, sinon y aura quelques soucis...) :

1) code pour traiter l'information si le bouton "publier" du formulaire d'édition de news est 'clické' :

<?php
	if (isset($_POST['publier']))
	{
		function traitement_texte($texte)
		{
			$texte = trim($texte);/*supprime en début et fin de la chaine de caractères les espaces, tabulations, nouvelles lignes, retours chariots, caractères nuls et tabulations verticales */
			$texte = stripslashes($texte); /*supprime les antislashs d'une chaine de caractère*/
			$texte = htmlspecialchars($texte, ENT_QUOTES, 'UTF-8');/*remplace les caractères & " ' < > par leurs entités html &amp; &quot; &#039; &lt; et &gt; pour sécurité*/
			return ($texte);
		};

		$titre =  traitement_texte($_POST['titre']);
		$contenu = traitement_texte($_POST['contenu']);

		if (($titre != '') && ($contenu != ''))
		{
			$pointeur_titre = fopen("news/titre_news.txt","w");
			$pointeur_contenu = fopen("news/contenu_news.txt", "w");

			if(fwrite ($pointeur_titre, $titre) == false)
			{
				$resultat = "Problème lors du stockage du titre, veuillez contactez le service informatique.\n";
			}

			elseif(fwrite($pointeur_contenu, $contenu) == false)
			{
				$resultat = "Problème lors du stockage du contenu de la news, veuillez contactez le service informatique.\n";
			}

			else
			{
				$resultat = "La news à bien été publiée.\n";
			}

			fclose ($pointeur_titre);
			fclose ($pointeur_contenu);
		}

		else
		{
			$resultat = "Veuillez remplir tous les champs SVP.\n";
		}
	}


(Je ne ferme pas tout de suite la balise PHP car ce n'est pas encore fini !)

2) Code pour traiter l'information si le bouton "effacer" du formulaire d'édition de news est 'clické' :


	if (isset($_POST['effacer']))
	{
		$pointeur_titre = fopen("news/titre_news.txt","w");
		$pointeur_contenu = fopen("news/contenu_news.txt", "w");

		fclose ($pointeur_titre);
		fclose ($pointeur_contenu);
	}


3) Bon, maintenant, voici la fonction pour afficher la news (oui, je sais, on à pas encore vu le formulaire pour la créer cette news, ça va venir, faites moi confiance...)


if(file_get_contents('news/contenu_news.txt') != "")
	{
		echo "<h3 class=\"news\">News du " . date ("d m Y", filemtime('news/contenu_news.txt')) . "</h3>\n";
		echo "<h5 class=\"news\">" . file_get_contents('news/titre_news.txt') . " :</h5>\n";
		echo "<p class=\"news\">" . nl2br(file_get_contents('news/contenu_news.txt')) . "</p>\n";
	}
?>


(Là, ça y'est, j'ai fermé le bloc PHP, mais ce n'est toujours pas terminer...)

4) Le formulaire d'édition de la news


<h2>Formulaire de news</h2>

<form method="post" action="">
	<p>
		<em>Formulaire de news</em><br/>

		<?php
			$titre_news = file_get_contents('news/titre_news.txt');
			$contenu_news = file_get_contents('news/contenu_news.txt');
		?>

		<label for="titre">Titre de la news</label> :<br/>
		<input type="text" name="titre" size="39" maxlength="60" tabindex="30" value=<?php echo '"' . $titre_news . '"'; ?>/><br/>

		<label for="contenu">Contenu de la news</label> :<br/>
		<textarea name="contenu" id="contenu" rows="20" cols="37" tabindex="40"><?php echo $contenu_news; ?></textarea><br/>

		<input type="submit" name="publier" value="Publier" />
		<input type="reset" value="Rétablir"/>
		<input type="submit" name="effacer" value="Effacer" />
	</p>
</form>

<?php
	echo "<p>" . $resultat . "</p>";
?>


Le bouton rétablir (de type reset), va permettre à l'utilisateur d'annuler la modification qu'il à faite (ajout ou suppression de texte). Par contre, ça n'annule pas une modification qui à été publié, ni l'appuie sur le bouton effacer...
Il y a aussi la page de PPK qui peut donner des idées pour modifier des news déjà publiées, puis, (en ajoutant un bouton ou un lien en tête) pour en publier de nouvelles. Avec quelques fonctionalités supplémentaires (seuls les auteurs, à l'exception de l'animateur, ont le droit de modifier leur billet), on arrive assez vite à un blog utilisable dès le cours préparatoire...
Julien de Prabere a écrit :
Il y a aussi la page de PPK qui peut donner des idées pour modifier des news déjà publiées
Mouaip... c'est un brin intrusif comme JavaScript non ? Smiley ohwell
Intrusif ? oui peut-être, mais pour donner des idées...

Quant à ceux qui abhorent le javascript, il suffit de leur conseiller quelques animations de type aquarium avec poissons rouges ou exotiques ... Ils pourront même se passer de navigateur, un écran de veille suffit. Et puis, c'est très pratique, non seulement les cas de mortalité sont rares mais surtout plus de corvée pour changer l'eau !
Julien de Prabere a écrit :
Intrusif ? oui peut-être, mais pour donner des idées...
Vu qu'on est sur Alsacréations qui est dédié à l'accessibilité autant proposer des solutions accessibles non ? Smiley smile

Quant à JavaScript il n'est pas ici question de l'aimer ou non (perso j'aime) mais de l'utiliser en surcouche (unobstrusive JavaScript in english).