Page 1 sur 1

reclassement des résultats

Posté : 08 mars 2006, 12:14
par le_luke
Bonjour,

Je voudrais savoir comment faire pour relcasser les résultats obtenus après un QUERY....

De base le classement se fait par id mais je voudrais que quand on click sur "titre", le classement change par titre et plus par id.

Seulement voilà, évidemment ca ne marche pas....(le re-classement ne se fait pas)

voilà mon script:
<?php
$default_sort = 'id';
$allowed_order = array ('id','titre','realisateur','genre');
$order = $default_sort;

mysql_select_db($database_dvdtheque, $dvdtheque);
$query_dvdtheque = "SELECT * FROM dvdtheque ORDER BY $order ASC";
$dvdtheque = mysql_query($query_dvdtheque, $dvdtheque) or die(mysql_error());
$row_dvdtheque = mysql_fetch_assoc($dvdtheque);
$totalRows_dvdtheque = mysql_num_rows($dvdtheque);

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>

<p>&nbsp;</p>
<table width="813" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td bgcolor="#CCCCCC"><a href="consult.php?order=titre">titre</a></td>
    <td bgcolor="#CCCCCC"><a href="consult.php?order=real">realisateur</a></td>
    <td bgcolor="#CCCCCC"><a href="consult.php?order=genre">genre</a></td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_dvdtheque['titre']; ?></td>
      <td><?php echo $row_dvdtheque['realisateur']; ?></td>
      <td><?php echo $row_dvdtheque['genre']; ?></td>
    </tr>
    <?php } while ($row_dvdtheque = mysql_fetch_assoc($dvdtheque)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($dvdtheque);
?>

Posté : 08 mars 2006, 12:37
par Truc
Salut,
Tu ne récupère jamais le tri qui doit être effectué après le clic sur un des liens (titre, real, ...).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<?
$order = (isset($_GET['order'])) ? $_GET['order'] : " id "; // récupération du tri grace à l'opérateur ternaire

if (in_array($order,$allowed_order) // verification de la valeur récupérée, évite de taper n'importe quoi dans l'url
{
   mysql_select_db($database_dvdtheque, $dvdtheque);
   $query_dvdtheque = "SELECT * FROM dvdtheque ORDER BY $order ASC";
   $dvdtheque = mysql_query($query_dvdtheque, $dvdtheque) or die(mysql_error());
   $row_dvdtheque = mysql_fetch_assoc($dvdtheque);
   $totalRows_dvdtheque = mysql_num_rows($dvdtheque);
?>
   <p>&nbsp;</p>
   <table width="813" border="0" cellpadding="0" cellspacing="0">
     <tr>
       <td bgcolor="#CCCCCC"><a href="consult.php?order=titre">titre</a></td>
       <td bgcolor="#CCCCCC"><a href="consult.php?order=real">realisateur</a></td>
       <td bgcolor="#CCCCCC"><a href="consult.php?order=genre">genre</a></td>
     </tr>
   <?php do 
   { ?>
     <tr>
       <td><?php echo $row_dvdtheque['titre']; ?></td>
       <td><?php echo $row_dvdtheque['realisateur']; ?></td>
       <td><?php echo $row_dvdtheque['genre']; ?></td>
     </tr>
   <?php 
   } 
   while ($row_dvdtheque = mysql_fetch_assoc($dvdtheque)); ?>
   </table>
   
   <?php
   mysql_free_result($dvdtheque);
?>
}
else
{
 ?>
Tri non autorisé !!!
<?
}
?>
</body>
   </html>
la doc pour in_array() et pour l'opérateur ternaire
n'oublis pas d'utiliser les balises [ php] pour une coloration du code (tu peux même éditer ton post) :wink:

Posté : 08 mars 2006, 12:54
par zeus
modération : le_luke, dans un soucis de clarté et de lisibilité, je te demanderais de bien penser à mettre les balises
 ou [code] autour du code que tu postes.

Je l'ai modifié pour toi dans ton message mais pense-y la prochaine fois ;)

Merci d'avance[/color][/b]

Posté : 08 mars 2006, 13:05
par le_luke
OK, désolé :oops: je note pour la prochaine fois, merci