8792 sujets

Développement web côté serveur, CMS

bonjour à tous ,

sur mon site je désire répertorier mes articles , et dans certaines pages mentionner ou tous les articles ou les 5 derniers par date de création ( je vais pour l'instant me baser sur lastupdate ...).(avec PHP)

J'ai regardé les exemples des 'news' (par ex sur le site du Zéro ) , mais je ne désire pas inclure la page (le contenu de l'article ) dans la base Sql !

En effet en mélangeant sur mes pages des langages Js , Svg et autres joyeuseté , je risque d'accumuler les problèmes entre les exécutions des langages.

Je cherche donc une façon logique de référencer chaque article écrit (dans une base pour les associer par la suite à des commentaires de visiteurs ) et ce de façon + ou moins "automatique", parce que la seule solution que j'ai trouvé est d'écrire moi-même ces informations dans une base Sql ou un fichier Xml , ce qui m'impose de ne jamais oublier lors de modif sur les articles de manuellement rectifier les infos dans la base .
.... pas très orthodoxe !

Je tourne un peu en rond moi et mon papier -crayon !

merci de vos conseil
Modifié par kzone (11 May 2007 - 00:30)
Salut kzone !

Je ne comprends pas bien ce que tu veux faire Smiley rolleyes . Tu dis que tu ne veux pas inclure le contenu de l'article dans la base SQL donc je suppose que tu ne veux que référencer la page à inclure dans ta page active ? Quelque chose comme ça ?
[b]Id_Article____page_______________date______[/b]
23_________Article54.php___20070408
22_________Article26.php___20070407
a écrit :
sur mon site je désire répertorier mes articles , et dans certaines pages mentionner ou tous les articles ou les 5 derniers par date de création ( je vais pour l'instant me baser sur lastupdate ...).(avec PHP)


j'en deduis que tu dois forcément avoir le contenu de ces articles quelquepart. j'imagine que tu ne veux pas modifier une a une toute les pages où apparait l'article en cas de modif. si c'est pas dans ta base de données c'est sur une page précise que tu vas include() ( par exemple ) ou alors dans un fichier.

donc ce quelquepart dois exister et avoir un nom de fichier,page,etc..
bref un identifiant. c lui que tu vas employer à mon avis.

de toute façon un commentaire ne devrais pas être rattaché a plus d'un article. donc dans ta base t'as une serie de commentaires et chacun a un champ avec l'identifiant de son article.

maintenant fichier texte,page,BDD tout ça me parait revenir au même. et si au final tu as besoin d'une BDD autant tous gérer de façon uniforme.

edit:quoiqu'il en soit les modif se feront surement automatiquement. soit tu modifies le texte du commentaires soit tu modifies le texte de l'article. je vois pas de raison de modifier la référence. sauf si tu lui avais donné un sens précis mais c'est pas la peine a mon avis. avec des Id autoincrementé dans une BDD ça marche trés bien et ces numéros n'ont pas de sens
Modifié par CPascal (08 May 2007 - 12:27)
salut

a écrit :

heyoan a écrit
Je ne comprends pas bien ce que tu veux faire

... je crois que c'est un de mes + gros défaut ... l'expression Smiley lol

a écrit :

CPascal a écrit
j'en deduis que tu dois forcément avoir le contenu de ces articles quelquepart. j'imagine que tu ne veux pas modifier une a une toute les pages où apparait l'article en cas de modif. si c'est pas dans ta base de données c'est sur une page précise que tu vas include() ( par exemple ) ou alors dans un fichier.


C'est un peu ce que je cherche à faire , avec un 'template pour le modèle des articles et un include () de l'article lui-même !
Je suis en train de faire des essais mélangeant cet 'include' en y insérent du JS et du SVG ... déjà c'est pas toujours concluant , ( je suis assez débutant en PHP) , car je tente de mettre tout le texte de l'article dans une variable et de faire un 'return' depuis le 'template' .. Smiley langue

J'ai de plus en plus la tentation de mettre une page html y basta , mais bon je vais vite me retrouver avec mes anciens problèmes de gestion du Tout !

bon le mieux est de vous montrer où j'en suis ( pas loin je sais Smiley ohwell )

un articles
liste des articles
cette liste doit être générée pour donner les 5 dernier articles par catégories !

j'espère que c'est maintenant plus clair Smiley cligne


********************************************************************
EDIT : retour du boulot où j'ai un peu mis de l'ordre dans tout cela ( sans me faire voir bien sûr Smiley lol )

premièrement merci au tuto de cygnus et des explications sur include() qui m'ont bien avancé ( c'est clair et précis ) .

J'ai donc :
1° . un 'template général pour les articles ; template.php


// code du modèle .......
.......
// inclusion de l'article désigné par le nom de l'article
<?php include($nom_article);
?>
......


2° l'article a inclure : lesbases.inc.php


code blablabla ...html 
        blibli .... html +svg 


3° : la page elle-meme affichée dans le navigateur

// je récupère l'URl 
// j'applique une fonction pour extraire le nom 
// ex :  http:/......../articles/svg/lesbases.php  --> extrait 'lesbases' mis dans nom_fichier
$nom_fichier = FileName($url) ;

// j'associe le nom du fichier avec le nom de l'article
$nom_article = $nom_fichier."inc.php';

