Page 1 sur 1

News sur page d'accueil avec titre cliquable

Posté : 03 juin 2008, 15:51
par Jackisback
Bonjour,

J'ai fais sur ma page d'accueil 5 lignes en bas de la page qui me permette d'afficher les 5 dernieres news de ma BDD.
En cliquant sur le titre de la news, son contenu apparait ...

J'ai ce début de script pour mes 5 lignes:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Fibro</title>

</head>

<body>

<div id="corps">
  <div id="image_fond"></div>
  <div id="logo"><a href="Index.php"><img src="Images/Logo/colombe_couleur_text.png" width="160" height="160" border="0" /></a></div>
  <div id="Titre_site"></div>
  <div id="pied_de_page">Copyright by Ludo pour l'assoc. ABC, Design, JPH, tout droits blablabla ..... &copy; </div>
  <div id="posmenu">
 		
  </div>
  <div id="titre">Pr&eacute;sentation du site</div>
  <div id="texte"> Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque
laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt,
explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores
eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, quia dolor sit, amet, consectetur,
adipisci velit, sed quia non numquam eius modi tempora incidunt, ut labore et dolore magnam aliquam quaerat voluptatem.
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
consequatur? Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur,
vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur? At vero eos et accusamus et iusto odio dignissimos ducimus,
qui blanditiis praesentium voluptatum deleniti atque corrupti.</div>
  <div id="titre_news">Les dernières Nouvelles</div>



<?php
// On se connecte à la BDD
mysql_connect("localhost", "root", "");
mysql_select_db("abcfibromyalgie");

// On fait la requête pour afficher la liste des news
$requete_news = mysql_query("SELECT * FROM articles ORDER BY id DESC LIMIT 0, 5");

//Puis on boucle le tout pour tout afficher
while($liste_news = mysql_fetch_array($requete_news))
{
	echo '<div id="News1"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News2"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News3"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News4"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News5"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
}
?> 
</div>

		<div id="contenu">
	<?php
// Si jamais on veut voir une news, on vérifie que la variable est bien un entier puis on va chercher la news pour l'afficher !
if(isset($_GET['voir_news']))
{
	
	$id_news = htmlentities($_GET['voir_news'], ENT_QUOTES);
	$news = mysql_fetch_assoc(mysql_query("SELECT * FROM articles WHERE id = '".$id_news."'"));
	echo '<div class="news">';
	echo '<div class="titre">'.$news["titre"].' - Par '.$news["auteur"].'</div>';
	echo $news['contenu'];
	echo '</div>';
	
}

// On ferme la connexion MYSQL
mysql_close();
	?>
		</div>
</div>

</body>
</html>
Et j'ai mon fichier sql articles.sql

-- phpMyAdmin SQL Dump
-- version 2.9.2
-- http://www.phpmyadmin.net
-- 
-- Serveur: localhost
-- Généré le : Vendredi 30 Mai 2008 à 23:53
-- Version du serveur: 5.0.27
-- Version de PHP: 5.2.1
-- 
-- Base de données: `abcfibromyalgie`
-- 

-- --------------------------------------------------------

-- 
-- Structure de la table `articles`
-- 

CREATE TABLE `articles` (
  `id` int(11) NOT NULL auto_increment,
  `titre` varchar(255) NOT NULL,
  `contenu` text NOT NULL,
  `auteur` varchar(50) NOT NULL,
  `rubriques` varchar(50) NOT NULL,
  `timestamp` smallint(6) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;

-- 
-- Contenu de la table `articles`
-- 

INSERT INTO `articles` (`id`, `titre`, `contenu`, `auteur`, `rubriques`, `timestamp`) VALUES 
(1, 'Vaccins', 'Voici la premiere news sur les vaccins, bla bla bla', 'Ludo', 'vaccination', 0),
(2, 'Sang', 'Lorem ipsum dolor sit amet,peccandi quae carere se, angere.', 'Ludo2', 'sang', 0),
(3, 'Corps', 'Illius sibi quem fuerit hochrysippo autem manus iuste.', 'Ludo2', 'corps', 0),
(5, 'L''aluminim', 'Res aut placatae facultasvidetur qui cum choro.', 'Ludo5', 'aluminium', 0),
(6, 'Le site est en ligne', 'Sed eius enim a, tranquillat ob vexetur permagna aristoteli ne quoque.', 'Ludo6', 'news', 0),
(7, 'fibro', 'Dudule', 'ludo', 'fibromyalgie', 0),
(9, '', '', '', 'actions', 0),
(10, '', '', '', 'armes', 0),
(11, '', '', '', 'articles', 0),
(12, '', '', '', 'association', 0),
(13, '', '', '', 'causes', 0),
(14, '', '', '', 'demarches', 0),
(15, '', '', '', 'maladies', 0),
(16, '', '', '', 'methodes', 0),
(17, '', '', '', 'metaux', 0),
(18, '', '', '', 'ondes', 0),
(19, '', '', '', 'pesticides', 0),
(20, '', '', '', 'temoignages', 0);
[/code]
-------------------------------

Mon problème est le suivant:

Avant l'affichage sur 5 lignes de mes titres fonctionnait à peu près et en cliquant dessus le contenu apparaissant en dessous.

Mais depuis un certains temps, j'ai 5 lignes vertes qui apparaissent en bas (en fait c'est 5 cadres avec une faible hauteur, d'ou l'impression de ligne) et mes titres n'apparaissent plus en bas de ma page index.php ...

