Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 22/08/2006, 23h22   #1
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Par défaut [Conception] Affichage page par page

J'ai mis en place un petit moteur de recherche par département qui m'ouvre une page avec tous les inscrits par département. Jusque là tout va bien.
Maintenant, au lieu de m'afficher tous les résultats sur une seule page, j'aimerais arriver à un affichage page par page avec 5 résultat par pages.

Voilà mon code :

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
 
 
<?php
 
 
include "configuration.php";
include "page_haut.inc";
 
 
		$search = mysql_query("SELECT * FROM $mbmembres WHERE sid='$sid'") or die ("ERROR:" . mysql_error());
		$num = mysql_num_rows($search);
 
if ($num == 0) {
 
 
 
 
			echo "<table border=\"0\">";
			echo "<tr>";
			echo "<td>Il y a <b>$num</b> résultats: </b></td>";
				echo "</tr><tr>";
			echo "<td></td>";
			echo "</tr><tr>";
			echo "<td class=\"moyen\">Pas de résultats!</td>";
			echo "</td>";
			echo "</tr>";
			echo "</table>";
 
include "page_bas.inc";
		} else {
 
 
			echo "<table border=\"0\" width=90%>";
			echo "<tr bgcolor=#000099>";
			echo "<td><font color=white><b><font color=white>Il y a <b>$num</b> résultats</font> </b></td>";
			echo "</tr><tr></table>";
			while ($row = mysql_fetch_row($search)) {
 
				echo "<table border=0 width=90%>
<tr><td width='50%'>
<a href=\"$row[6]\" alt='fiche membre'><center><font class=grand><b>$row[3]</b></font></a></center></td>";
		[...]
}
include "page_bas.inc";
		}
?>
Je suis partie sur divers scripts que j'ai essayée d'adapter mais sans succès...

Une piste à me suggérer ?
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2006, 23h40   #2
Membre du Club
 
Inscription : février 2006
Messages : 99
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 99
Points : 59
Points : 59
je peux deja te donner une piste, tu rajoute LIMIT 0, 5 dans ta requête et tu incrémente pour chaque page, ton adresse sera du style pagebidule.php?n=0

