Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2011, 12h32   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 1
Points : 1
Par défaut Pagination dans un tableau

Bonjour a tous,
je suis en train d'essayer de faire mon site en php(et je débute..), mais j'ai un problème avec une pagination dans un tableau..
Pour faire simple, sur l'index, j'ai un tableau en 2 colonnes. Dans chacune de mes colonnes, j'ai les résumés de news de deux catégories différentes.
Je voudrais faire une pagination pour chaque colonnes de façon a ce que si je vais sur la page 2 de la colonne 1, je reste sur la page 1 de l'autre..
Voici le code que j'ai essayer, mais qui ne fonctionne pas comme je le voudrais:

Code :
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
 
<table width="500" border="0" cellspacing="20">
  <tr>  
    <td align="center">Categotie 1</td>
    <td align="center">Categorie 2</td>
  </tr>
 
  <tr>
    <td>
 
    <!-- Categorie 1 -->
 
<?php
require "config.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
 
$sql = ('SELECT COUNT(id) as NbArt FROM prods');
		$req = mysql_query($sql) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());;
		$data=mysql_fetch_assoc($req);
 
		$NbArt = $data['NbArt'];
		$perPage = 3;
		$nbPage = ceil($NbArt/$perPage);
 
		if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
			$cPage = $_GET['p'];
		}
		else{
			$cPage =1;
		}
 
 
 
{
    $sql = "SELECT * FROM prods ORDER BY date DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
    $req = mysql_query($sql) or die(mysql_error());
    while($data = mysql_fetch_assoc($req)){
        ?>
        <h2><a href="../drpico.free.fr/news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a></h2>
        <em><?php echo date("d/m/Y G:i", strtotime($data['date'])); ?></em>
        <p><?php echo stripslashes($data['description']); ?></p>
        <?php
    }
    }
?>
<div align=center>
<?php
	for($i=1;$i<=$nbPage;$i++){
			if($nbPage<=1){
			echo "";
			}
			elseif($i==$cPage){
				echo " $i ";
			}
			else{
				echo " <a href=\"index.php?p=$i\">$i</a> ";
			}
		}
?>
 
    </td>
 
    <td>
 
    	<!-- Categotie 2 --> 
 
<?php
require "config.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
 
$sql = ('SELECT COUNT(id) as NbArt FROM news');
		$req = mysql_query($sql) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());;
		$data=mysql_fetch_assoc($req);
 
		$NbArt = $data['NbArt'];
		$perPage = 3;
		$nbPage = ceil($NbArt/$perPage);
 
		if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPage){
			$cPage = $_GET['p'];
		}
		else{
			$cPage =1;
		}
 
 
 
{
    $sql = "SELECT * FROM news ORDER BY date DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
    $req = mysql_query($sql) or die(mysql_error());
    while($data = mysql_fetch_assoc($req)){
        ?>
        <h2><a href="news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a></h2>
        <em><?php echo date("d/m/Y G:i", strtotime($data['date'])); ?></em>
        <p><?php echo stripslashes($data['description']); ?></p>
        <?php
    }
    }
?>
<div align=center>
<?php
	for($i=1;$i<=$nbPage;$i++){
			if($nbPage<=1){
			echo "";
			}
			elseif($i==$cPage){
				echo " $i ";
			}
			else{
				echo " <a href=\"index.php?p=$i\">$i</a> ";
			}
		}
?>
    </td>
  </tr>
</table>
Avec ce code, si je passe a la page 2 d'une catégorie, je passe sur la page 2 des deux catégories..
Auriez vous une idée, une piste pour me faire avancer??
Merci d'avance!
Dr. Pico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 12h37   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
la solution est de faire 2 systèmes séparés de pagination.

Pour l'instant, tu fais un système basé sur "Categorie 1" et appliqué en même temps à "Categorie 2".
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 19h12   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 1
Points : 1
Tout bêtement..
Du coup plutôt quelque choses comme ça?
Code :
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
 