// j'inclus le template général  qui inclus également l'articles définit avec nom_article
include("template.php");


.... vous suivez ? Smiley cligne

Et c'est ici que je me perd pour récupérer de façon automatique les données concernant
l'article inclus :
pour afficher les 5 dernier articles , il faut que je trie les article par date de création par exemple (je fais l'impasse sur les mise à jour ) .
Sans centraliser ses données (date, url, titre (catégorie)) dans une base de données , il m'est impossible de comparer et donc trier par ordre chronologique Smiley sweatdrop

Comment est-ce que je peux récupérer ces données pour chaque articles et les soumettre à une base de données "automatiquement" ( vu que ce n'est pas une 'news' il n'y a pas de soumission à SQL (ou autre) par un quelconque clic ... Smiley murf

J'ai beau tourner en rond mes pauves connaissances php , je ne trouve que la solution de rentrer manuellment ses données.

.. une petite idée Smiley rolleyes
Modifié par kzone (09 May 2007 - 00:20)
re-Salut !

effectivement je ne vois pas comment tu peux faire sans table SQL.
Quelque chose comme :
[b]Id_____categorie____Libelle_______page_______________lastupdate[/b]
24____vector____Aaaa_______article48.php___20070509
23____jsp_______Bbbb_______article33.php___20070507
22____vector____Cccc_______article21.php___20070429
21____xml_______Dddd_______article13.php___20070323
20____xml_______Eeee_______article09.php___20070109
19____svg_______Les Bases__lesbases.php____20070101

Et puisque tu dis qu'il n'y a aucune soumission par un clic pour une nouvelle page ou pour une mise à jour je ne vois pas bien comment faire autrement que de le faire manuellement. Même si un formulaire dans lequel tu ne saisirais que la catégorie, le Libellé et le nom de la page pourrait te faciliter un peu les choses cela ne serait toujours pas en automatique Smiley ohwell
merci déjà pour tes réponses ...

ben j'dois être u peu fainéant pour vouloir de 'tout automatique' Smiley langue

le seul moment où je peux envisager un cotrôle "auto" c'est au moment de l'affichage de la page contenant les listes d'articles !!

il me faudrait lister Tous les fichier 'articles' et faire un controle sur les infos envoyé dans le header par le serveur ... tel fichier identifier par son Url a t'elle été modifiée ??
Je ne connais pas hèlas assez bien les fonctions et méthodes Php pour savoir si certaines peuvent réaliser de tels contrôle ...
Hello,

je pense que tu pourrais utiliser la fonction filemtime pour récupérer la date de dernière modification de tes fichiers articles.

Et en y repensant (après une bonne nuit de sommeil Smiley ravi ) tu pourrais peut-être automatiser un peu plus si toutes tes pages articles sont classées dans un même répertoire en fonction de leur catégorie (ce serait un traitement annexe d'administrateur...)
Quelque chose comme :
<?php
$rep = "articles/vector";
$dossier_vector = opendir ("articles/vector");
	while ($fichier = readdir ($dossier_vector)) {
	        $file = $rep.'/'.$fichier;
		// echo "Nom complet : $file<br>";
		$lastupdate = date ("YmdHis", filemtime($file));
		// echo "Fichier : $fichier  --> MaJ : $lastupdate<br>";
		// Test de l'existence dans la BDD de page = $fichier
		// Si n'existe pas --> création avec catégorie = 'vector', id auto...
		// Si existe mais date <> $lastupdate --> update de date...
		
		// Il ne manque plus que le Libellé...
		
}
closedir ($dossier_vector);

$rep = "articles/xml";
$dossier_xml = opendir ("articles/xml");
	while ($fichier = readdir ($dossier_xml)) {
	        $file = $rep.'/'.$fichier;
		// echo "Nom complet : $file<br>";
		$lastupdate = date ("YmdHis", filemtime($file));
		// echo "Fichier : $fichier  --> MaJ : $lastupdate<br>";
		// Test de l'existence dans la BDD de page = $fichier
		// Si n'existe pas --> création avec catégorie = 'xml', id auto...
		// Si existe mais date <> $lastupdate --> update de date...
		
		// Il ne manque plus que le Libellé...
		
}
closedir ($dossier_xml);

etc...

?>


Je manque de temps pour tester tout ça mais ça devrait fonctionner...

A+ Smiley cligne
Modifié par Heyoan (09 May 2007 - 06:55)
ok ... encore merci je vais tester cela avant d'aller au boulot (si j'ai le temps !! Smiley ravi ) ...
je pensais bien me servir des répertoires --> catégories et donc réduite les tests de fichiers .... je vais voir tout cela Smiley cligne
re-bonjour ,

je me rapproche du but avec un mélange de tri dans les fichier et répertoire (catégories ) et
l'utilisation de filemtime .... pour un simple listing la base de données devient le répertoire courant (".") ...

j'ai d'ailleurs trouver un exemple de fonction de tri utilisant "ASC" et "DESC" ...

il n'y en a pas une similaire "DATE" Smiley lol
mais je crois que la direction est celle-là ...'ya plus qu'à Smiley langue

merci !!
cette partie est en partie résolue
Modifié par kzone (11 May 2007 - 00:30)