Probléme création de page PHP
Bonjour,
J'ai débuter il y a quelques semaines dans le monde du PHP, et plus précisément dans les Base de Données, j'arrive à bien m'en sortir jusque là, mais depuis peu je me heurte à un probléme.
En faite je fais un mini site, et je voudrais intégrer une base de données (pour le moment pas de soucis), en page d'accueil, les news (un résumé) et en faite je voudrais connaître une solution pour que ma base de données génère automatiquement des pages dynamiques pour que les visiteurs puissent cliquer sur les news et tombé sur une autre page avec la news entière.
Je vous remercie par avance de l'intérêt que vous portez à mon message d'aide.
Cordialement
Dexter
J'ai débuter il y a quelques semaines dans le monde du PHP, et plus précisément dans les Base de Données, j'arrive à bien m'en sortir jusque là, mais depuis peu je me heurte à un probléme.
En faite je fais un mini site, et je voudrais intégrer une base de données (pour le moment pas de soucis), en page d'accueil, les news (un résumé) et en faite je voudrais connaître une solution pour que ma base de données génère automatiquement des pages dynamiques pour que les visiteurs puissent cliquer sur les news et tombé sur une autre page avec la news entière.
Je vous remercie par avance de l'intérêt que vous portez à mon message d'aide.
Cordialement
Dexter
Configuration: Mac OS X Firefox 3.1
31 réponses
Résumé de la discussion
La génération de pages dynamiques à partir d'une base de données permet d'afficher des news avec résumé sur l'accueil et d'ouvrir l'article complet sur une page dédiée. Plusieurs contributions proposent de lier les titres et images à des pages via GET, puis d'interroger la base et d'afficher le contenu complet. Des méthodes courantes utilisent substr pour l'extrait sur l'accueil, puis SELECT * FROM news avec ORDER BY ID DESC et LIMIT, et une page telle que news.php?id=… pour l'article. En cas d'évolution, privilégier une architecture séparant l'administration et l'affichage et moderniser le code avec PDO et des requêtes préparées pour renforcer la sécurité et la maintenance.
-
Je reviendrai surmen vers vous car je vais m'attaquer à une petite partie administration et après carrément un FORUM, ce qui risque d'être un peu plus dure qu'un simple système de news ^^
-
Bon après une bonne journée de recherche, qui ne m'ont pratiquement servis à rien j'ai décidé de testé par moi même :
J'ai donc utilisé un include tout simple et mis les variables comme ceci :
<?php echo $donnees['nom']; ?>
Comme ça suivant la page qui s'affiche, le title se met automatiquement ainsi que les metas, je vous remercie pour l'aide que vous m'avez apporter !!!
Cordialement Dexter -
En faite oui je veux récupérer des infos de BDD pour les mettres dans la meta de ma page de news.
-
non c'est pas une erreur de frappe, c'est le code dans le cas ou tu récupères un formulaire dont un champ a pour name "n".
mais dans ton cas c'est différent tu veux récupérer ce qui sort de ta base sql c'est ça? Et éventuellement le transformer en variable de session? -
session_start();
$_SESSION['nom'] = $_GET['n'];
le ['n'] représente quoi une erreur de frappe ou je dois mettre autre chose que le n ? -
oui petite confusion dsl.
pour être plus explicite Dexter, arrêtez moi si je me trompe, tu définis la variable de session comme ceci côté admin
session_start();
$_SESSION['nom'] = $_GET['n'];
// là tu reçois le nom défini depuis un formulaire par exemple
si tu as des manips à faire sur le nom côté admin, tu stockes la variable de session dans une variable temporaire:
$nom = $_SESSION['nom'];
//ton code agissant sur $nom vient ici
après ce code tu renvoies la variable changée $nom_mod par ex dans la variable de session:
$_SESSION['nom'] = $nom_mod;
comme ça tu as une variable $_SESSION['nom'] qui va se trimballer partout durant la session, mais si tu veux la conserver au dela de la session, il faut l'écrire sur un disque, en sql par exemple -
Et donc pour la meta qui est dans la page news.php?['id'] j'ai ça :
<META NAME="Desciption" CONTENT="<?php echo $nom; ?>"> -
Ok je pense mettre planté quelque part :
Partie Admin (le code n'est pas complet c'est pour faire simple) :
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");
mysql_query("INSERT INTO news VALUES('', '$nom')");
// On se déconnecte de MySQL
mysql_close();
}
}
?>
Page news.php?['id'] :
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");
$reponse = mysql_query("SELECT * FROM news ORDER BY ID DESC LIMIT 0,1");
mysql_close();
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<?php
{
echo '<a href="news.php?page=' . $donnees['id'] . '">' . $donnees['nom'] . '</a> ';
}
?>
Et donc pour la meta j'ai ça :
<META NAME="Desciption" CONTENT="<?php echo $nom; ?>"> -
Judes ta solution m'intéresse bien mais j'aurais deux petites questions :
Cette partie du code je le place dans la partie admin ?
session_start();
$_SESSION['nom'] = $_GET['n'];
$nom = $_SESSION['nom'];
Et cette partie sur la page du visiteurs ?
session_start();
$_SESSION['nom'] = $nom;
A quel endroit dois-je placer ces 2 codes ? N'importe ou dans le code ou à un endroit bien précis ?
Je sais pas si pour vous ça marche mais de mon coté pas du tout.
Merci du temps que vous m'accordez ^^ -
si la créée page doit retenir une variable depuis une autre page, tu peux retenir ça avec une variable de session dans l'autre page
session_start(); $_SESSION['nom'] = $_GET['n']; $nom = $_SESSION['nom'];
et tu n'auras qu'à rappeler la variable en début de page comme ça:session_start(); $_SESSION['nom'] = $nom;
-
ben c'est qu'il y a un problème dans la déf de la variable
-
Oui la variable est bien remplis.
J'ai essayé le code que tu m'as passé Judes-Emiles mais malheureusement ça ne marche pas chez moi ... -
Contributeurc'est à peu près là même chose
vérifie que ta variable $nom est bien remplit -
pour faire ça tu dois faire
<?php echo "<META NAME=\"Description\" CONTENT=\"".$nom."\">"; ?>
-
Bonjour tout le monde,
je reviens vers vous pour vous dire que tout marche à la perfection !
Un grand merci à vous tous.
Pour expliquer ma façon de faire je me suis servis de tuto sur le siteduzero (chat et livre d'or) et des conseils que vous m'avez données.
J'aurai une dernière question, après avoir fini la base de donnée, la partie admin etc... je voulais m'attaque au Meta (normalement je les codés en HTML tout simple mais le faire depuis la BDD c'est mieux et plus rapide).
Comment puis-je faire pour intégrer du php dans les meta ?
J'ai fait des recherches ( car google est mon amis et même notre amis ) mais je n'ai pas trouver de résultat sur ce sujet bien précis.
J'ai essayer comme ça (mais ça ne s'affiche pas) :
<META NAME="Desciption" CONTENT="<?php echo $nom; ?>">
Je vous remerci encore de l'aide que vous m'avez et que vous m'apporterez pour cette question. -
Contributeur:( j'avais envoyé un super truc pour toi, mais le site buggait, et ca a pas été sauvegardé
bon, alors je vais faire rapide:
table "news" dans mysql
ID (int)
date (timestamp)
resume (texte)
article (texte) ici tu mets soit du texte brut, soit du HTML contenant le texte, suivant si tu veux qu'il contienne deja la mise en page (html) ou pas....
dans ton index.php, tu vas chercher les résumés avec cette requete qui va prendre les 5 dernieres news ajoutées
select id, date, resume from news order by date desc limit 5
tu fait un $object=mysql_fetch_object....
ensuite, pour chaque objet récupéré:
echo '<a href="news.php?newsID=$object->ID">$resume</a><br />';
dans ta page news.php tu fais
select article from news where ID=$_GET['newsID'];
tu fais le $object=mysql_tech_object, puis
echo $object->article;
voila, j'espère que tu aura compris le principe.. j'ai mis que des bouts de code, histoire de montrer la voie a suivre
edit: ha ben finalement le site recommence a fonctionner tout doucement .... mon message d'avant est finalement apparu -
Contributeurtu fais une table "news" dans la base
tu mets comme champs:
ID (int)
news_time (timestamp)
resume (texte)
corps (texte)
avec l'id tu fais la clef primaire
le timestamp c'est pour date les news
resume: le résumé de la news
corps: le contenu de la news... tu peux mettre soit du texte, soit carément du code HTML (si tu veux y integrer la mise en forme). Le plus simple dans un premier temps étant de faire texte seul
dans la page ou tu afiche les résumés, tu te connecte a la bdd, et tu fais une requete du genre
select id, resume, news_time from news order by news_time desc limit 5; --ca prendra les 5 dernieres news
dans ton code php, tu fais un mysql_fetch_object (ou utilise la méthode que t'as l'habitude d'utiliser)
et pour chaque ligne retournée de la BDD, tu fais:
echo '<a href="news.php?newsID=$object->id">$resume</a><br />;';
ensuite, tu fais une page news.php, avec un parametre que tu passes dans l'url (en GET: le numéro ID de la news, par exemple: news.php?newsID=105 -> ca chargera la news n° 105)
ca donne
"select * from news where ID=".$_GET['newsID'];
et ensuite, tu récupères les valeurs, et tu les affiche....
voila! j'espère que t'as tout bien compris. -
Pour cela tu dois utiliser fopen et fwrite de PHP à la fois pour tes fichiers à afficher, mais aussi pour les liens vers ces fichiers.
-
Ben en tout cas je voudrais dire une chose merci beaucoup, j'ai réussi tout ce que je voulais faire avec le conseil de chaqu'un de vous. Maintenant il me reste plus qu'a perfectionné tout ça !!!
-
Pour cela tu dois utiliser les focntions fopen et fwrite de PHP, à la fois pour les fichiers à consulter et les liens vers ces fichiers
https://www.php.net/manual/fr/function.fopen.php
https://www.php.net/manual/fr/function.fwrite.php
- 1
- 2
Suivant