как задать два запроса в бд к одной таблице

<?
                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].", ";
                    }
                    
                }
→ Ссылка