Je suis nouveau dans le développement PHP, Smarty avec MySQL. Je voudrais une opinion d'expert sur ce qui suit, ou tout bon conseil fera l'affaire.Filtrer les résultats en utilisant php ou javascript
Je fait une index.php qui se connecte à la base de données (MySQL) aussi Smarty, lit mes données par requête et les affiche de mon dossier index.tpl. Idem pour mes produits, product.php se connecte à la base de données, fait une requête, et affiche mes produits sur la page product.tpl.
Pour mon index.php Je voudrais ajouter un filtre affichant le produit par prix de élevé à faible ou de faible à élevé.
Que proposez-vous:
me conseillez-vous utiliser Javascript pour le filtre ou tout simplement l'interroger la base de données pour chaque fois que cette valeur de sélection est sélectionnée?
Ou comment serait le meilleur moyen de le faire? Tous les conseils sur ce fera d'avance merci.
Ma base de données pour maintenant ont seulement 3 produits, je suis juste en train de tester.
.php
<?php
$new = ['product_id','product_category','product_price','product_quantity','product_about','product_color'];
//Database connection
$db = mysqli_connect('xxx','xxx','xxx','xxx') or die('Error connecting to MySQL server.');
//access Smarty template engine
require_once('Smarty-3.1.30/libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = 'views';
$smarty->compile_dir = 'tmp';
//query product page
$query = "SELECT * FROM cs_shop";
if ($productPrice > 0) {
$query .= " WHERE `product_price` = ".$productPrice;
}
mysqli_query($db, $query) or die('Error querying database.');
$result = mysqli_query($db, $query);
if (!empty($_GET['sort']) && $_GET['sort'] == 'PriceAsc') {
$result =" ORDER BY `product_price` ASC";
}
if (!empty($_GET['sort']) && $_GET['sort'] == 'PriceDesc') {
$result =" ORDER BY `product_price` DESC";
}
//query an array of products
$rows = array();
//loop start
while ($row = mysqli_fetch_array($result)) {
$rows[] = array(
'product_id' => $row['product_id'],
'product_category' => $row['product_category'],
'product_price' => $row['product_price'],
'product_quantity' => $row['product_quantity'],
'product_about' => $row['product_about'],
'product_color' => $row['product_color']
);
}
//db collect data
$smarty->assign('row', $rows);
//template
$smarty->display('index.tpl');
mysqli_close($db);
?>
tpl (ce qui est la boucle pour afficher-liste des produits)
<form method="get" name="sort">
<select name="sort" id="sort">
<option value=''>--Select--</option>
<option value='PriceAsc'>high to low</option>
<option value='PriceDesc'>low to high</option>
</select>
<input type="submit" value="Sort"/>
</form>
<div class="test divider">
{section name=prod loop=$row}
<div class="colm3">
<div class="col3 r1">
<div class="products-container">
<h5>{$row[prod].product_name}</h5>
<a class="producy_img_link" href="#" >
<img src="{$row[prod].prod_img}" style="width:auto; height:255px;">
</a>
</div>
</div>
<a href="#">
<div class="block-right">
<h6>{$row[prod].product_vintage}</h6>
<h5>{$row[prod].product_veriatel}</h5>
<div>
<span class="price">R {$row[prod].product_price}</span>
</div>
</div>
</a>
</div>
{/section}
</div>
Maintenant, chaque fois que je clique sur haut en bas, je veux que les produits à filtrer par prix de haut en bas, je pense qu'il y aurait un moyen facile d'utiliser une requête, mais je suis coincé avec cela.
vous pouvez le faire en php pour chaque (filtre haut/bas) événement une requête usnig commande par prix DESC/ASC – DzNiT0
Dans pensent que l'utilisation de la db avec requête appropriée ..la construction d'une fonction php pour la recherche sur db est la meilleure solution. – scaisEdge
la meilleure solution serait d'utiliser 'AJAX' ou d'utiliser cette [DataTables] (https://datatables.net/) bibliothèque jQuery – julekgwa