8797 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

Je voulais savoir quelle était la commande PHP pour pouvoir faire ceci :

J'ai une page avec mes news (news.php par exemple) en résumé, stockées dans ma base de donnée sql. Sur une autre page (news-view.php par exemple) j'aimerais appeler le contenu complet de ma news, qu'à chaque fois sur cette page s'affiche le contenu complet des news, ce qui ferais si j'ai bien compris une page du style : news-view.php?id1 ...

Je vous laisse le code actuel que j'ai pour ma page news.php :

<?php
mysql_connect("host", "mabase", "motdepasse"); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de la base

mysql_query("SET NAMES UTF8"); // Caractere accent

$nombreDeNewsParPage = 10;


$retour = mysql_query("SELECT COUNT(*) AS nb_news FROM news");
$donnees = mysql_fetch_array($retour);

$totalDesNews = $donnees['nb_news'];
$nombreDePages = ceil($totalDesNews / $nombreDeNewsParPage);



if (isset($_GET['page'])) {
if(is_numeric($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
}
else {
$page = 1;
}

$premierMessageAafficher = ($page - 1) * $nombreDeNewsParPage;
$reponse = mysql_query('SELECT * FROM news ORDER BY date_ajout DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeNewsParPage);


while ($donnees = mysql_fetch_array($reponse) ) {
?>


<div class="module-news">
<h2><?php echo $donnees['titre']; ?></h2>
<span class="publiee-news">Ecrit par <strong><?php echo $donnees['auteur']; ?></strong> | Publié le <strong><?php echo $donnees['date_ajout']; ?></strong></span><br /><br />
<?php echo $donnees['image']; ?>
<p><?php echo $donnees['contenu']; ?></p></div>

<?php
}

echo '<span class="pages">Page :</span> ';
for ($i = 1 ; $i <= $nombreDePages ; $i++) {
echo '<a href="news.php?page=' . $i . '" class="pagination">' . $i . '</a> ';
}

mysql_close();
?> 


Merci de votre aide, je débute en php.
Modifié par Darkseid (22 May 2008 - 10:50)
Bonjour,

C'est assez obscure pour moi ceux que tu essais de faire. Déjà tu devrais avoir

news-view.php?id=1

Ton id sera l'id de ta news je suppose.
Oui voilà, sur la page news-view.php, à chaque fois sera charger la news complète. Ce qui evite de créer une page pour chaque news.

Je voudrais connaître la commande php pour mettre sur la page news-view.php, et comment appeler l'id sur news.php .
ah, il te suffit dans ce cas de faire un include de ta page news.php dans ta page news-view.php si tu trouves un $_GET['id']

Et tu utilises ton id pour récupéré grâce à ta bdd tout les données pour afficher ta news correctement.

C'est pourtant assez basique. Quelle endroit tu ne comprends pas?
Dans la page news-view.php enfaite c'est ce code ?

<?php
$q = mysql_query("SELECT id FROM votre_table");
while ($r = mysql_fetch_array($q))
{
  echo ''$r['id']'';
}
?>
non dans ta news-view.php tu auras plutot un truc du style


if(isset($_GET['id'])){
extract($_GET);
include('./news.php');
}


Et dans ta news.php tu vas réutiliser ton $id pour faire je sais pas quoi avec, sans doute pour savoir sur quel page tu te trouve non ?
Je t'avoue nager un peu la lol

a écrit :
Et dans ta news.php tu vas réutiliser ton $id pour faire je sais pas quoi avec, sans doute pour savoir sur quel page tu te trouve non ?


Dans la page news.php les news sont affichées en fonctions de leurs dates d'ajouts, j'en ai 10 par page au dela une nouvelle page ce crée et ainsi de suite...

Je comprends pas trop la commande complète à mettre dans news-view.php
Salut,

J'ai survolé ce post et je vais récapituler afin de voir si j'ai bien compris ta demande.
1/ Tu as une page news.php qui liste l'ensemble des news en base de donnée.
2/ Tu veux créer un script view_news.php qui va afficher le contenu d'une news ?

Si je ne me suis pas trompé et si c'est ce que tu souhaites faire, c'est très simple.
Je t'explique les étapes pour créer le script view_news.php

1/ Tu récupères la valeur de l'id passé en paramètre dans l'url (view_news.php?id=1) qui se trouve dans la super globale $_GET["id"]
2/ Tu créer la requette MySQL qui va aller chercher les infos de ta news en base de données.
3/ Tu affiches le résultat grâce à une boucle (while)



if(isset($_GET["id"])) {                     // Si il existe une variable id passé dans l'url tel que view_news.php?id=1
       $id = $_GET["id"];
} else {
       $id = null;
}

$sql = "SELECT * FROM news WHERE id_news = '$id'";            // Requette MySQL qui récupère les infos de la news
$result = mysql_query($sql);                                             // On intérroge le serveur MySQL et récupère sa réponse dans $result.
while($row = mysql_fetch_array($result)) {                         // On parcours la réponse du serveur
       echo $row["Titre"];
       echo "<br />";
       echo $row["Texte"];
}


Modifié par ninidc (21 May 2008 - 21:28)
Hello,

+1... sauf qu'à priori l'id est unique et donc la boucle while inutile Smiley cligne .

Donc plutôt :
<?php
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id != 0) {
	$sql = "SELECT * FROM news WHERE id_news = $id";
	$result = mysql_query($sql) or die(mysql_error());
	$row = mysql_fetch_assoc($result);
	echo $row['titre'];
	echo "<br />";
	echo $row['contenu'];
}
?>

A+
Merci pour vos réponses Smiley biggrin

Je viens de tester mais rien ne s'affiche, je dois surment (certainement même lol) oublier quelques chose, voici ce que j'ai mis dans ma page news-view.php :

<?php
mysql_connect("host", "chut", "chuteuh"); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de ma base

mysql_query("SET NAMES UTF8"); // Caractere speciaux

$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id != 0) {
$sql = "SELECT * FROM news WHERE id_news = $id";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
echo $row['titre'];
echo "<br />";
echo $row['contenu'];
}

?>
Plop,

déjà il faudrait remplacer id_news par le vrai nom de ta colonne qui sert d'identifiant aux news (peut-être tout simplement id Smiley murf ...).

Ensuite pour tester tu pourrais appeler directement la page en mettant dans l'url ...news-view.php?id=1 (en supposant qu'il existe bien une news qui a un id = 1 !)

