Trie par prix croissant
Résolu/Fermé
neo88100
Messages postés
2
Date d'inscription
jeudi 12 février 2015
Statut
Membre
Dernière intervention
15 février 2015
-
12 févr. 2015 à 22:56
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 17 févr. 2015 à 00:12
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 17 févr. 2015 à 00:12
A voir également:
- Trie par prix croissant
- Prix electricité - Accueil - Maison
- Excel trier par ordre croissant chiffre - Guide
- Gta 6 prix - Accueil - Jeu vidéo
- Prix licence windows 10 - Accueil - Installation
- Il est trié sur la plateforme de départ ✓ - Forum Consommation & Internet
3 réponses
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
12 févr. 2015 à 23:07
12 févr. 2015 à 23:07
'lut, comme tes résultats proviennent d'une base SQL, on va lui faire faire le tri:
Et là, magie, tes résultats seront récupérés triés dans l'ordre.
$sql = "SELECT Designationpr, Prixpr, Idpr FROM produits ORDER BY Prixpr ASC";
ORDER BY Prixpr ASCveut dire "TRIER PAR Prixpr CROISSANT".
Et là, magie, tes résultats seront récupérés triés dans l'ordre.
net_papy
Messages postés
1026
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
19 novembre 2016
103
12 févr. 2015 à 23:10
12 févr. 2015 à 23:10
Je ne connais pas le php mais la commande SQL Select peut être suivie
par un ORDER BY Prixpr Asc ou Desc devrait te permettre de mettre les prix en croissant ou décroissant
par un ORDER BY Prixpr Asc ou Desc devrait te permettre de mettre les prix en croissant ou décroissant
neo88100
Messages postés
2
Date d'inscription
jeudi 12 février 2015
Statut
Membre
Dernière intervention
15 février 2015
Modifié par neo88100 le 15/02/2015 à 23:21
Modifié par neo88100 le 15/02/2015 à 23:21
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>
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>
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
Modifié par gravgun le 16/02/2015 à 00:22
Modifié par gravgun le 16/02/2015 à 00:22
Ta requête SQL n'est pas bonne: PHP fait la substitution des variables lors de l'attribution de
Comme ceci c'est mieux:
$sqlicomme prévu, mais pour une raison qui m'échappe tu les as entourées de crochets qui cassent la syntaxe et donc la requête. Et comme elle est invalide,
mysqli_queryéchoue et renvoie
false, valeur que prend
$resultqui est évidemment incorrecte pour
mysqli_fetch_assoc().
Comme ceci c'est mieux:
$sqli = " SELECT Designationpr, Prixpr, Idpr FROM produits ORDER BY $order_by $order_dir";Et surtout, tu n'as pas passé le contexte
$baseen paramètre à
mysqli_query!
Merci de ta réponse, j'ai changé la syntaxe mais j'ai toujours 2 erreures,
) Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\P&V bike\essai.php on line 32
qui correspond à : "$result = mysqli_query($sql);"
et
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\wamp\www\P&V bike\essai.php on line 79
qui correspond à : "<?php while( $row=mysqli_fetch_assoc($result) ) : ?>"
Je ne comprend pas quand tu dis :"tu n'as pas passé le contexte $bas en paramètre
mysqli_query"
Alexandre
) Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\P&V bike\essai.php on line 32
qui correspond à : "$result = mysqli_query($sql);"
et
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in C:\wamp\www\P&V bike\essai.php on line 79
qui correspond à : "<?php while( $row=mysqli_fetch_assoc($result) ) : ?>"
Je ne comprend pas quand tu dis :"tu n'as pas passé le contexte $bas en paramètre
mysqli_query"
Alexandre
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
>
neo88
Modifié par gravgun le 16/02/2015 à 14:28
Modifié par gravgun le 16/02/2015 à 14:28
j'ai changé la syntaxeNon, tu n'as rien changé. Relis mon commentaire et change comme prévu: ma dernière phrase signifie que tu n'as pas précisé
$baseen 1er paramètre de
mysqli_query.