как задать два запроса в бд к одной таблице
<?
if($_GET['show'])
{
$query = "SELECT * from products ORDER BY id DESC LIMIT ".$_GET['show'];
}
if($_GET['sortby'] === "name")
{
$query = "SELECT * from products ORDER BY product_name";
}
else if($_GET['sortby'] === "price")
{
$query = "SELECT * from products ORDER BY price";
}
else
{
$query = "SELECT * from products ORDER BY product_name";
}
$res = mysqli_query($connect, $query);
while($row = mysqli_fetch_array($res))
{
echo '<a target="_blank" href="/pages/product-details.php?id='.$row['id'].'" class="product-cart">
<div class="col">
<div class="product-image"><img src="/images/'.$row['main_image_url'].'" alt=""></div>
<div class="product-price-wrap">
<div class="col">
<div class="product-name">'.$row['product_name'].'</div>
<div class="product-price">$ '.$row['price'].'</div>
</div>
</div>
</div>
</a>';
}
?>
имею такой код, и как мне сделать так чтобы $query объединились, если сошлись условия
Ответы (3 шт):
Автор решения: Aziz Umarov
→ Ссылка
Вообще-то 2 запроса, хоть 100, к одной таблице. У вас php выполняете по отдельности каждый и получаете результат. А у вас я так понимаю нужно лимитировать результат дополнительно к сортировке
if($_GET['sortby'] === "name")
{
$query = "SELECT * from products ORDER BY product_name";
}
else if($_GET['sortby'] === "price")
{
$query = "SELECT * from products ORDER BY price";
}
else
{
$query = "SELECT * from products ORDER BY product_name";
}
if($_GET['show'])
{
$query = $query + " LIMIT ".$_GET['show'];
}
Автор решения: vehsika
→ Ссылка
<?
$order_by = $_GET['sortby'] == "price" ? "price" : "product_name";
$query = "SELECT * from products ORDER BY ".$order_by." DESC";
!$_GET['show'] ?: $query .= " LIMIT ".$_GET['show'];
$res = mysqli_query($connect, $query);
while($row = mysqli_fetch_array($res))
{
echo '<a target="_blank" href="/pages/product-details.php?id='.$row['id'].'" class="product-cart">
<div class="col">
<div class="product-image"><img src="/images/'.$row['main_image_url'].'" alt=""></div>
<div class="product-price-wrap">
<div class="col">
<div class="product-name">'.$row['product_name'].'</div>
<div class="product-price">$ '.$row['price'].'</div>
</div>
</div>
</div>
</a>';
}
?>
Если я правильно понял вопрос, то должно работать.
Автор решения: Istinnavvine
→ Ссылка
$arr = [];
$main_query = "SELECT * from products";
if($_GET['sortby'] === "name")
{
$query = "product_name";
array_push($arr, $query);
}
else if($_GET['sortby'] === "price")
{
$query = "price";
array_push($arr, $query);
}
else
{
$query = "product_name";
array_push($arr, $query);
}
if($_GET['show'])
{
$query = "id LIMIT ".$_GET['show'];
array_push($arr, $query);
}
$main_query .= " ORDER BY ";
for($i = 0; $i < count($arr);$i++)
{
if($i == count($arr)-1)
{
$main_query .= $arr[$i];
}
else
{
$main_query .= $arr[$i].", ";
}
}