Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Inne rozwiązanie tworzenia zapytania
Winters4TW
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 29.12.2010

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował Pyton_000 10.10.2015, 12:18:28
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 12:36