Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Inne rozwiązanie tworzenia zapytania
Forum PHP.pl > Forum > Przedszkole
Winters4TW
Cześć,

mam formularz, w którym podaje dane, a skrypt ma utworzyć zapytanie do bazy. Rozwiązałem to w nastepujący sposób:

  1. $this->_zapytania = array("nazwa"=> addslashes(trim($_POST['nazwa'])), "kwotaod" => floatval(($_POST['kwotaod'])), "kwotado" => floatval(($_POST['kwotado'])), "tytul"=>addslashes(trim($_POST['tytul'])));
  2.  
  3. $sql = "SELECT * FROM platnosci WHERE ";
  4.  
  5. if(!empty($this->_zapytania['nazwa'])) {
  6. $sql = $sql."nazwa LIKE '%".$this->_zapytania['nazwa']."%' ";
  7. }
  8. if(!empty($this->_zapytania['kwotaod']) AND !empty($this->_zapytania['kwotado'])) {
  9. $sql = $sql."AND kwota BETWEEN ".$this->_zapytania['kwotaod']." AND ".$this->_zapytania['kwotado']." ";
  10. }
  11. if(!empty($this->_zapytania['kwotaod']) AND empty($this->_zapytania['kwotado'])) {
  12. $sql = $sql."AND kwota >= ".$this->_zapytania['kwotaod']." ";
  13. }
  14. if(empty($this->_zapytania['kwotaod']) AND !empty($this->_zapytania['kwotado'])) {
  15. $sql = $sql."AND kwota <= ".$this->_zapytania['kwotado']." ";
  16. }
  17. if(!empty($this->_zapytania['tytul'])) {
  18. $sql = $sql."AND tytul LIKE '%".$this->_zapytania['tytul']."%' ";
  19. }


i owszem, działa. Jednak czy jest inne rozwiązanie, bardziej optymalne, bo wydaje mi się że powyższe nie jest do końca dobre biorąc pod uwagę ilość instrukcji.

Pozdrawiam!
Pyton_000
Wydaje mi się jak na kod strukturalny to jest to jak najbardziej dobre rozwiązanie. Tylko musisz pamiętać, że jak nie będziesz miał parametrów to zostanie Ci gołe:
$sql = "SELECT * FROM platnosci WHERE ";
i wywali błąd
Winters4TW
No właśnie dopiero uczę się obiektówki, więc co zastosować aby było bardziej obiektowo niż strukturalnie?

Dzięki za błąd! wink.gif
Teraz zauważyłem że jak nie zostanie podana nazwa to też będzie błąd, więc nie do końca kod jest dobry mimo wszystko.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.