PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 12-02-2015 22:59:53

neo88
Membre
Inscription : 12-02-2015
Messages : 3

Trie par ordre croissant

Bonjour tout le monde, je débute en php et j'aurai une petite question :

J'ai un tableau de produits en php : produits.php qui vient d'une table dans PHPmyadmin.

Pour l'instant ça va le tableau s'affiche bien mais j'aimerai faire des "tris" dans ce tableau comme par exemple tiré par prix croissant comme sur les sites de ventes.

J'ai cherché et je n'est pas trouvé d'information.

Merci de votre aide.

Pour info voila mon code produits.php

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Liste des produits</title>
</head>

<body>
<?php
echo '<h2>Liste des produits présentées en tableau<br /><br /></h2>';
$base = mysqli_connect ('localhost', 'root', '')
       or die("Impossible de se connecter : " . mysqli_error());
mysqli_select_db ($base,'p&v bike') ;
$sql = "SELECT Designationpr, Prixpr, Idpr FROM produits";
$req = mysqli_query($base,$sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysqli_error($base));

// Affichage de l'entête du tableau
echo "<table  border=\"0\" cellpadding=\"1\">";
echo "<tr>";
for ($champ=0; $champ < mysqli_field_count($base); $champ++)
   {
      $nom_du_champ =  mysqli_fetch_field_direct($req, $champ);
      echo "<td width=\"150\" align=\"center\" bgcolor=\"#999999\">$nom_du_champ->name</td>";
   }
echo "</tr>";


// affichage des voitures
while ($data = mysqli_fetch_array($req))
    {
        echo "<tr>"; // nouvelle ligne du tableau
        echo "<td align=\"center\">".utf8_encode($data['Designationpr'])."</td>";
        echo "<td align=\"center\">".utf8_encode($data['Prixpr'])."</td>";
        echo "<td align=\"center\">".utf8_encode($data['Idpr'])."</td>";
       
        echo "</tr>"; // fin de la ligne du tableau
    }
   
// terminer la table
echo "</table>";


// Libèration de la mémoire utilisée pour cette requête dans sql
//$data de PHP lui est toujours accessible !
mysqli_free_result ($req);

// Fermeture de sql
mysqli_close ($base);
?>
</body>
</html>

Hors ligne

#2 13-02-2015 00:10:40

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Trie par ordre croissant

Bonjour,
$sql = "SELECT Designationpr, Prixpr, Idpr FROM produits";
devient
$sql = "SELECT Designationpr, Prixpr, Idpr FROM produits order by Prixpr";

a++

Hors ligne

#3 15-02-2015 23:18:53

neo88
Membre
Inscription : 12-02-2015
Messages : 3

Re : Trie par ordre croissant

Merci pour ta réponse,

Enfaite j'aimerais que l'utilisateur puisse choisir lui même le trie et changer à sa guise, j'ai trouvé comme code celui ci mais il me met des erreurs pour les lignes en gras pouvez-vous m'aider svp :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php


// Connexion à la base de donnée
$base = mysqli_connect ('localhost', 'root', '')
       or die("Impossible de se connecter : " . mysqli_error());
mysqli_select_db ($base,'p&v bike') ;


// Le nom de notre table
$tablename = 'produits';


// Tri sur colonne
$tri_autorises = array('Idpr','Designationpr','Prixpr');

$order_by = in_array(isset($_GET['order']),$tri_autorises) ? $_GET['order'] : 'Idpr';

// Sens du tri
$order_dir = isset($_GET['inverse']) ? 'DESC' : 'ASC';


// Préparation de la requête

$sqli = "
    SELECT Designationpr, Prixpr, Idpr
    FROM produits
    ORDER BY {$order_by} {$order_dir}
";
$result = mysqli_query($sqli);


// Notre fonction qui affiche les liens
function sort_link($text, $order=false)
{
    global $order_by, $order_dir;

    if(!$order)
        $order = $text;

    $link = '<a href="?order=' . $order;
    if($order_by==$order && $order_dir=='ASC')
        $link .= '&inverse=true';
    $link .= '"';
    if($order_by==$order && $order_dir=='ASC')
        $link .= ' class="order_asc"';
    elseif($order_by==$order && $order_dir=='DESC')
        $link .= ' class="order_desc"';
    $link .= '>' . $text . '</a>';

    return $link;
}


// Affichage
?>
<style type="text/css">
a.order_asc,
a.order_desc:hover {
    padding-right:15px;
    background:transparent url(s_asc.png) right no-repeat;
}
a.order_desc,
a.order_asc:hover {
    padding-right:15px;
    background:transparent url(s_desc.png) right no-repeat;
}
</style>

<table>
    <tr>
        <th><?php echo sort_link('Idpr', 'idpr') ?></th>
        <th><?php echo sort_link('Designationpr', 'designationpr') ?></th>
        <th><?php echo sort_link('Prixpr', 'prixpr') ?></th>
       
    </tr>
<?php while( $row=mysqli_fetch_assoc($result) ) : ?>
    <tr>
        <td><?php echo $row['Idpr'] ?></td>
        <td><?php echo $row['Designationpr'] ?></td>
        <td><?php echo $row['Prixpr'] ?></td>
       
    </tr>
<?php endwhile ?>
</table>

Hors ligne

Pied de page des forums