Limitation requete + affichage page par page ???

Eléphant du PHP | 94 Messages

04 sept. 2006, 14:33

Bonjour !!!

je suis actuellement à cours de solution pour faire un limite de 5 avec un affichage page par page tous simple avec cette requette , jvous en pris aidez moi :cry:

si vous avez une solution de départ çà m'aiderai bocoup...

car avec une seule requete je m'ensort bien mais 2 conditions + 1 else là je bloque!!!

merci d'avance pour votre aide !!!

<? 

//recup variable
mysql_select_db("$database"); 
$table="gst_match"; 
$equipe=$_POST['equipe']; 

$nb_enr0 = mysql_query("Select count(numero) as nbe from $table where equipe='$equipe'"); 
$do = mysql_fetch_array($nb_enr0); 
$nm_t = $do['nbe'];  
// si le nombre de post est superieur à 0
if ($nm_t>0) 
{ 
//equipe 1
$detail_equipe = mysql_query("SELECT * FROM $table where equipe='$equipe'"); 
while ($rest = mysql_fetch_array($detail_equipe) ) 
{  
$n_tour=$rest['n_tour']; 
$n_match=$rest['n_match']; 

//equipe 2
$detail_equipe2 = mysql_query("SELECT * FROM $table where n_tour='$n_tour' AND n_match!=$n_match"); 
while ($rest2 = mysql_fetch_array($detail_equipe2) ) 
{  



?> 
                      <table width="90%" height="102" border="0" cellpadding="0" cellspacing="0"> 
                        <tr> 
                          <td width="9" height="19"><img src="images/gh.gif" width="9" height="19" /></td> 
                          <td colspan="5" background="images/h.gif">&nbsp;</td> 
                          <td width="10"><img src="images/dh.gif" width="9" height="19" /></td> 
                        </tr> 
                        <tr> 
                          <td rowspan="2" background="images/g.gif"><img src="images/g.gif" width="9" height="19" /></td> 
                          <td width="108" align="center"><strong><?=$rest['equipe'];?></strong></td> 
                          <td width="100" align="center"><strong><?=$rest['but_p'];?> </strong></td> 
                          <td width="101" height="64" align="center"><img src="images/vs.gif" width="64" height="64"></td> 
                          <td width="90" align="center"><strong><?=$rest['but_c'];?></strong></td> 
                          <td width="134" align="center"><strong><?=$rest2['equipe'];?> </strong></td> 
                          <td rowspan="2" background="images/d.gif"><img src="images/d.gif" width="9" height="19" /></td> 
                        </tr> 
                        <tr></tr> 
                        <tr> 
                          <td height="19"><img src="images/gb.gif" width="9" height="19" /></td> 
                          <td colspan="5" align="center" background="images/b.gif"><strong><font color="#FFFFFF" size="2"><font color="#000000">Match Jou&eacute; le  </font></font> 
                            <? 
$dateS= explode(" ",$rest['date']); 
$dateJ=explode("-",$dateS[0]); 

echo $dateJ[2]."-".$dateJ[1]."-".$dateJ[0] ; 
                             
                             
                            ?> 
                            <font color="#FFFFFF" size="2"><font color="#000000">&agrave; </font></font><?$heure= explode(" ",$rest2['heure']); 
$heureh=explode(":",$heure[0]); 
echo $heureh[0].":".$heureh[1] ;?></strong></td> 
                          <td><img src="images/db.gif" width="9" height="19" /></td> 
                        </tr> 
                    </table><br> 
                      <? } 
                      
                      }
//si aucun résultat
                      }else {echo "<br><center><img src='images/alerte.png' align='middle'> &nbsp;<font color='red'><b>----- Aucuns Matchs Effectués à ce Jour !!! -----</b></font> &nbsp;<img src='images/alerte.png' align='middle'></center>";} 
                       
                       
                      ?>

~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 sept. 2006, 14:39

Est-ce que cet article qui se trouve dans la FAQ peut t'aider ?
http://www.phpfrance.com/forums/voir_sujet-8874.php

C'est fou ce qu'on trouve dans cette FAQ ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 94 Messages

04 sept. 2006, 14:50

merci çà peut peut-etre m'aider je vais tester je te tiens au courant!!!

:arrow: comment peut-on négligr la faq :wink:
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 sept. 2006, 15:05

comment peut-on négligr la faq :wink:
C'est effetivement une question à se poser !! :twisted:
Ou même une recherche avant de poster :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 94 Messages

04 sept. 2006, 15:14

