Une page qui se créée automatiquement ...

Invité
Invité n'ayant pas de compte PHPfrance

13 déc. 2005, 21:34

Ben, j'ai appris le php !
Je sais les requètes Mysql etc ... pour effacer, enregistrer ...

Mais en fait c'est pour mon lien :
	$reponse4 = mysql_query('SELECT * FROM creer_un_article');
	while ($donnees4 = mysql_fetch_array($reponse4))
	{
	echo '<a href="'.$donnees4['titre'].'.php">'.$donnees4['titre'].'</a></br>';
	}
Je dois mettre quoi dans le lien alors ?

Eléphant du PHP | 383 Messages

13 déc. 2005, 21:50

le fait d'ecrire en dur des fichiers a plusieurs avantages :

- allegement de la charge du serveur
- modification des articles : si tu as un truc qui code les accents, ou un langage style bbcode, tu stocke dans la base la version non codée ( donc facile a modifier ) et en dur la version codee.
- en plus, si tu as des articles consequent, ou que tu veux exercer un controle sur la pulication de modification, tu peux stocker dans la base la version modifiee tant qu'elle n'est pas terminee / validée, et la reecrire en dur seulement quand tu l'as valide. en gros, c'est le meilleur moyen pour gere une version brouillon / modifiable et une version validee / publiable

pour le design, il suffit de fonctionner avec des include et des feuilles de style, et la modification globale ne pose aucun probleme.

il me semble que SPIP, ou Wikipedia par exemple fonctionnent comme ca. effectivement, la place prise est plus importante, mais ca amene des avantages qui sont interressant, notamment dans le cadre d'un site collaboratif ou tout le monde peut ecrire voire modifier des articles. apres, tout depend du fonctionnement du site, c'est une technique qui colle a certain cas precis ( le mien, en l'occurence ), et comme c'est ce qu'avait l'air de vouloir faire notre ami, j'essayais de l'aider dans ce sens. mais il est tout a fait possible que ce soit une erreur dans son cas.

Invité
Invité n'ayant pas de compte PHPfrance

13 déc. 2005, 21:55

En fait, J'ai fais ce lien :
<?php

	$reponse4 = mysql_query('SELECT * FROM creer_un_article');
	while ($donnees4 = mysql_fetch_array($reponse4))
	{
	echo '<a href="article.php?'.$donnees4['titre'].'">'.$donnees4['titre'].'</a></br>';
	}
?>
Et dans la page article.php, je dois faire un $_GET ? si oui, je dois mettre une condition ou pas ?

ViPHP
ViPHP | 2144 Messages

13 déc. 2005, 22:31

jobherzt : non, à ma connaissance les applications dont tu parles ne travaillent pas avec des fichiers en "dur", mais bien avec des pages dynamiques, mais le tout est caché par de l'url rewriting. (une recherche te renseignera mieux que moi sur le sujet)
Quand à différencier les versions d'un article avec stockage Db et stockage en dur, cela va avant tout augmenter considerablement l'espace de stockage nécessaire, donc....

flyxter1: l'idée y est tout à fait; juste une remarque : il vaudrait mieux utiliser un id unique dans le lien plutot que le titre de l'article.(si tu n'as pas d'in unique dans ta db, ajoutes un champ autoincrémenté) ce qui te garantira qu'il n'y aura pas de risque de confusion (cas de deux articles avec le même titre) et limitera les risques de problême en cas d'espace dans le titre.
<?php

    $reponse4 = mysql_query('SELECT id, titre FROM creer_un_article');
    while ($donnees4 = mysql_fetch_array($reponse4))
    {
    echo '<a href="article.php?id='.$donnees4[id'].'">'.$donnees4['titre'].'</a></br>';
    }
?>

Ensuite dans la page qui affichera le texte de l'article, il te suffit de récuperer l'id avec $_GET['id']
Ce qui te donnera :
<?
$reponse4 = mysql_query('SELECT * FROM creer_un_article where  id='.$_GET['id']);
$donnees4 = mysql_fetch_array($reponse4))
echo '"$donnees4['text'];

?>

Reste à rafinner un peu, notamment en ne récuperant dans le select que les champs utiles.

Eléphant du PHP | 383 Messages

14 déc. 2005, 00:42

je sais que je parasite un peu ce post en le faisant partir sur un autre debat, mais ca m'interresse : il me semble que les logiciels que j'evoquias integraient un systeme de "cache". qu'est ce que c'est si ce n'est pas ce dont je parlais ? ( ca n'est pas une question oratoire, c'est une vraie question, je ne pretends pas avoir la reponse :-) ). accessoirement, dans mon cas :

- j'ai une serie de fiches, rangee dans une ou plusieurs categorie, ecrite dans un langage style bbcode/spip/wikipedia pour la mise en forme, avec codage des caractere sepciaux avant affichage
- tout le monde peut creer / modifier un article, mais je verifie avant de publier. accessoirement, j'aimerais qu'il soit possible de faire / modifier un article en plusieurs fois, ie de pouvoir laisser un article "en plan", inachevé sans que cela soit vu par les visiteurs. donc a priori :

- pour creer l'article, je dois l'afficer, mais aussi afficher les categorie qui le contiennet, l'auteur, + d'autres infos -> bcp d'appels a la base
- dans tous les cas, je dois avoir, me semble t il, 2 versions du meme article : la version "presentable", et la version "en developpement" ( que ce soit pour cause de travail en cours ou d'attente de validation de ma part )
- mon systeme de codage du texte fait que le contenu resultant pour l'affichage differe sensiblement de ce que l'utilisateur a tapé. or, pour pouvoir modifier un article dans de bonne condition, il faut qu'il retrouve ce qu'il a tapé, ie l'article dans mon pseudo langage avec des letres normales.
- le codage pseudo code -> html me semble forcement un peu bourrin, je n'imagine guere le faire a chauqe affichage de l'article.

dans ce cas, et dans ce cas seulement, ne croit tu pas que les avantages que je cherche necessitent forcement 2 versions, dont une en dur tant qu'a faire, de mes fiches ( au detriment, c'est vrai, de la place sur le disque, mais ai-je le choix ? et n'y gagne t'on pas en confort ?) ? ( encore une fois, je ne cherche pas a te convaincre que j'ai raison, il s'agit bien d'une question ouverte )

si tu as des elements de reponse, je suis preneur..

accessoirement, dans tous les cas wikipedia conserve x versions differentes de ses articles, puisque il y a un systeme d'historique, donc dur ou pas ils ont choisi de sacrifier de l'espace disque ( beaucoup ! ) pour ajouter une fonctionnalité interressante

ViPHP
ViPHP | 2144 Messages

14 déc. 2005, 15:34

Tu peux avoir différentes versions dans une même base de données, tout est une question de modélisation et d'optimisation de la structure. Ce que tu décris est un système relativement fréquent, et ne pose pas de problèmes particuliers.

L'usage d'une base de donnée permet justement d'avoir la plus grande souplesse possible.

Pour les systêmes de cache, c'est sujet intéressant. mais ce genre de procédé vient généralement en "surcouche" en venant doublonner une base de donnée. Mais la base de donnée reste le stockage où se trouve toutes informations (Sinon problême de cohérence entre le cache et la Db)