while et <table>

Vince Cotta
Invité n'ayant pas de compte PHPfrance

01 avr. 2012, 19:57

Bonjour,
Voila mon souci:
Je crée un script pour afficher mes news qui sont stockés dans une BDD toutefois lorsque je les affiche seul la ligne 1 s'affiche.

mon code:
<?php

session_start();

require('connect.php');

?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<link href="style.css" rel="stylesheet"/>
	<title>CROIZAD - Réseau|News</title>
</head>

<body>

	<a href="terre.php"><?php include("bann.php");?></a>
	<?php include("menu.php");?>
	<br/>
	<br/>
	<div class="titre">
	News
	</div>
	<br/>
		<br/>
<?php		
				 $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
                 $bdd = new PDO('mysql:host=localhost;dbname=croizad', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
	
				 $nombreDeMessagesParPage = 5; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$reponse = $bdd->query('SELECT COUNT(titre) AS nb_messages FROM news');
$donnees = $reponse->fetch();
$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
?>
<br/>
<br/>
<div class="pagination">
<?php echo '<p>Page : </p>';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a class="pagination" href="membres.php?page=' . $i . '">' . $i . '</a> ';
}?>
</div>
					 <?php
// Connexion à la base de donnée
    
     
if (isset($_GET['page']))
{
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}
 
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$reponse = $bdd->query('SELECT * FROM news ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
$data = $reponse->fetch(PDO::FETCH_OBJ);
?>
<br/>
	<div id="contenu">
		<p>Vous retrouvez ici toutes les news du site</p>
		<br/>
<?php while ($data = $reponse->fetch(PDO::FETCH_ASSOC)){?>
		<table>
		<tr>
			<th style="border:3px ridge black; width:20%; text-align:center; padding:0px; background:white; border-radius:10px;">
				<p style="text-align:center; font-size:12px;"><?php echo date("d/m/Y", strtotime($data['date']));?></p>
				<p style="text-align:center; font-size:12px;"><?php echo date("H:i:s", strtotime($data['date']));?></p>
			</th>
			<td style="font-size:40px; text-align:center; border:3px ridge black; background:white; border-radius:10px;">
				<a style="color:red;" href="<?php echo strip_tags($data['url']);?>" target="_blank"><?php echo strip_tags($data['titre']);?></a>
			</td>
		</tr>
		
		<tr>
			<td style="	padding:20px;
	border:3px ridge black;
	background:white;
	border-radius:10px;" colspan="2">
				<p><?php echo strip_tags($data['contenu']);?></p>
			</td>
		</tr>
		</table>
		<br/>
	</div>
	<?php } $reponse->closeCursor();?>
	<br/>
	<?php include ("footer.php");?>
</body>
</html>
Que faire?

ViPHP
xTG
ViPHP | 7331 Messages

01 avr. 2012, 21:16

Le limit semble correct et ta boucle aussi.
Le seul souci que je vois c'est que tu fais un fetch un peu plus haut et donc que tu loupes le premier enregistrement retourné.