donc j'ai suivi le tuto de la section faq que tu m'as filé mais j'ai un petit probleme au nivo des liens avec les page!!! et la requete avec le limite:


tu pourra constater ici:

:arrow: dans le menu gauche choisi la 1ère equipe dans le select

http://www.asptt-dunkerque.com

<?  
mysql_select_db("$database");
$table="gst_match";
$equipe=$_POST['equipe'];
/* Paramètres de pagination */ 
$nb_nouv_par_page = 1;
$url = "./equipe_detail.php?page="; 

/* On détermine quelle est la page qui est actuellement affichée */ 
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 1; 
$page_affichee    = ($page_en_cours + 1);
/* Requête pour compter les nouvelles présentes dans notre base de données */ 
$sql_nb = "Select count(numero) from $table where equipe='$equipe'"; 

/* Exécution de la requête et récupération du résultat */ 
$resultat_1 = mysql_query($sql_nb); 
$nb_nouvelles = mysql_result($resultat_1 ,0); 

/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */ 
$nb_pages = ceil($nb_nouvelles / $nb_nouv_par_page); 

/**  
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation. 
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ? 
 */ 
if($nb_pages > 0) 
{ 
    /* On définit une variable qui contiendra les données de navigation */ 
    $barre_nav = ""; 
    /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */ 
    if($nb_pages > 1) 
    { 
   /*Nous avons plusieurs pages: nous allons afficher successivement les liens vers 
        les pages précédentes s'il y en a, la page en cours et les liens vers les pages 
        suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables 
        sauf pour la page en cours dont nous mettrons le chiffre en gras 
         */ 
        if($page_en_cours > 0) 
        { 
            for($i = 0; $i < $page_en_cours; $i++) 
            { 
                $p = $i + 1; 
                $barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | "; 
            } 
        } 
        /** 
        On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une  
        page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente 
         */ 
        $barre_nav .= "<strong>". $page_affichee ."</strong>"; 
        /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */ 
        if(($page_affichee) < $nb_pages) 
        { 
            /* Il reste encore d'autres pages à afficher */ 
            $nb_suivantes = $nb_pages - ($page_affichee); 
            for($j = ($page_affichee); $j < $nb_pages; $j++) 
            { 
                $p = $j + 1; 
                $barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>"; 
            } 
        } 
         
        /* On peut définir en plus la situation dans une autre variable à afficher ailleurs */ 
        $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages."; 
    } 
    else 
    { 
        /* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */ 
        $barre_nav .= "page 1/1"; 
    } 
    /** 
    On peut maintenant afficher notre page. On va commencer par récupérer les informations 
    On doit définir à partir de quelle nouvelle on doit récupérer les données dans la clause LIMIT. 
     */ 

$debut = $page_en_cours * $nb_nouv_par_page; 
?> 
<p align="center"><?php echo($page_affichee); ?></p> 
<?php 
    $sql_n = "SELECT * FROM $table where equipe='$equipe' LIMIT ". $debut .", ". $nb_nouv_par_page; 
    $detail_equipe = mysql_query($sql_n);
	while($rest = mysql_fetch_array($detail_equipe)) 
    { 
$n_tour=$rest['n_tour'];
$n_match=$rest['n_match'];

    $sql_n1 = "SELECT * FROM $table where n_tour='$n_tour' AND n_match!=$n_match "; 
    $detail_equipe2 = mysql_query($sql_n1);
    while($rest2 = mysql_fetch_array($detail_equipe2)) 
    { 

?> 
                      <table width="90%" height="102" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                          <td width="9" height="19"><img src="images/gh.gif" width="9" height="19" /></td>
                          <td colspan="5" background="images/h.gif">&nbsp;</td>
                          <td width="10"><img src="images/dh.gif" width="9" height="19" /></td>
                        </tr>
                        <tr>
                          <td rowspan="2" background="images/g.gif"><img src="images/g.gif" width="9" height="19" /></td>
                          <td width="108" align="center"><strong><?=$rest['equipe'];?></strong></td>
                          <td width="100" align="center"><strong><?=$rest['but_p'];?> </strong></td>
                          <td width="101" height="64" align="center"><img src="images/vs.gif" width="64" height="64"></td>
                          <td width="90" align="center"><strong><?=$rest['but_c'];?></strong></td>
                          <td width="134" align="center"><strong><?=$rest2['equipe'];?> </strong></td>
                          <td rowspan="2" background="images/d.gif"><img src="images/d.gif" width="9" height="19" /></td>
                        </tr>
                        <tr></tr>
                        <tr>
                          <td height="19"><img src="images/gb.gif" width="9" height="19" /></td>
                          <td colspan="5" align="center" background="images/b.gif"><strong><font color="#FFFFFF" size="2"><font color="#000000">Match Jou&eacute; le  </font></font>
                            <?
$dateS= explode(" ",$rest['date']);
$dateJ=explode("-",$dateS[0]);

echo $dateJ[2]."-".$dateJ[1]."-".$dateJ[0] ;
							
							
							?>
                            <font color="#FFFFFF" size="2"><font color="#000000">&agrave; </font></font><?$heure= explode(" ",$rest2['heure']);
$heureh=explode(":",$heure[0]);
echo $heureh[0].":".$heureh[1] ;?></strong></td>
                          <td><img src="images/db.gif" width="9" height="19" /></td>
                        </tr>
                    </table><br>
                      <?php 
    }} 
    /* on libère la mémoire */ 
    mysql_free_result($resultat_1); 
    mysql_free_result($detail_equipe);
    
    /* On affiche maintenant la barre de navigation */ 
?> 
<p align="center"><?php echo($barre_nav); ?></p> 
<?php 

} else { echo "<br><center><img src='images/alerte.png' align='middle'> &nbsp;<font color='red'><b>----- Aucuns Matchs Effectués à ce Jour !!! -----</b></font> &nbsp;<img src='images/alerte.png' align='middle'></center>";}
					  
					  
					  ?>
