Как сделать две isset-функции, которые работают вместе в PHP? - PullRequest
0 голосов
/ 23 февраля 2020

Как сделать две if-функции, которые работают вместе в PHP?

В моем коде у меня есть разные кнопки, которые позволяют пользователю сортировать то, как он хочет сортировать строки из базы данных, они нажмите кнопку, и состояние sql изменится следующим образом:

        if (isset($_GET['ASC'])){
            $sql = "SELECT * FROM merke JOIN modell ON merke.idmerke=modell.merke_idmerke JOIN modell_has_personer ON modell.idmodell=modell_has_personer.modell_idmodell JOIN personer ON modell_has_personer.personer_idpersoner=personer.idpersoner ORDER BY merkenavn ASC";}
        else if (isset($_GET['aar'])){$sql = "SELECT * FROM merke JOIN modell ON merke.idmerke=modell.merke_idmerke JOIN modell_has_personer ON modell.idmodell=modell_has_personer.modell_idmodell JOIN personer ON modell_has_personer.personer_idpersoner=personer.idpersoner ORDER BY aar ASC";} 
            else {$sql = "SELECT * FROM merke JOIN modell ON merke.idmerke=modell.merke_idmerke JOIN modell_has_personer ON modell.idmodell=modell_has_personer.modell_idmodell JOIN personer ON modell_has_personer.personer_idpersoner=personer.idpersoner ORDER BY merkenavn DESC";}
        $resultat =  $kobling->query($sql);

Здесь AS C и aar - разные кнопки, на которые пользователь может нажимать, а когда он это делает, sql -statement изменения.

Это работает хорошо, но затем я хотел реализовать опцию для пользователя, чтобы отсортировать строки, которые не начинаются с букв, которые пользователь выбирает, как это:

if (isset($_GET['go'])){ $ja = $_GET["ja"]; 
    $sql = "SELECT * FROM merke JOIN modell ON merke.idmerke=modell.merke_idmerke JOIN modell_has_personer ON modell.idmodell=modell_has_personer.modell_idmodell JOIN personer ON modell_has_personer.personer_idpersoner=personer.idpersoner WHERE merkenavn LIKE '$ja%'";}

Здесь $ ja - это переменная, с которой начинаются строки.

Моя проблема заключается в следующем: как их объединить, чтобы, если пользователь нажимает кнопку для сортировки строк но также хочет отсортировать строки по первой букве (буквы), они оба происходят?

1 Ответ

0 голосов
/ 23 февраля 2020

Сначала создайте WHERE-часть запроса ($whr_sql), а затем добавьте к вашему $sql

if (isset($_GET['go'])){ $ja = $_GET["ja"]; 
    $whr_sql = " WHERE merkenavn LIKE '$ja%' ";
}else{
    $whr_sql = " ";
}

if (isset($_GET['ASC'])){$sql = "SELECT * FROM merke JOIN modell ON merke.idmerke=modell.merke_idmerke JOIN modell_has_personer ON modell.idmodell=modell_has_personer.modell_idmodell JOIN personer ON modell_has_personer.personer_idpersoner=personer.idpersoner".$whr_sql."ORDER BY merkenavn ASC";}
else if (isset($_GET['aar'])){$sql = "SELECT * FROM merke JOIN modell ON merke.idmerke=modell.merke_idmerke JOIN modell_has_personer ON modell.idmodell=modell_has_personer.modell_idmodell JOIN personer ON modell_has_personer.personer_idpersoner=personer.idpersoner".$whr_sql."ORDER BY aar ASC";} 
else {$sql = "SELECT * FROM merke JOIN modell ON merke.idmerke=modell.merke_idmerke JOIN modell_has_personer ON modell.idmodell=modell_has_personer.modell_idmodell JOIN personer ON modell_has_personer.personer_idpersoner=personer.idpersoner".$whr_sql."ORDER BY merkenavn DESC";}

$resultat =  $kobling->query($sql);
...