Auriez-vous une idée sur la provenance de ce problème ???

J'ai essayé de supprimer toute la BDD et d'en recréer une ... d'importer, d'exporter mes *.sql ... de n'en laisser qu'une seule (articles.sql) mais rien n'y fait ...

Bonne journée à vous tous et toutes ...

Et merci pour votre aide...

Posté : 03 juin 2008, 17:32
par guilt92
Il y a un probleme dans ton code : le while($liste_news = mysql_fetch_array($requete_news)) est déjà une boucle qui te fait naviguer dans les resultat de ta requete.

La, tu définis 5 fois un bloc News1, News2... par news présente dans la base.

L'idée c de faire l affichage avec un indice incrémental pour ton id. Prend en compte que le while est une boucle dans laquelle tu retournes tant que la condition est vraie.

Exemple dans ton cas :
$i=1;
while($liste_news = mysql_fetch_array($requete_news)) 
{ 
    echo '<div id="News'.$i.'"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>'; 
    $i++ ;
} 

Posté : 03 juin 2008, 17:53
par Invité
Donc dans mon code:
<?php
// On se connecte à la BDD
mysql_connect("localhost", "root", "");
mysql_select_db("abcfibromyalgie");

// On fait la requête pour afficher la liste des news
$requete_news = mysql_query("SELECT * FROM articles ORDER BY id DESC LIMIT 0, 5");

//Puis on boucle le tout pour tout afficher
while($liste_news = mysql_fetch_array($requete_news))
{
	echo '<div id="News1"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News2"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News3"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News4"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
	echo '<div id="News5"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>';
}
?> 
Je dois l'ecrire comme ca maintenant:
<?php
// On se connecte à la BDD
mysql_connect("localhost", "root", "");
mysql_select_db("abcfibromyalgie");

// On fait la requête pour afficher la liste des news
$requete_news = mysql_query("SELECT * FROM articles ORDER BY id DESC LIMIT 0, 5");

//Puis on boucle le tout pour tout afficher
$i=1;
while($liste_news = mysql_fetch_array($requete_news)) 
{ 
    echo '<div id="News'.$i.'"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>'; 
    $i++ ;
}
?> 
C'est ca ???

Posté : 03 juin 2008, 18:50
par djtec
Oui c'est totalement ça tu as très bien compris

Posté : 04 juin 2008, 09:37
par guilt92
As tu testé la deuxième version ? Ton problème est il toujours présent ?

Posté : 04 juin 2008, 12:54
par Jackisback
Bonjour,

Oui je viens de tester cette nouvelle version ...

Et malheureusement oui le problème est encore présent ...

L'un d'entre vous a t'il essayer chez lui ???

--------------------------------- RECTIFICATION ---------------------------------

Je viens d'essayer tout betement de changer ce parametre - ORDER BY titre au lieu de ORDER BY id:
// On fait la requête pour afficher la liste des news
$requete_news = mysql_query([b]"SELECT * FROM articles ORDER BY titre DESC LIMIT 0, 5"[/b]);
Et la ça FONCTIONNE NICKEL ....

Donc voici le code complet de mon script PHP pour afficher les derniers titres de ma BDD et qui permet d'en afficher le contenu en cliquant dessus:
<?php
// On se connecte à la BDD
mysql_connect("localhost", "root", "");
mysql_select_db("abcfibromyalgie");

// On fait la requête pour afficher la liste des news
$requete_news = mysql_query("SELECT * FROM articles ORDER BY titre DESC LIMIT 0, 5");

//Puis on boucle le tout pour tout afficher
$i=1;
while($liste_news = mysql_fetch_array($requete_news)) 
{ 
    echo '<div id="News'.$i.'"><a href="index.php?voir_news='.$liste_news['id'].'">'.$liste_news['titre'].'<a></div>'; 
    $i++ ;
}
?> 
</div>

		<div id="contenu">
	<?php
// Si jamais on veut voir une news, on vérifie que la variable est bien un entier puis on va chercher la news pour l'afficher !
if(isset($_GET['voir_news']))
{
	
	$id_news = htmlentities($_GET['voir_news'], ENT_QUOTES);
	$news = mysql_fetch_assoc(mysql_query("SELECT * FROM articles WHERE id = '".$id_news."'"));
	echo $news['titre'].' - Par '.$news['auteur'].'<br/>';
	echo $news['contenu'];
	
}

// On ferme la connexion MYSQL
mysql_close();
	?>
Je tiens à remercier tout ceux qui m'ont et tout ceux qui ont essayer de m'aider ...

Merci encore.