As-tu une idée de ce que çà pourrai etre?[/url]
Modifié en dernier par zizou59 le 05 sept. 2006, 14:30, modifié 1 fois.
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 sept. 2006, 14:11

Je ne comprend pas (encore) pourquoi est-ce que c'est la page 2 qui apparait en 1er mais, en tout cas, je n'ai pas trouvé la clause LIMIT dans la requete qui sélectionne les résultats à afficher ;)

Si tu te demandes sur quelle requete il faut mettre cette clause, c'est sur celle qui retourne les lignes que tu affiches ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 94 Messages

05 sept. 2006, 14:33

oups désolé rectifié....

javais oublier de te le rajouter dans la balise

voilà maintenant tu peu constater le résultat :wink:
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Eléphant du PHP | 94 Messages

05 sept. 2006, 14:58

:arrow: désolé pour le Mp :oops:
:arrow: mais je n'ai en aucun cas voulu te persecuter :oops:
:arrow: c'été juste au cas ou tu étais encore sur le forum :oops:

:!: :!: :!: 1000 ESCUSES :!: :!: :!:
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 sept. 2006, 15:03

Si tu recommences pas, pas de soucis ;)

Sinon, ce qui me choque, c'est que ta page 1 affiche la 2nd page :-k

Essaye de creuser de ce coté ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 94 Messages

05 sept. 2006, 15:08

oui c'est vrai peu etre parce que j'ai modifier la variable d'affichage de page qui étais par défault à 0 à 1 mais bon a mon avis je pense pas... :idea:

sinon aussi quand je clic sur le lien suivant c'est le else qui est pris en compte et précédent aussi... :idea:

sinon au pire jvais essayer de modifier ma requette (de la simplifier un peu +++ :!:

@+++
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Eléphant du PHP | 184 Messages

05 sept. 2006, 15:29

oui c'est vrai peu etre parce que j'ai modifier la variable d'affichage de page qui étais par défault à 0 à 1 mais bon a mon avis je pense pas... :idea:
Si si moi je pense que ca vienne de là :), regarde bien ton code et tu trouvera pourquoi.
Image

Eléphant du PHP | 94 Messages

05 sept. 2006, 18:00

effectivement j'ai remis à 0 c'est mieux mais toujoursce prob avec le else qui est pris en compte quand je clic sur la page 2 ou 3 :?:
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Eléphant du PHP | 184 Messages

05 sept. 2006, 18:21

Tente de debugger en affichant tes requêtes $sql_n et $sql_nl
Image

Eléphant du PHP | 94 Messages

05 sept. 2006, 19:40

ah bon c'est à dire?

peus tu me donner une idée stp!!!!
~~~~$$$$www.asptt-dunkerque.com$$$$~~~~

Eléphant du PHP | 184 Messages

05 sept. 2006, 19:57

Pour voir si tes requêtes agissent comme tu le souhaites tu les affiches et tu peux voir si les paramêtres donnés passent correctement.
echo "requete 1 : ".$sql_n."<br/>requete 2 : ".$sql_nl;

Mets ca juste avant le while
Image