<table width="500" border="0" cellspacing="20">
  <tr>  
    <td align="center">Categotie 1</td>
    <td align="center">Categorie 2</td>
  </tr>
 
  <tr>
    <td>
 
    <!-- Categorie 1 -->
 
<?php
require "config.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
 
 
$page = 'Categorie1';
 
 
$sql = ('SELECT COUNT(id) as NbProd FROM prods');
 
		$req = mysql_query($sql) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());;
		$data=mysql_fetch_assoc($req);
 
		$NbProd = $data['NbProd'];
		$perPage = 3;
		$nbPage = ceil($NbProd/$perPage);
 
		if(isset($_GET['prod']) && $_GET['prod']>0 && $_GET['prod']<=$nbPage){
			$cPage = $_GET['prod'];
		}
		else{
			$cPage =1;
		}
 
 
 
{
    $sql = "SELECT * FROM prods ORDER BY date DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
    $req = mysql_query($sql) or die(mysql_error());
    while($data = mysql_fetch_assoc($req)){
        ?>
        <h2><a href="../drpico.free.fr/news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a></h2>
        <em><?php echo date("d/m/Y G:i", strtotime($data['date'])); ?></em>
        <p><?php echo stripslashes($data['description']); ?></p>
        <?php
    }
    }
?>   
    </td>
 
    <td>
 
    	<!-- Categotie 2 --> 
 
<?php
require "config.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
 
$page = 'Categotie2';
 
$sql = ('SELECT COUNT(id) as NbArt FROM news');
		$req = mysql_query($sql) or die('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());;
		$data=mysql_fetch_assoc($req);
 
		$NbArt = $data['NbArt'];
		$perPage = 3;
		$nbPage = ceil($NbArt/$perPage);
 
		if(isset($_GET['news']) && $_GET['news']>0 && $_GET['news']<=$nbPage){
			$cPage = $_GET['news'];
		}
		else{
			$cPage =1;
		}
 
 
 
{
    $sql = "SELECT * FROM news ORDER BY date DESC LIMIT ".(($cPage-1)*$perPage).",$perPage";
    $req = mysql_query($sql) or die(mysql_error());
    while($data = mysql_fetch_assoc($req)){
        ?>
        <h2><a href="news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a></h2>
        <em><?php echo date("d/m/Y G:i", strtotime($data['date'])); ?></em>
        <p><?php echo stripslashes($data['description']); ?></p>
        <?php
    }
    }
?>
    </td>
  </tr>
  <tr>
  	<td>
    <div align=center>
<?php
 
$page = 'Categorie1';
 
	for($i=1;$i<=$nbPage;$i++){
			if($nbPage<=1){
			echo "";
			}
			elseif($i==$cPage){
				echo " $i ";
			}
			else{
				echo " <a href=\"index.php?prod=$i\">$i</a> ";
			}
		}
?>
</div>
	</td>
    <td>
    <div align=center>
<?php
 
$page = 'Categorie2';
 
	for($i=1;$i<=$nbPage;$i++){
			if($nbPage<=1){
			echo "";
			}
			elseif($i==$cPage){
				echo " $i ";
			}
			else{
				echo " <a href=\"index.php?news=$i\">$i</a> ";
			}
		}
?>
</div>
	</td>
   </tr>
</table>
Cependant, un problème persiste!
Si je vais sur la page 2 de la catégorie 1, puis sur la page 2 de la catégorie 2, la catégorie 1 retourne en première page.. Y a t-il une solution pour empêcher cela?
Dr. Pico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 19h27   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Hello,
je vois ca comme ca :
Code :
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
// config + connexion a la bd
require "config.php";
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
// -----------
// CATEGORIE 1 : prods
// -----------
	// cat1 requete : nombre total
	$cat1_sql = "SELECT COUNT(id) AS cat1_NbArt FROM prods;";
	$cat1_req = mysql_query($cat1_sql) or die('Erreur SQL!<br />'.$cat1_sql.'<br />'.mysql_error());;
	$cat1_data = mysql_fetch_assoc($cat1_req);
	$cat1_NbArt = $cat1_data['cat1_NbArt'];
	$cat1_perPage = 3; // nombre par page
	$cat1_nbPage = ceil($cat1_NbArt/$cat1_perPage);
	// cat1 : recuperation num de page
	if(isset($_GET['cat1_p']) && $_GET['cat1_p']>0 && $_GET['cat1_p']<=$cat1_nbPage){
		$cat1_cPage = $_GET['cat1_p'];
	} else {
		$cat1_cPage = 1; // page 1 par defaut
	}
// -----------
// CATEGORIE 2 : news
// -----------
	// cat2 requete : nombre total
	$cat2_sql = "SELECT COUNT(id) AS cat2_NbArt FROM news;";
	$cat2_req = mysql_query($cat2_sql) or die('Erreur SQL!<br />'.$cat2_sql.'<br />'.mysql_error());;
	$cat2_data = mysql_fetch_assoc($cat2_req);
	$cat2_NbArt = $cat2_data['cat2_NbArt'];
	$cat2_perPage = 3; // nombre par page
	$cat2_nbPage = ceil($cat2_NbArt/$cat2_perPage);
	// cat2 : recuperation num de page
	if(isset($_GET['cat2_p']) && $_GET['cat2_p']>0 && $_GET['cat2_p']<=$cat2_nbPage){
		$cat2_cPage = $_GET['cat2_p'];
	} else {
		$cat2_cPage = 1; // page 1 par defaut
	}
// -----------
?>
<html>
<head>
	<title>Test</title>
</head>
<body>
 
<table width="500" border="0" cellspacing="20">
<!-- table : entete -->
<thead>
	<tr>  
		<td align="center">Categotie 1</td>
		<td align="center">Categorie 2</td>
	</tr>
</thead>
<!-- table : corps -->
<tbody>
	<tr>
 
		<!-- Categorie 1 -->
		<td>
<?php	// CATEGORIE 1 : affichage
		// -----------
		$cat1_sql = "SELECT * FROM prods ORDER BY date DESC LIMIT ".(($cat1_cPage-1)*$cat1_perPage).",".$cat1_perPage.";";
		$cat1_req = mysql_query($cat1_sql) or die(mysql_error());
		while($data = mysql_fetch_assoc($cat1_req))
		{
?>
			<div id="cat1_<?php echo $data['id']; ?>">
				<h2><a href="../drpico.free.fr/news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a></h2>
				<em><?php echo date("d/m/Y G:i", strtotime($data['date'])); ?></em>
				<p><?php echo stripslashes($data['description']); ?></p>
			</div>
<?php
		} // fin while
?>
			<!-- pagination categorie 1 -->
			<div id="cat1_pagination">
<?php		// pagination categorie 1
			for($i=1;$i<=$cat1_nbPage;$i++) {
				if($nbPage<=1){
					echo '';
				} elseif($i==$cat1_cPage){
					echo ' '.$i.' ';
				} else {
					// (attention ici : ligne où les 2 catégories interfèrent)
					// on transmet ... les 2 numéros de page
					echo ' <a href="index.php?cat1_p='.$i.'&amp;cat2_p='.$cat2_cPage.'">'.$i.'</a> ';
				}
			}
?>
			</div>
		</td>
 
		<!-- Categorie 2 --> 
		<td>
<?php	// CATEGORIE 2 : affichage
		// -----------
		$cat2_sql = "SELECT * FROM news ORDER BY date DESC LIMIT ".(($cat2_cPage-1)*$cat2_perPage).",".$cat2_perPage.";";
		$cat2_req = mysql_query($cat2_sql) or die(mysql_error());
		while($data = mysql_fetch_assoc($cat2_req))
		{
?>
			<div id="cat2_<?php echo $data['id']; ?>">
				<h2><a href="news.php?id=<?php echo $data['id']; ?>"><?php echo stripslashes($data['titre']);?></a></h2>
				<em><?php echo date("d/m/Y G:i", strtotime($data['date'])); ?></em>
				<p><?php echo stripslashes($data['description']); ?></p>
 			</div>
<?php
		} // fin while
?>
			<!-- pagination categorie 2 -->
			<div id="cat2_pagination">
<?php		// pagination categorie 2
			for($j=1;$j<=$cat2_nbPage;$j++) {
				if($nbPage<=1){
					echo '';
				} elseif($j==$cat2_cPage){
					echo ' '.$j.' ';
				} else {
					// (attention ici : ligne où les 2 catégories interfèrent)
					// on transmet ... les 2 numéros de page
					echo ' <a href="index.php?cat1_p='.$cat1_cPage.'&amp;cat2_p='.$j.'">'.$j.'</a> ';
				}
			}
?>
			</div>
		</td>
 
	</tr>
</tbody>
</table>
 
</body>
</html>
Les 2 catégories sont traitées complètement indépendamment,

... SAUF au niveau de la pagination, où on transmet ... les 2 numéros de page :
Code :
1
2
3
4
5
colonne cat 1 :
<a href="index.php?cat1_p=xxx&amp;cat2_p=yyy">xxx</a>
ou colonne cat 2 :
<a href="index.php?cat1_p=xxx&amp;cat2_p=yyy">yyy</a>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 21h09   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 1
Points : 1
Énorme!
Merci bien! En plus c'est super lisible!

Par contre, en testant le code, j'ai une erreur ligne 13 et 19 :
"Notice: Undefined variable: data"
Pourtant les variables sont bien déclarées aux ligne 10 et 26. Etranger non?

Et en commentaire tu a ajouter "attention ici !" pour les paginations, mais attention à quoi?
Dr. Pico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 00h55   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
J'ai juste oublié de faire quelques remplacements de noms de variables ...
Code :
1
2
3
4
5
6
7
8
9
10
11
-> cf ligne 12 : $cat1_data = mysql_fetch_assoc($cat1_req);
-> remplacer (ligne 13) 
	$cat1_NbArt = $data['cat1_NbArt'];
par 
	$cat1_NbArt = $cat1_data['cat1_NbArt'];
	
-> cf ligne 28 : $cat2_data = mysql_fetch_assoc($cat2_req);
-> remplacer (ligne 29) 
	$cat2_NbArt = $data['cat1_NbArt'];
par 
	$cat2_NbArt = $cat2_data['cat1_NbArt'];
Citation:
Envoyé par Dr. Pico Voir le message
en commentaire tu a ajouter "attention ici !" pour les paginations, mais attention à quoi?
-> voir message précédent : ("attention ici !" car ce sont les 2 seuls lignes où les 2 catégories interfèrent)
Citation:
Les 2 catégories sont traitées complètement indépendamment,
... SAUF au niveau de la pagination, où on transmet ... les 2 numéros de page ...
J'ai pris l'habitude de mettre des commentaires dans mes codes :
1/ sur le forum (ou dans mes tutos) : ca aide à la compréhension pour les autres (pédagogie)
2/ ... mais aussi dans MES fichiers, pour moi : si je dois reprendre/corriger le code 6 mois ou 1 an plus tard ...
3/ ou encore quand on transmet du code à un autre ... (pour lui éviter de galérer)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h03   #7
Invité de passage
 
Inscription : janvier 2011
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 4
Points : 1
Points : 1
Parfait! Un énorme merci !!
Fraudais bien que j'y penses a organiser mieux mes codes, c'est vrai que c'est bien plus facile a lire comme ça.
Encore merci et bonne continuation!
Dr. Pico est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h25.


 
 
 
 
Partenaires

Hébergement Web