tu passe dans l'url un n = 0 par exemple et ta requête devient du style
Citation:
$n = $_GET['n'];
$search = mysql_query("SELECT * FROM $mbmembres WHERE sid='$sid' LIMIT ".$n.", ".$n+5.") or die ("ERROR:" . mysql_error());
et tu appele tes pages suivantes avec n = 5, 10, 12 si ca te chante ca te selectionnera 5 a 10, 10 a 15 ou 12 a 17
Link3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 00h29   #3
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Je viens d'insérer ma requête avec LIMIT comme tu me le suggérais ci-suit :

Code :
1
2
3
4
5
 
 
$n = $_GET['n'];
$search = mysql_query("SELECT * FROM $sbbproduit WHERE sid='$sid' LIMIT '.$n.', '.$n+5.'") or die ("ERROR:" . mysql_error());
$num = mysql_num_rows($search);
mais le message d'erreur suivant apparaît

Citation:
ERROR:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''..', '.+5.'' at line 1
...
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 00h52   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Code :
1
2
3
$n = $_GET['n'];
$search = mysql_query("SELECT * FROM $sbbproduit WHERE sid='$sid' LIMIT '.$n.', '.$n+5.'") or die ("ERROR:" . mysql_error());
$num = mysql_num_rows($search);
Il y a ce message à cause de l'alternance de quote et de double quote. DOnc à modifier pour obtenir ceci :
Code :
1
2
mysql_query("SELECT * FROM $sbbproduit WHERE sid='$sid' LIMIT ".$n.", ".($n+5).") or die ("ERROR:" . mysql_error());
$num = mysql_num_rows($search);
Une simple erreur de syntaxe

et ton $n s'il est vide il faire quelque chose pour qu'il soit mis à 0
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 00h58   #5
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Je me mets en mode [comprend rien] mais maintenant j'ai le message suivant :

Citation:
Parse error: syntax error, unexpected T_STRING in /home.2/lavieaut/www/MB/souscat.php on line 8
Comment cela se fait-il ?
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 02h46   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tout simplement parce que tu as une erreur de variable.

Par exemple je t'ai dit que ton $n doit TOUJOURS exister sinon ca pose un problème avec l'addition dans ta requete. Et c'est peut etre de là que vient ta parse error.

Il faudrait mettre ton code et voir aussi comment tu génères les liens pour les différentes pages. Si tu veux voir un exemple de pagination regardes ceci : Pagination d'un résultat de requête
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 12h14   #7
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Je suis allé voir l'exemple de pagination et j'ai essayé d'en décortiquer le code. Sinon, jai repris un code que j'ai adapté à la structure de mon application dont voici le code :

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
 
<?php
  include("configuration.php");
 
  $query="select * from mbmembres WHERE sid='$sid' ";
  $result = mysql_query($query);
 
  $nombMaxPage=10;
 
  $numPageCour = 0; 
 
  $Ndeb=@$_GET["num"]; 
 
 
  while (($val = mysql_fetch_array($result)) && ($numPageCour<$nombMaxPage+$Ndeb))
  {
      if($numPageCour>=$Ndeb)
   {
 
         echo $val["nom"]."<br>";
      }
 
     $numPageCour++;
 }
 
 ?>
 
<br>
 
<table cellpadding=3><tr>
<?php
 
if($Ndeb > 0) { ?><td valign=top><A href="">Retour</A></td>
<? 
} 
?>
<td>  
<? 
$Npag = ceil(mysql_numrows($result)/$nombMaxPage);
 
for($i = 1;$i<=$Npag;$i++) {
 
 
  if($Ndeb == ($i-1)*$nombMaxPage) { ?>Page<? echo $i; ?><? } else { ?><A href=""><? echo $i; ?></A><? }
} 
?>
  </td>  
<? 
 
if($val) { ?><td valign=top><A href="">Suite</A></td><? } 
?>
 
</tr></table>
 
</body></html>
<? 
mysql_close(); 
?>
Les résultats s'affichent désormais selon mes requêtes mais que dois je paramétrer à présent pour passer d'une page à l'autre ?

J'ai nommé la page "souscat.php"
merci d'avance
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 12h33   #8
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Re,
En y regardant de plus près, je sais pas si ce script est optimisé pour traiter beaucoup de résultats ...

Réflexion :
Citation:
Imagine que tu as 50 000 membres et que tu vas au 40 000e. Ben le con de script va parcourir les 39 999 avant d'afficher un truc.
Qu'en pensez vous ? Un 'Limit' dans la requête, m'épargnerait-il cet inconvénient ? Si oui comment m'y prendre ?
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 14h05   #9
Membre chevronné
 
Avatar de Elwyn
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 836
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2006
Messages : 836
Points : 712
Points : 712
Il existe plein de script de pager php ... est ton ami
__________________
Dire Straits, Bob Dylan, Led Zeppelin, the Who, Pink Floyd, AC/DC, Guns & Roses, the Doors, ...
Elwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 15h43   #10
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31


Justement j'ai eu ce petit script de pagination en tapant sur "google" . Celui-ci me convient assez bien dans la mesure où il fonctionne. Simplement, comment dois je paramétrer le code ci dessus pour que les résultats suivants s'ouvrent sur une autre page ... et ainsi de suite ... Merci d'avance
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 15h47   #11
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Pourquoi une autre page ? avec php on peu le faire sur la même

Mais si c'est vraiment ce que tu veux tu passes dans l'url les différents paramètres mais surtout le nombre à partir du quel tu vas faire ton limit. Comme cela a été donné plus haut avec le $n = $_GET['nb']
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 23h45   #12
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Effectivement si je peux afficher les résultats suivants sur la même page, je suis preneuse ...

Je tourne en rond sur les scripts de pagination depuis 3 jours en fait j'ai ce script
qui m'affiche les 10 premiers résultats de ma requête mais je ne sais pas comment passer à la page 2 et ainsi de suite...
Je vous remets le code

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
 
 
<?php
  include("configuration.php");
 
  $query="select * from mbmembres WHERE sid='$sid' ";
  $result = mysql_query($query);
 
  $nombMaxPage=10;
 
  $numPageCour = 0; 
 
  $Ndeb=@$_GET["num"]; 
 
 
  while (($val = mysql_fetch_array($result)) && ($numPageCour<$nombMaxPage+$Ndeb))
  {
      if($numPageCour>=$Ndeb)
   {
 
         echo $val["nom"]."<br>";
      }
 
     $numPageCour++;
 }
 
 ?>
 
<br>
 
<table cellpadding=3><tr>
<?php
 
if($Ndeb > 0) { ?><td valign=top><A href="">Retour</A></td>
<? 
} 
?>
<td>  
<? 
$Npag = ceil(mysql_numrows($result)/$nombMaxPage);
 
for($i = 1;$i<=$Npag;$i++) {
 
 
  if($Ndeb == ($i-1)*$nombMaxPage) { ?>Page<? echo $i; ?><? } else { ?><A href=""><? echo $i; ?></A><? }
} 
?>
  </td>  
<? 
 
if($val) { ?><td valign=top><A href="">Suite</A></td><? } 
?>
 
</tr></table>
 
</body></html>
<? 
mysql_close(); 
?>
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 00h11   #13
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Sinon je vais essayer de faire simple en vous exposant clairement le problème auquel je suis confronté .
A partir du menu déroulant (index.php) dont voici le code ci-joint, je choisie mon département :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
<td valign=top><form action="souscat.php" method="post" target="main">
  <p><strong>Pays:</strong>
      <select name="sid">
        <?
while ($row = mysql_fetch_row($query)) {
		echo "<option name=\"sid\" value=\"$row[0]\">$row[2]</option>";
}
?>
      </select>
    <input type=Submit value=Ok>
Après avoir choisie mon département, j'aimerais classer page par page les résultats de ma table membres en fonction du département sélectionner (exemple : 5 résultats par page)

Pour se faire j'utilise ce code :

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
 
 
<?php 
//========================================= 
// includes du fichier fonctions 
//========================================= 
require 'fonctions.php'; 
//========================================= 
// information pour la connection à le DB 
//========================================= 
 
include("configuration.php");
 
//========================================= 
// initialisation des variables  
//========================================= 
// on va afficher 5 résultats par page. 
$nombre = 5;   
// si limite n'existe pas on l'initialise à zéro 
if (!$limite) $limite = 0;  
// on cherche le nom de la page.     
$path_parts = pathinfo($_SERVER['PHP_SELF']); 
$page = $path_parts["basename"]; 
 
//=========================================     
// requête SQL qui compte le nombre total  
// d'enregistrements dans la table. 
//========================================= 
$select = 'SELECT count(*) FROM mbmembres'; 
$result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
$row = mysql_fetch_row($result); 
$total = $row[0]; 
 
//========================================= 
// vérifier la validité de notre variable  
// $limite; 
//========================================= 
$verifLimite= verifLimite($limite,$total,$nombre); 
// si la limite passée n'est pas valide on la remet à zéro 
if(!$verifLimite)  { 
    $limite = 0; 
} 
//========================================= 
// requête SQL qui ne prend que le nombre  
// d'enregistrement necessaire à l'affichage. 
//========================================= 
$select = 'select id, nom FROM mbmembres ORDER BY nom ASC limit '.$limite.','.$nombre; 
$result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
 
//=========================================     
// si on a récupéré un resultat on l'affiche. 
//========================================= 
if($total) { 
    // début du tableau 
    echo '<table bgcolor="#FFFFFF">'."\n"; 
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
        echo '<tr>'; 
        echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
		echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
        echo '</tr>'."\n"; 
    // lecture et affichage des résultats sur 2 colonnes     
    while($row = mysql_fetch_array($result)) { 
        echo '<tr>'; 
        echo '<td bgcolor="#CCCCCC">'.$row['id'].'</td>'; 
		echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
        echo '</tr>'."\n"; 
    } 
    echo '</table>'."\n"; 
} 
else echo 'Pas d\'enregistrements dans cette table...'; 
mysql_free_result($result); 
 
//=========================================     
// si le nombre d'enregistrement à afficher  
// est plus grand que $nombre  
//========================================= 
if($total > $nombre) { 
    // affichage des liens vers les pages 
    affichePages($nombre,$page,$total); 
    // affichage des boutons 
    displayNextPreviousButtons($limite,$total,$nombre,$page); 
} 
?>
tel qu'il est présenté et appelé seul, ce code me présente les résultats de la table membres classé par nom page par page.

Or j'aimerais à partir du menu déroulant de ma page index.php sélectionner mon département et afficher les résultats par département et là ça coince. En effet et pour se faire ma requête
Code :
$select = 'select id, nom FROM sbbproduit ORDER BY nom ASC limit '.$limite.','.$nombre;
devrait me semble-t-il être compléter par
Code :
$select = 'select id, nom FROM sbbproduit WHERE sid="$sid" ORDER BY nom ASC limit '.$limite.','.$nombre;
sauf qu'à ce moment rien ne s'affiche ... Donc visiblement jai dû me planter...

Donc de index.php (menu déroulant département) >> souscat.php >> avec classement des membres par département.

Merci d'avance de votre disponibilité
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 02h48   #14
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Je vais tenter avec le peu d'infos que j'ai

Tout d'abord on va commencer par change ton select qui doit être le même après changement de page.Donc on va faire comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?php 
   //Récupère le département demandé 
   $sid = isset($_POST['sid'])?$_POST['sid']:(isset($_GET['sid'])?$_GET['sid']:0);
?>
<td valign=top><form action="souscat.php" method="post" target="main">
  <p><strong>Pays:</strong>
      <select name="sid">
        <?
while ($row = mysql_fetch_row($query)) {
		echo '<option value="'.$row[0].'" '.(($sid == $row[0])?'selected="selected"':'').'>'.$row[2].'</option>';
}
?>
      </select>
    <input type=Submit value=Ok>
Pour ça c'est bon (sais tu que tu peux mettre directement le nom du champ avec mysql_fetch_array ? Ca peut etre plus parlant pour débugger après).

Ensuite il faut préparer les requêtes pour la pagination et surtout l'affichage.

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
<?php 
 
$userperpage = 5; // on va afficher 5 résultats par page. 
$start = isset($_GET['start'])?$_GET['start']:0; //Nombre indiquant le départ de la requete
// on cherche le nom de la page.     
$page = basename(__FILE__); 
//=========================================     
// requête SQL qui compte le nombre total  
// d'enregistrements dans la table. 
//========================================= 
$select = 'SELECT count(*) as total FROM mbmembres'; 
$result = mysql_query($select)  or die ('Erreur : '. mysql_error()); 
$row = mysql_fetch_array($result); 
$total = $row['total']; 
//=========================================     
// si on a récupéré un resultat on l'affiche. 
//========================================= 
if($total > 0) 
{ 
    // début du tableau 
    echo '<table bgcolor="#FFFFFF">'."\n"; 
    // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
    echo '<tr>'; 
    echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
    echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
    echo '</tr>'."\n"; 
    //========================================= 
    // requête SQL qui ne prend que le nombre  
    // d'enregistrement necessaire à l'affichage. 
    //========================================= 
    $select = 'select id, nom FROM mbmembres ORDER BY nom ASC LIMIT '.$start.','.$userperpage; 
    $result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
    while($row = mysql_fetch_array($result))  // lecture et affichage des résultats sur 2 colonnes   
    { 
        echo '<tr>'; 
        echo '<td bgcolor="#CCCCCC">'.$row['id'].'</td>'; 
        echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
        echo '</tr>'."\n"; 
    } 
    echo '</table>'."\n"; 
 
    //Génération des liens pour l'affichage des pages
    echo 'Page : ';
    $genestart = 0;
    for($i = 1; $i <= ceil( $total_posts / $posts_per_page ); $i++)
    {
        echo '<a '.(((floor($start/$userperpage)+1)==$i)?('href="'.$page.'?start='.$genestart.'"'):('')).'>'.$i.'</a>&nbsp;';
        $genestart += $userperpage;
    }
} 
else 
    echo 'Pas d\'enregistrements dans cette table...'; 
 
mysql_free_result($result); 
 
?>
Ca devrait aller je pense avec ca
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 18h31   #15
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Bonjour tout le monde !

Voilà j'ai testé avec empressement ta solution Kerod, mais cela ne marche toujours pas. En fait, ma requête via le menu déroulant affiche tous les résultats de ma tables membres au lieu que celle ci ne retienne que les membres par départements...

Aussi, j'ai le message d'erreur suivant qui apparaît au moment d'afficher les autres pages de résultats :
Citation:
Warning: Division by zero in /home.2/lavieaut/www/MB/souscat.php on line 47
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 19h32   #16
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
ton code serait le bienvenue dans ce cas
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 20h41   #17
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Je rectifie le tir en te donnant mon code :

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
<?php 
 
include ("configuration.php");
 
$userperpage = 10; // on va afficher 5 résultats par page. 
$start = isset($_GET['start'])?$_GET['start']:0; //Nombre indiquant le départ de la requete
// on cherche le nom de la page.     
$page = basename(__FILE__); 
//=========================================     
// requête SQL qui compte le nombre total  
// d'enregistrements dans la table. 
//========================================= 
$select = 'SELECT count(*) as total FROM mbmembres'; 
$result = mysql_query($select)  or die ('Erreur : '. mysql_error()); 
$row = mysql_fetch_array($result); 
$total = $row['total']; 
//=========================================     
// si on a récupéré un resultat on l'affiche. 
//========================================= 
if($total > 0) 
{ 
    // début du tableau 
    echo '<table bgcolor="#FFFFFF">'."\n"; 
    // première ligne on affiche les titres prénom et surnom dans 2 colonnes 
    echo '<tr>'; 
    echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
    echo '<td bgcolor="#669999"><b><u>texte court</u></b></td>'; 
    echo '</tr>'."\n"; 
    //========================================= 
    // requête SQL qui ne prend que le nombre  
    // d'enregistrement necessaire à l'affichage. 
    //========================================= 
    $select = 'select id, nom FROM mbmembres ORDER BY nom ASC LIMIT '.$start.','.$userperpage; 
    $result = mysql_query($select)  or die ('Erreur : '.mysql_error() ); 
    while($row = mysql_fetch_array($result))  // lecture et affichage des résultats sur 2 colonnes   
    { 
        echo '<tr>'; 
        echo '<td bgcolor="#CCCCCC">'.$row['id'].'</td>'; 
        echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
        echo '</tr>'."\n"; 
    } 
    echo '</table>'."\n"; 
 
    //Génération des liens pour l'affichage des pages
    echo 'Page : ';
    $genestart = 1;
    for($i = 1; $i <= ceil( $total_posts / $posts_per_page ); $i++)
    {
        echo '<a '.(((floor($start/$userperpage)+1)==$i)?('href="'.$page.'?start='.$genestart.'"'):('')).'>'.$i.'</a>&nbsp;';
        $genestart += $userperpage;
    }
} 
else 
    echo 'Pas d\'enregistrements dans cette table...'; 
 
mysql_free_result($result); 
 
?>
Pour ce qui est du menu déroulant le voici :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
include "configuration.php";
$query = mysql_query("SELECT * FROM $mbdepartement");
 ?>
<?php 
   //Récupère le département demandé 
   $sid = isset($_POST['sid'])?$_POST['sid']:(isset($_GET['sid'])?$_GET['sid']:0);
?>
<td valign=top><form action="souscat.php" method="post" target="main">
  <p><strong>Département:</strong>
      <select name="sid">
        <?
while ($row = mysql_fetch_row($query)) {
		echo '<option value="'.$row[0].'" '.(($sid == $row[0])?'selected="selected"':'').'>'.$row[2].'</option>';
}
?>
      </select>
    <input type=Submit value=Ok>
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 21h00   #18
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Déjà le code que j'ai donné est fait pour etre sur la meme page

Ensuite tu as bien les pages affichées en bas de la page ??
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 22h37   #19
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
J'ai mis le code sur la même page mais malgré cela, je n'ai pas les pages affichées en bas de la page

erreur suivante à la place:

Citation:
Warning: Division by zero in /home.2/lavieaut/www/MB/souscat.php on line 47
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2006, 23h07   #20
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Il fallait remarquer que le nom des variables n'étaient les même dans le code et dans la génération des pages
Code :
1
2
3
4
5
for($i = 1; $i <= ceil( $total / $userperpage ); $i++)
    {
        echo '<a '.(((floor($start/$userperpage)+1)==$i)?('href="'.$page.'?start='.$genestart.'"'):('')).'>'.$i.'</a>&nbsp;';
        $genestart += $userperpage;
    }
Kerod 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 07h55.


 
 
 
 
Partenaires

Hébergement Web