Dès que ça fonctionnera il faudra modifier ta page news.php pour rajouter le lien. Quelque chose comme
...
while ($donnees = mysql_fetch_array($reponse) ) {
?>
<div class="module-news">
<h2><?php echo $donnees['titre']; ?></h2>
<span class="publiee-news">Ecrit par <strong><?php echo $donnees['auteur']; ?></strong> | Publié le <strong><?php echo $donnees['date_ajout']; ?></strong></span><br /><br />
<?php echo $donnees['image']; ?>
<p>[b]<a href="news-view.php?id=<?php echo $donnees['id_news']; ?>">Lire la suite</a>[/b]</p></div>
<?php
}
...
Yep effectivement elle s'appelle id ! Je l'ai remplacée mais il se passe toujours rien..

Le code que j'ai mis est bon, il manque pas un truc ?
Darkseid a écrit :
Le code que j'ai mis est bon, il manque pas un truc ?
Ben non...

Pour t'aider à trouver ce qui coince tu pourrais mettre ça :
<?php
mysql_connect("host", "chut", "chuteuh"); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de ma base
mysql_query("SET NAMES UTF8"); // Caractere speciaux
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id != 0) {
	$sql = "SELECT * FROM news WHERE id = $id";
	$result = mysql_query($sql) or die(mysql_error());
	if (mysql_num_rows($result) > 0) {
		$row = mysql_fetch_assoc($result);
		echo $row['titre'];
		echo "<br />";
		echo $row['contenu'];
	} else {
		echo "aucune news n'existe avec un id = $id !!!";
	}
} else {
	echo "id vaut 0 !!! Il faut lui donner une valeur dans l'url !!!";
}
?>

et rappeler ta page Smiley rolleyes !
C'est bizarre, quoi que j'écrive comme chiffre dans le id sa me marque toujours ta phrase :
"id vaut 0 !!! Il faut lui donner une valeur dans l'url !!!"

Je comprends pas Smiley ohwell
Ben moi non plus...

Si tu appelles bien ta page avec quelque chose comme ...news-view.php?id=1 je ne vois plus Smiley rolleyes !
Edit : Non j'ai rien dit c'est bon sa marche !! Smiley biggrin

Un GRAND merci Smiley cligne

Dernière question, je ne doit pas me deconnecter de mysql à la fin de ma commande ?
Modifié par Darkseid (22 May 2008 - 00:07)
Darkseid a écrit :
Edit : Non j'ai rien dit c'est bon sa marche !! Smiley biggrin
Ouf Smiley ravi !

Darkseid a écrit :
Dernière question, je ne doit pas me deconnecter de mysql à la fin de ma commande ?
En fait ça n'est pas obligatoire puisque cela sera fait automatiquement à la fin de ton script Smiley cligne . Pour plus d'info, voir la doc sur mysql_close.

Bonne continuation...
Ok ! Encore merci Smiley cligne

Un petit "résolu" du topic s'impose ^^

Ha oui lol une dernière dernière chose, je vois que pour les sauts de lignes tu l'avais mis dans un champs echo, c'est pas bon si je l'écrit "brut" : <br /> ?
Modifié par Darkseid (22 May 2008 - 11:10)