[Trouvé]Divison de réponses d'un topic par page

Statut
N'est pas ouverte pour d'autres réponses.

SkYlEsS

Elite
J'aimerais donc diviser chaque topic en page de 30 réponses max. et afficher les pages en bas de la première page. Bref, rien de plus banal.

Division du topic par 30 réponses max. (fonctionne !) :

Code:
if(isset($_GET['start'])) $start = $_GET['start']; else $start = 0;
$start_ = $start*30;

$req2 = mysql_query("SELECT ad_forum.topic_id, ad_forum.topic_titre, ad_forum.topic_body, ad_forum.topic_author, ad_forum.topic_last_date, ad_forum.forum_id, ad_joueurs.id_joueur, ad_joueurs.url_photo FROM ad_forum, ad_joueurs WHERE ad_forum.topic_author = ad_joueurs.nom_joueur AND ad_forum.topic_post='$id' ORDER BY ad_forum.topic_last_date LIMIT $start_,30");
Mais je galère pour l'affichage des pages :

Code:
	$id = $_GET['id'];
	$total_mess = mysql_fetch_array(mysql_query("SELECT ad_forum.topic_id, ad_forum.topic_titre, ad_forum.topic_body, ad_forum.topic_author, ad_forum.topic_last_date, ad_forum.forum_id, ad_joueurs.id_joueur, ad_joueurs.url_photo FROM ad_forum, ad_joueurs WHERE ad_forum.topic_author = ad_joueurs.nom_joueur AND ad_forum.topic_post='$id' ORDER BY ad_forum.topic_last_date")); 

	$loop = floor($total_mess[0]/30); 
	for($x=1;$x<$loop;$x++)
	{
		$y = $x - 1;
		echo '<a href="forum_read-'.$_GET['id'].'-'.$y.'.htm">'.$x.'</a>';
		echo ' | ';
	}
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Avec le code d'affichage des pages, il m'indique plus de milles pages contenant toutes les mêmes réponses, c'est à dire les 30 premières. Comment indiquez le reste des réponses ? Je suppose qu'évidemment tout réside dans cette requête sql :roll:
 
1er
OP
SkYlEsS

SkYlEsS

Elite
C'est grave, Jereck ? :D
 

MbK_

Etudjant
J'ai pas vérifié les {/} alors regarde bien.

C'est le code d'un site et ca marche ;)


Code:
<?
if (empty($_GET['id'])){
	// nbr de msg par page
	$msg_par_page = 5;
	
	// nbr de msg total
	bdd();
	$query = mysql_query('SELECT COUNT(*) AS msg_total FROM _news');
	$msg_total = mysql_fetch_array($query);
	$msg_total = $msg_total['msg_total'];
	if (empty($msg_total)){ 
		echo "<center>Pas encore de news postée.</center>";
	}
	else {

		// nbr de page a creer
		$nbr_page  = ceil($msg_total / $msg_par_page);
		
		// ecriture du lien vers chacune des pages
		echo '<center>Page : ';
		for ($i = 1 ; $i <= $nbr_page ; $i++)
		{
			echo '<a href="index.php?page=news&pg=' . $i . '">' . $i . '</a> ';
		}
		echo '</center><br />';
		
		// Maintenant, on va afficher les messages
		
		if (isset($_GET['pg']))
		{
			$pg = $_GET['pg'];
		}
		else // pas encore de variable?
		{
			$pg = 1; // on se met sur la page 1
		}
		
		// calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
		$premier_msg = ($pg - 1) * $msg_par_page;
		
		$query2 = mysql_query('SELECT * FROM _news ORDER BY id DESC LIMIT ' . $premier_msg . ', ' . $msg_par_page);
		
		while ($news = mysql_fetch_array($query2))
		{
?>

***********************
la structure de ton message
***********************


<?
		}
	echo '<br /><center>Page : ';
	for ($i = 1 ; $i <= $nbr_page ; $i++)
	{
		echo '<a href="index.php?page=news&pg=' . $i . '">' . $i . '</a> ';
	}
	echo '</center><br />';
	}
}
?>
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Je vais tenter de modifier mon code en ce sens ... :)

Merci
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Code:
	$id = $_GET['id'];
	$total_mess = mysql_fetch_array(mysql_query("SELECT count(*) FROM ad_forum WHERE topic_post = '$id' ")); 

	$loop = ceil($total_mess[0]/30); 
	for($x=1;$x<=$loop;$x++)
	{
		$y = $x - 1;
		echo '<a href="forum_read-'.$_GET['id'].'-'.$y.'.htm">'.$x.'</a>';
		echo ' | ';
	}
Avec ce code, il répère bien le nombre de messages et affiche le bon nombre de pages en conséquence (Exemple : si 45 messages = 2 pages) ... Or lorsque je clique sur la page "2" il ne me met pas la suite des messages mais les messages identiques, c'est à dire les 30 premiers messages :pfiou:
 
dans ton script sql tu ne lui dis pas de "commencer" à lire la bd au 31ème message ...

enfin, pour ce que j'en ai vu :!:

edit a moins qu'a l'affichage tu n'oublie de commencer a ecrire les message qu'a partie du 31
 
1er
OP
SkYlEsS

SkYlEsS

Elite
et heu ... comment je fais ?
 
1er
OP
SkYlEsS

SkYlEsS

Elite
Bon soit, je préfère alors limiter un topic à 70 réponses et dès qu'il a atteint ce nombre, le clore automatiquement ... comment faire ? :D
 
for($x="(numero de page-1)*30+1";$x<= "numero de page*30 ou numero de post maximum";$x++)
...


a noter que dans la plupart des forum, les chiffres de page donnent des lien a propos des numéros des posts :!:
 
1er
OP
SkYlEsS

SkYlEsS

Elite
J'ai résolé l'affaire en cloturant tout topic comportant 49 messages postés + le 1ier topic = 50.

:D

Sinon çà m'impliquait trop de changement :roll:
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut