IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

un tableau ordonné dans mon while


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 64
    Points
    64
    Par défaut un tableau ordonné dans mon while
    Bonjour,

    Voilà je me fais une petite page sur mon site qui présente des cartes postales avec une pagination; ca marche nickel, par contre si je peux controler le nombre de carte par page, je ne peux pas ordonancé cela comme je le souhaite.

    J'ai un while qui parcourt ma base et qui affiche mes cartes, ok mais je voudrais n'afficher que 3 cartes par colonne à raison de 3 colonnes pour mon tableau. Je me dit que je dois mettre cela dans mon while mais... sans fausser ma pagnination, c'est pas gagné.

    Est ce que kelk'un voit comment je peux préserver le principe de ma pagination en manipulant mon tableau.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <? 
    	require_once("envsqlCartes.php");
    	$connexion=mysql_connect($host, $login, $pass);
    		if(!$connexion)
    {
    print "erreur de connexion";
    }
    else
     {			
    $base=mysql_select_db($db);
     
    if(!$base)
    {
    print"erreur de connexion a la base";
    }
    else
    {	//////////////////////////////////CARTES////////////////////////////////////
    $limit_par_page = 4; //limite par page
    if(isset($_GET['page']) AND !empty($_GET['page'])) //si existe et n'est pas vide
    {
     $page = intval($_GET['page']); // la variable est un nombre entier
    }
    else
    {
     $page = 1; // si le numéro de page n'est pas spécifié dans l'URL, on amène le visiteur vers la page 1
    }
    $from = ($page - 1) * $limit_par_page; // $from désigne le premier nombre de la clause
     
    $requete="SELECT c.id_carte, c.carte from cartes c order by c.carte 
    DESC LIMIT $from, $limit_par_page ;";
     
    print"<center><b><font color=#5F4954><u>Les cartes postales </u></font></center></b>";
    $result=mysql_query($requete);
    $nbenreg=mysql_num_rows($result);
     
    	if($nbenreg==0)
    	{		
    	print "pas de resultat";
    	mysql_close($connexion);
    	exit();
    	}
    	else
    	{
    	print"<BR><center>";
    	print"<table  bgcolor=#5F4954 border=1 BORDERCOLOR=#000040  WIDTH=400>";
    							while($tableau=mysql_fetch_array($result))
    	{													
    	print"<tr>
    <td>								
    	<center><a href=cartesGrand.php?id_carte=$tableau[id_carte]><img src=$tableau[carte] width=110 height=80></a></center>
     </td>";
    }			
    print"</tr>
    </table>";			
    $requete = mysql_query('SELECT COUNT(*) AS CARTES FROM cartes'); // On compte le nombre de cartes
     
    $donnees = mysql_fetch_assoc($requete);
     
    $nb_pages = ceil($donnees['CARTES'] / $limit_par_page); 
    // on calcule le nombre de pages 
    for($i=1 ; $i<=$nb_pages ; $i++)
    {
      if ($i == $page)
       {
      echo '['.$i.']'; 
     // si la page sur laquelle on est actuellement est celle qu'est en train de générer la boucle, on ne met pas de lien
      }
    else
     {
      echo '<a href="cartes.php?page='.$i.'">'.$i.'</a>';
     }
    }
     
     
     
    							}
    				}
    	}			
    ?>
    Bien sur j'ai tenté des boucles à l'intérieur de mon while principale, mais il zappe la principe de pagination.

    Si quelqu'un a une idée... elle sera la bienvenue.

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Tu peux faire une variable $x = 0;
    Tu vérifies que $x < 4, si c'est inférieur, tu continues tranquillement.
    Si c'est égal, alors la tu changes de colonne. (Faut pas oublié d'incrémenter le $x au début de ta boucle) Et tu dis : $x = 0;

    bonne chance.

  3. #3
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Points : 64
    Points
    64
    Par défaut
    En faite j'avais déjà fait cela comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <? 
    require_once("envsqlCartes.php");
    $connexion=mysql_connect($host, $login, $pass);
    if(!$connexion)
    {
    print "erreur de connexion";
    }
    else
    {
    //2connexion a la base
    $base=mysql_select_db($db);
      if(!$base)
    	{
    	print"erreur de connexion a la base";
    	}
    	else
    	{	//////////////////////////////////CARTES////////////////////////////////////
    $limit_par_page = 4; // on définit le nombre à afficher par page
     
    if(isset($_GET['page']) AND !empty($_GET['page'])) // la variable existe et n'est pas vide
    {
          $page = intval($_GET['page']); // la variable est un nombre entier
    }
    else
    {
        $page = 1; // si le numéro de page n'est pas spécifié dans l'URL, on amène le visiteur vers la page 1
    }
    $from = ($page - 1) * $limit_par_page; // $from désigne le premier nombre de la clause
     
    $requete="SELECT c.id_carte, c.carte from cartes c order by c.carte 
    DESC LIMIT $from, $limit_par_page ;";
    print"<center><b><font color=#5F4954><u>Les cartes postales de COURCAY.</u></font></center></b>";
    $result=mysql_query($requete);
     
    $nbenreg=mysql_num_rows($result);
     
    if($nbenreg==0)
    {		
    print "pas de resultat";
    mysql_close($connexion);
    exit();
    }
    else
    {
    	print"<BR><center>";
    print"<table  bgcolor=#5F4954 border=1 BORDERCOLOR=#000040  WIDTH=400>";
     
    							while($tableau=mysql_fetch_array($result))
    	{													
    	print"<tr>";
     
    	while($i<4)
    	{								
    	print"
    	<td>								
    	<center><a href=cartesGrand.php?id_carte=$tableau[id_carte]><img src=$tableau[carte] width=110 height=80></a></center>
    	</td>";
     
    	$i=$i+1;
    	}
    		print"<td>								
    <center><a href=cartesGrand.php?id_carte=$tableau[id_carte]><img src=$tableau[carte] width=110 height=80></a></center>
    	 </td>";
    	}			
     
    	print"</tr>
    	</table>";			
    													$requete = mysql_query('SELECT COUNT(*) AS CARTES FROM cartes'); // On compte le nombre de cartes
    $donnees = mysql_fetch_assoc($requete);
     
    $nb_pages = ceil($donnees['CARTES'] / $limit_par_page); 
    // on calcule le nombre de pages 
    for($i=1 ; $i<=$nb_pages ; $i++)
    {
           if ($i == $page)
          	 {
               echo '['.$i.']-:-'; 
      // si la page sur laquelle on est actuellement est celle qu'est en train de générer la boucle, on ne met pas de lien
            }
            else
           	 {
                echo '<a href="cartes.php?page='.$i.'">'.$i.'</a>-:-';
           	 }
    	}
     
         }
      }
    }			
    ?>
    Mais ca ne tourne pas convenablement; en fait ca m'affiche les 4 mêmes photos sur la 1ere ligne puisque ca passe 4 fois dans la petite boucle avant de repasser dans la principale et ensuite ca m'affiche 3 lignes puisqu'il reste 3 tours à faire dans la principale. J'ai donc une 1ere ligne remplir puis 3 lignes ou juste la 1ere case est remplie.

Discussions similaires

  1. Problème avec un tableau HTML dans un While
    Par Manutchelo dans le forum Langage
    Réponses: 6
    Dernier message: 22/08/2011, 22h46
  2. Réponses: 9
    Dernier message: 12/05/2006, 09h06
  3. ALigner tableau dans mon css...
    Par Angeldu74 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/03/2006, 21h11
  4. Réponses: 14
    Dernier message: 13/10/2005, 12h55
  5. J'ai un TH dans mon tableau et j'aimerais faire en sorte qu'
    Par hstlaurent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 12/09/2005, 17h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo