2015-08-18 21 views
0

Я создал простой фильтр продуктов в php, mysql и jquery. У меня есть база данных с именем «spec_laptop», и я выбираю продукты после столбца с именем «бренд». It looks like here, и когда я проверяю, показывает мне продукты с этим брендом. Я хочу добавить перед каждой опцией флажка количество продуктов, имеющих этот «бренд» в базе данных like this.Фильтр продукта - количество продуктов

Код: PHP:

<?php 
include ('connect.php'); 
if (isset($_POST["toshiba"])) { 
    $arguments[] = "brand LIKE '%Toshiba%'"; 
} 
if (isset($_POST["lenovo"])) { 
    $arguments[] = "brand LIKE '%Lenovo%'"; 
} 
if (isset($_POST["samsung"])) { 
    $arguments[] = "brand LIKE '%Samsung%'"; 
} 
if(!empty($arguments)) { 
    $str = implode(' or ',$arguments); 
    $qry = "SELECT * FROM spec_laptop where " . $str . " ORDER BY id desc"; 
    $row=mysql_query($qry) or die("Unable to select"); 


    while($data = mysql_fetch_array($row)) 
          { 

           echo $data['procesor']." "; 
          } 

} else { 
    echo "nothing"; 
} 
?> 

HTML & JAVASCRIPT:

<html> 
<head> 
<script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<form id="form" method="post" action=""> 
<input type="checkbox" name="toshiba" class="checkbox" <?=(isset($_POST['toshiba'])?' checked':'')?>/>Toshiba<?php ?><br> 
<input type="checkbox" name="lenovo" class="checkbox" <?=(isset($_POST['lenovo'])?' checked':'')?>/> Lenovo<br> 
<input type="checkbox" name="samsung" class="checkbox" <?=(isset($_POST['samsung'])?' checked':'')?>/>Samsung<br> 
</form> 

<script type="text/javascript"> 
    $(function(){ 
    $('.checkbox').on('change',function(){ 
     $('#form').submit(); 
     }); 
    }); 
</script> 

</body> 
</html> 

ответ

0

Чтобы рассчитывать в запросе, измените его с:

$qry = "SELECT * FROM spec_laptop where " . $str . " ORDER BY id desc"; 

к:

$qry = "SELECT *, count(id) as 'count' FROM spec_laptop where " . $str . " GROUP BY brand ORDER BY id desc"; 

Ваш HTML-код выглядит так, как будто он находится в php-файле, так как вы также используете короткий код PHP. Поэтому я бы рекомендовал использовать php для отображения параметров с помощью запроса и цикла select. Аналогичный запрос к вышеуказанному может быть использован:

<?php 
$qry = "SELECT brand as 'brandname', count(id) as 'count' FROM spec_laptop where " . $str . " GROUP BY brand ORDER BY id desc"; 
$row=mysql_query($qry) or die("Unable to select"); 
?> 
<form id="form" method="post" action=""> 
<?php 
while($data = mysql_fetch_array($row)) 
{ 
?> 
    <input type="checkbox" name="<?php echo $data['brandname'];?>" class="checkbox" <?php (isset($_POST['toshiba'])?' checked':'') ?>/><?php echo $data['brandname'] . ' [' . $data['count'] . ']';?><br> 
<?php 
} 
?>