Page 1 sur 1

News cliquable

Posté : 01 mai 2008, 00:06
par Jackisback
Bonsoir,

J'aimerais sur ma page d'accueil faire 5 lignes en bas de la page qui me permettrait d'afficher les 5 dernieres news.
Ou plutot d'afficher le titre de la news et en cliquant dessus la news apparaitrait ...

J'ai ce début de script pour mes 5 lignes:
 <div id="titre_news">Voici les dernières Nouvelles</div>
        <div id="News1">Titre Info 1 (SQL - cliquable pour aller sur la news)</div>
	<div id="News2">Titre Info 2 (SQL - cliquable pour aller sur la news)</div>
	<div id="News3">Titre Info 3 (SQL - cliquable pour aller sur la news)</div>
	<div id="News4">Titre Info 4 (SQL - cliquable pour aller sur la news)</div>
	<div id="News5">Titre Info 5 (SQL - cliquable pour aller sur la news)</div>
J'ai mis ce bout de code pour la connexion BDD:
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("blabla");
// On récupère les 5 dernières news
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
{
?>

Maintenant j'aimerais afficher mes news au bon endroit (c-a-d dans mes 5 lignes). Est-ce que avec ce bout de code c'est faisable:
<?php echo $donnees['titre']; ?>
        <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
</h3>
    <p>
    <?php
    // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
    $contenu = nl2br(stripslashes($donnees['contenu']));
    echo $contenu;
    ?>
    </p>
   
<?php
} // Fin de la boucle des news
?>
Merci d'avance à vous tous ...

Posté : 01 mai 2008, 04:26
par AB
ça ressemble assez à quelque chose qui pourrait fonctionner. Et quand tu essayes ça donne quoi ?

Posté : 01 mai 2008, 09:06
par Jackisback
Bah ça fonctionne mais pas comme je veux ....

J'ai m'affiche mes 5 titres et en dessous mes 5 contenu ..;

Sauf que je voudrais que ca s'affiche dans 5 lignes (les unes au dessus des autres) en bas de ma page d'accueil ...

Posté : 03 mai 2008, 07:36
par Jackisback
Hello

Allez voir à cette adresse:

http://www.abcfibromyalgie.fr/ABCNEW/Index.php

Vous verrez ce que je veux vraiment faire ....

Le titre des 5 plus récentes news qui apparait et la possibilité de cliquer dessus et qu'elle s'affiche en dessous ...

Merci d'avance.

Posté : 03 mai 2008, 08:48
par caroube
Si tu veux faire apparaître le contenu sur la même page, il faut jouer avec des div que tu rends visible et invisible. Donc, mettre un lien sur chaque titre de news qui va appeler un javascript avec l'id de la news en paramétre. En bas de page, tu auras un ensemble de 5 div et le javascript va rendre visible/invisible l'un d'entre eux en jouant sur ses attributs CSS

2 conseils :
1) quand tu lis le contenu d'une base, fais en sorte que ta boucle while mette le contenu de ta requête dans un tableau. C'est plus facile à manipuler par la suite. Par exemple, cela te permettra de faire une première boucle PHP sur les titres pour générer ton tableau, puis une deuxième boucle sur les Div.
2) Evites de faire du code PHP/HTML/PHP/HTML/PHP ... Ca devient vite illisible. Par exemple tu as quelque part un <?php } ?> et pour savoir à quoi il correspond, ce n'est pas évident même sur cet exempl simple (alors imagines quand ce sera vraiment compliqué). Si tu ne veux pas passer par des moteurs de templates, essaye déjà de séparer ce qui concerne la base de données de ce qui concerne l'affichage dynamique et ce qui concerne l'affichage statique.
Exemple :
/*** fichier functions.base.php ***/
function connect () {
}

function lire5news () {
  return un tableau PHP avec les 5 news
}

/*** fichier functions.html.php ***/
function display_titre5news ($tableau) {
  for ($i=0; $i<count($tableau); $i++) {
    echo "<em>"...;
  }
}

function display_divinvisible5news($tableau) {
}
/*** fichier functions.html.php ***/
<?php
include ('functions.base.php');
include ('functions.html.php');
connect();
$news5 = lire5news ();
?>
<html>
...
<div id="titre_news">Voici les dernières Nouvelles</div> 
<?php display_titre5news ($news5); ?>
</div>
...
<?php display_divinvisible5news  ($news5); ?>
Il y a des tas de manières de découper le code et chacun a la sienne. Mais le but du jeu est de ne pas tout mélanger : d'un côté tu lis ou tu écris dans la base, de l'autre tu affiches. D'un côté du fais du PHP et du SQL, de l'autre tu fais du HTML.