/pages/liste.php

https://bitbucket.org/mw4rf/ajpsc-annuaire · PHP · 267 lines · 174 code · 35 blank · 58 comment · 28 complexity · 002307248f43cd5a679e8c1968fd80c8 MD5 · raw file

  1. <?php
  2. // Annuaire Alumnii
  3. // Base de données et annuaire d'anciens étudiants.
  4. // Copyright (C) <2006> <Guillaume Florimond>
  5. // This program is free software: you can redistribute it and/or modify
  6. // it under the terms of the GNU General Public License as published by
  7. // the Free Software Foundation, either version 3 of the License, or
  8. // (at your option) any later version.
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. // You should have received a copy of the GNU General Public License
  14. // along with this program. If not, see <https://www.gnu.org/licenses/>.
  15. connexion();
  16. /* PAGINATION */ /* $x doit être définie avant d'arriver à cet endroit du code */
  17. // A partir de combien d'enregistrements une nouvelle page est-elle créée ? A partir de $z
  18. $z = $_config['pagination'];
  19. //Combien d'enregistrements au total dans la table ? Réponse: $t
  20. $sql = "SELECT * FROM utilisateur;";
  21. $req = mysql_query($sql);
  22. $t = mysql_num_rows($req);
  23. // Tri des enregistrements
  24. // Cas 1 => Première visualisation de la page: session close: tri par défaut
  25. if (!isset($_SESSION['tri']))
  26. $_SESSION['tri'] = "nom ASC";
  27. // Cas 2 => L'utilisateur vient juste de cliquer sur un lien ordonnant un tri
  28. if(isset($_GET['tri']))
  29. {
  30. // Noms de famille
  31. if($_GET['tri'] == "n-asc")
  32. $_SESSION['tri'] = "nom ASC";
  33. if($_GET['tri'] == "n-desc")
  34. $_SESSION['tri'] = "nom DESC";
  35. // Prénoms
  36. if($_GET['tri'] == "pn-asc")
  37. $_SESSION['tri'] = "prenom ASC";
  38. if($_GET['tri'] == "pn-desc")
  39. $_SESSION['tri'] = "prenom DESC";
  40. // Promotions
  41. if($_GET['tri'] == "pr-asc")
  42. $_SESSION['tri'] = "promotion ASC";
  43. if($_GET['tri'] == "pr-desc")
  44. $_SESSION['tri'] = "promotion DESC";
  45. // Adresses e-mail
  46. if($_GET['tri'] == "em-asc")
  47. $_SESSION['tri'] = "email ASC";
  48. if($_GET['tri'] == "em-desc")
  49. $_SESSION['tri'] = "email DESC";
  50. // Annuler la formule de tri
  51. if($_GET['tri'] == "no")
  52. $_SESSION['tri'] = "id ASC";
  53. // Par date de mise à jour
  54. if($_GET['tri'] == "maj")
  55. $_SESSION['tri'] = "modif DESC";
  56. }
  57. // Conclusion => un tri est déjà actif, soit parce que c'est le tri par défaut (cas 1)
  58. // soit parce qu'il vient d'être défini (cas 2), soit encore parce qu'il est enregistré
  59. // dans la session en cours.
  60. $tri = $_SESSION['tri'];
  61. //Générer la requête avant de modifier les limites ($x)
  62. $sql = "SELECT * FROM utilisateur ORDER BY $tri LIMIT $x,$z;";
  63. $req = mysql_query($sql);
  64. // On stocke le $x actuel dans $xa, car $x va être modifié par la suite
  65. $xa = $x;
  66. // Barre de navigation / répartition des résultats sur plusieurs pages
  67. //Calculs
  68. // $y est le premier enregistrement de la plage à afficher (LIMIT Y,...)
  69. // $z est le seuil à partir duquel on passe à une autre page
  70. // $x est le nombre d'enregistrements qu'il reste à afficher
  71. //Protéger y: il ne doit pas être négatif, car x peut être plus petit que z
  72. $y = $x - $z;
  73. if($y < 0)
  74. $y = 0;
  75. //Le nouveau x est l'ancien + la grandeur du nouvel intervalle ($z)
  76. $x = $x + $z;
  77. // $l représente le premier enregistrement de la dernière page
  78. $l = $t-$z;
  79. // $p représente le nombre de pages
  80. $p = ceil($t / $z); //ceil() arrondit à la valeur supérieure
  81. // $c représente la page courante
  82. $c = ceil($x / $z); //ceil() arrondit à la valeur supérieure
  83. /* /PAGINATION */
  84. ?>
  85. <div class="container well">
  86. <?php
  87. /* Construction et affichage du système de pagination */
  88. $avant = abbr2("p-");
  89. $apres = abbr2("p+");
  90. $avantx = donner("p-");
  91. $apresx = donner("p+");
  92. $il_y_a = donner("p1");
  93. $fiches_sur = donner("p2");
  94. $pages = donner("p3");
  95. $page = donner("p4");
  96. $result = "<table style=\"width:100%;\"><tr><td align=\"left\">";
  97. $result .= "<span class=\"label\">$il_y_a <b>".$t."</b> $fiches_sur <b>".$p."</b> $pages</span>";
  98. $result .= "</td>";
  99. // Combobox qui permet de sauter d'une page à l'autre
  100. $co = "<select class=\"span1 btn\" name=\"menu_pagination\" "
  101. ."onchange=\"MM_jumpMenu('parent',this,0)\">";
  102. for($ix = 1 ; $ix <= $p ; $ix++)
  103. {
  104. // Page courante
  105. if($ix == $c)
  106. {
  107. $co .= "<option selected=\"selected\">$c</option>";
  108. }
  109. // Autre page
  110. else
  111. {
  112. /* $ix indique la page à laquelle on veut aller, mais quel sera la
  113. valeur de x pour cette page (x=premier enregistrement de la page)
  114. Réponse: page désirée ($ix) * seuil de pagination ($z)
  115. MAIS: la première page porte le numéro 1, alors qu'elle est
  116. construite avec un $x égal à 0 (limit $x=O,$z) => donc, il faut
  117. en réalité utiliser ($ix - 1) au lieu de $ix*/
  118. $xgo = ($ix - 1) * $z;
  119. $co .= "<option value=\"index.php?action=page_liste&x=$xgo"
  120. ."\">$ix</option>";
  121. }
  122. }
  123. $co .= "</select>";
  124. $provresult = "<td align=\"center\"><div class=\"btn-group\">";
  125. // si $x>$z c'est qu'on est plus à la première page
  126. if($x > $z)
  127. {
  128. $provresult .="<a class=\"btn btn-small\" href=\"index.php?action=page_liste\"><i class=\"icon-fast-backward\"></i></a>"
  129. ." <a class=\"btn btn-small\" href=\"index.php?action=page_liste&x=$y\"><i class=\"icon-backward\"></i></a>";
  130. }
  131. // sinon c'est qu'on est à la première page
  132. else
  133. {
  134. $provresult .= "<a class=\"btn btn-small disabled\"><i class=\"icon-fast-backward\"></i></a> <a class=\"btn btn-small disabled\"><i class=\"icon-backward\"></i></a>";
  135. }
  136. //si $x<$t c'est qu'on n'est pas encore à la dernière page
  137. if($x < $t)
  138. {
  139. $provresult .=" <a class=\"btn btn-small\" href=\"index.php?action=page_liste&x=$x\"><i class=\"icon-forward\"></i></a>"
  140. ." <a class=\"btn btn-small\" href=\"index.php?action=page_liste&x=$l\"><i class=\"icon-fast-forward\"></i></a>";
  141. }
  142. // sinon c'est qu'on est à la dernière page
  143. else
  144. {
  145. $provresult .= " <a class=\"btn btn-small disabled\"><i class=\"icon-forward\"></i></a> <a class=\"btn btn-small disabled\"><i class=\"icon-fast-forward\"></i></a>";
  146. }
  147. $result .= $provresult."</div></td>";
  148. // Pour désactiver le Combo, remplacer ci-dessous $co par $c
  149. $result .= "<td align=\"right\"><span class=\"label\">$page</span> $co <span class=\"label\">/$p</span></td></tr></table>";
  150. echo $result;
  151. ?>
  152. </div>
  153. <div class="container">
  154. <table class="table table-hover">
  155. <thead>
  156. <tr>
  157. <th width="25%">
  158. <span class="btn-group">
  159. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=n-asc">
  160. <i class="icon-chevron-up"></i>
  161. </a>
  162. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=n-desc">
  163. <i class="icon-chevron-down"></i>
  164. </a>
  165. <a class="btn btn-mini disabled"><?php dire("c1"); ?></a>
  166. </span>
  167. </th>
  168. <th width="25%">
  169. <span class="btn-group">
  170. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=pn-asc">
  171. <i class="icon-chevron-up"></i>
  172. </a>
  173. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=pn-desc">
  174. <i class="icon-chevron-down"></i>
  175. </a>
  176. <a class="btn btn-mini disabled"><?php dire("c2"); ?></a>
  177. </span>
  178. </th>
  179. <th>
  180. <span class="btn-group">
  181. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=pr-asc">
  182. <i class="icon-chevron-up"></i>
  183. </a>
  184. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=pr-desc">
  185. <i class="icon-chevron-down"></i>
  186. </a>
  187. <a class="btn btn-mini disabled"><?php dire("c3"); ?></a>
  188. </span>
  189. </th>
  190. <th>
  191. <span class="btn-group">
  192. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=em-asc">
  193. <i class="icon-chevron-up"></i>
  194. </a>
  195. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=em-desc">
  196. <i class="icon-chevron-down"></i>
  197. </a>
  198. <a class="btn btn-mini disabled"><?php dire("c7"); ?></a>
  199. </span>
  200. </th>
  201. <th>
  202. <a class="btn btn-mini" href="index.php?action=page_liste&x=<?php echo $xa; ?>&tri=no">
  203. <i class="icon-remove"></i>
  204. </a>
  205. </th>
  206. </tr>
  207. </thead>
  208. <tbody>
  209. <?php
  210. // Pour l'exportation
  211. /* NB: il faut refuser l'exportation ici (false) pour que soit générée une requête SQL de base, exportant TOUS les enregistrements... et non seulement ceux qui sont sur la page courante*/
  212. $_SESSION["exportation_permission"] = false;
  213. $_SESSION["exportation_requete"] = $sql;
  214. while($data = mysql_fetch_assoc($req))
  215. {
  216. $afficher['nom'] = (formater_nom(stripslashes($data['nom'])));
  217. $afficher['prenom'] = (formater_nom(stripslashes($data['prenom'])));
  218. $afficher['promotion'] = (stripslashes($data['promotion']));
  219. $afficher['email'] = (stripslashes($data['email']));
  220. $fiche = "index.php?action=page_voir&id=".$data['id'];
  221. ?>
  222. <tr style="cursor:pointer" onClick="javascript:js_direct('<?php echo $fiche; ?>');">
  223. <td><?php echo abbr3($afficher["nom"], donner("voir")); ?></td>
  224. <td><?php echo abbr3($afficher["prenom"], donner("voir")); ?></td>
  225. <td><?php echo abbr3($afficher["promotion"], donner("voir")); ?></td>
  226. <td><?php echo abbr3($afficher["email"], donner("voir")); ?></td>
  227. <td><i class="icon-eye-open"></i></td>
  228. </tr>
  229. <?php } ?>
  230. </tbody>
  231. </table>
  232. </div>