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

Discussion dans 'Web, design' créé par SkYlEsS, 15 Janvier 2006.

Statut de la discussion:
Fermée.
  1. Offline
    SkYlEsS Kawai
    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 ' | ';
    	}
    SkYlEsS, 15 Janvier 2006
    #1
  2. Offline
    SkYlEsS Kawai
    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:
    SkYlEsS, 15 Janvier 2006
    #2
  3. Offline
    SkYlEsS Kawai
    C'est grave, Jereck ? :D
    SkYlEsS, 15 Janvier 2006
    #3
  4. Offline
    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 />';
    	}
    }
    ?>
    MbK_, 15 Janvier 2006
    #4
  5. Offline
    SkYlEsS Kawai
    Je vais tenter de modifier mon code en ce sens ... :)

    Merci
    SkYlEsS, 15 Janvier 2006
    #5
  6. Offline
    SkYlEsS Kawai
    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:
    SkYlEsS, 15 Janvier 2006
    #6
  7. Offline
    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
    dania の悪夢, 15 Janvier 2006
    #7
  8. Offline
    SkYlEsS Kawai
    et heu ... comment je fais ?
    SkYlEsS, 15 Janvier 2006
    #8
  9. Offline
    SkYlEsS Kawai
    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
    SkYlEsS, 15 Janvier 2006
    #9
  10. Offline
    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 :!:
    dania の悪夢, 16 Janvier 2006
    #10
  11. Offline
    SkYlEsS Kawai
    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:
    SkYlEsS, 16 Janvier 2006
    #11
Statut de la discussion:
Fermée.