Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zapytanie my sql z wieloma warunami z formularza
-Matio-
post
Post #1





Goście







Witam!

Mam bazę danych, i użytkownik ma odpytywać ją wypełniając formularz do którego można wpisać 9 różnych wartości, które w skrypcie php przechowują zmienne. Moje pytanie dotyczy tego w jaki inteligentny sposób napisać ten skrypt, żeby sam dodawał warunek do zapytania sql jeśli zmienna przechowuje wartość (tzn. jeśli użytkownik wypełnił dane pole w formularzu - bo oczywiście nie musi wypełniac wszystkich)?

Poniższy fragment kodu dotyczy sytuacji (oczywiście "na sztywno"), kiedy wypełnione sa wszystkie pola w formularzu.

  1. <?php
  2. $query="SELECT GRU_NAZWA, ALB_TYTUL, ALB_ROK, WYT_NAZWA
  3.  FROM TBL_ARTYSTA, TBL_ARTYSTA_W_GRUPIE, TBL_GRUPA, TBL_STYL_GRUPY, TBL_STYL, TB
    L_ALBUM, TBL_POCHODZENIE, TBL_WYTWORNIA, TBL_ALBUM_WYTWORNIA
  4.  WHERE TBL_ARTYSTA.ART_ID = TBL_ARTYSTA_W_GRUPIE.TBL_ARTYSTA_ART_ID
  5.  AND TBL_ARTYSTA_W_GRUPIE.TBL_GRUPA_GRU_ID = TBL_GRUPA.GRU_ID
  6.  AND TBL_GRUPA.GRU_ID = TBL_STYL_GRUPY.TBL_GRUPA_GRU_ID
  7.  AND TBL_STYL_GRUPY.TBL_STYL_STY_ID = TBL_STYL.STY_ID
  8.  AND TBL_GRUPA.GRU_ID = TBL_ALBUM.TBL_GRUPA_GRU_ID
  9.  AND TBL_GRUPA.TBL_POCHODZENIE_POC_ID = TBL_POCHODZENIE.POC_ID
  10.  AND TBL_ALBUM.ALB_ID = TBL_ALBUM_WYTWORNIA.TBL_ALBUM_ALB_ID
  11.  AND TBL_ALBUM_WYTWORNIA.TBL_WYTWORNIA_WYT_ID = TBL_WYTWORNIA.WYT_ID 
  12.  AND GRU_NAZWA='" . $SESSION['grupa'] . "' 
  13.  AND ART_IMIE='" . $SESSION['imie'] . "'
  14.  AND ART_NAZWISKO='" . $SESSION['nazwisko'] . "'
  15.  AND ART_PSEUDONIM='" . $SESSION['pseudo'] . "'
  16.  AND ALB_TYTUL='" . $SESSION['tytul'] . "'
  17.  AND ALB_ROK='" . $SESSION['rok'] . "'  
  18.  AND WYT_NAZWA='" . $SESSION['wytwornia'] . "'
  19.  AND STY_NAZWA='" . $SESSION['styl'] . "'
  20.  AND POC_KRAJ='" . $SESSION['pochodzenie'] . "'
  21. ";
  22. $result=mysql_query($query);
  23. while ($row = mysql_fetch_array($result))
  24. {
  25. extract($row);
  26. {
  27. echo $GRU_NAZWA;
  28. echo " - ";
  29. echo $ALB_TYTUL;
  30. echo " - ";
  31. echo $ALB_ROK;
  32. echo " - ";
  33. echo $WYT_NAZWA;
  34. echo "<br>";
  35. }
  36.  
  37. }
  38. ?>


Oczywiście nie prosze o napisanie całego kodu, a jedynie pokazanie metody, przykładu...

bardzo prosze o pomoc...

pozdrawiam...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
1010
post
Post #2





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


nie wiem czy dobrze zrozumiałem

  1. <?php
  2. if(!empty($SESSION['nazwisko']))
  3. {
  4.  $where .= "AND ART_NAZWISKO='" . $SESSION['nazwisko'] . "'";
  5. }
  6. ?>


i potem w zapytaniu tylko
Kod
... WHERE ".$where." ...

i po kłopocie...

ps: nie powinno być przypadkiem $_SESSION zamiast $SESSION


--------------------
Go to the top of the page
+Quote Post
-matio-
post
Post #3





Goście







ale jak wtedy budować główne zapytanie dokładnie?questionmark.gif

Jeżeli chodzi o $SESSION/$_SESSION, to działa mi tak jak podałem, ale być może nie powinno się tak pisać (jestem początkujący w php)
Go to the top of the page
+Quote Post
-matio-
post
Post #4





Goście







W jaki sposób doklejać do podstawowego zapytania kolejne warunki (chodzi mi dokładnie o składnie), bo próbowałem już czegoś podobnego, ale pojawiał się błąd, więc uznałem, że nie można...

Czyli coś na zasadzie:

$result=mysql_query($query. $where);

questionmark.gif
Go to the top of the page
+Quote Post
-matio-
post
Post #5





Goście







Oczywiście zakładając, że to podstawowe zapytanie będzie pozbawione tych warunków już:

  1. <?php
  2. $query="SELECT GRU_NAZWA, ALB_TYTUL, ALB_ROK, WYT_NAZWA
  3.  FROM TBL_ARTYSTA, TBL_ARTYSTA_W_GRUPIE, TBL_GRUPA, TBL_STYL_GRUPY, TBL_STYL, TB
    L_ALBUM, TBL_POCHODZENIE, TBL_WYTWORNIA, TBL_ALBUM_WYTWORNIA
  4.  WHERE TBL_ARTYSTA.ART_ID = TBL_ARTYSTA_W_GRUPIE.TBL_ARTYSTA_ART_ID
  5.  AND TBL_ARTYSTA_W_GRUPIE.TBL_GRUPA_GRU_ID = TBL_GRUPA.GRU_ID
  6.  AND TBL_GRUPA.GRU_ID = TBL_STYL_GRUPY.TBL_GRUPA_GRU_ID
  7.  AND TBL_STYL_GRUPY.TBL_STYL_STY_ID = TBL_STYL.STY_ID
  8.  AND TBL_GRUPA.GRU_ID = TBL_ALBUM.TBL_GRUPA_GRU_ID
  9.  AND TBL_GRUPA.TBL_POCHODZENIE_POC_ID = TBL_POCHODZENIE.POC_ID
  10.  AND TBL_ALBUM.ALB_ID = TBL_ALBUM_WYTWORNIA.TBL_ALBUM_ALB_ID
  11.  AND TBL_ALBUM_WYTWORNIA.TBL_WYTWORNIA_WYT_ID = TBL_WYTWORNIA.WYT_ID" ;
  12. ?>
Go to the top of the page
+Quote Post
1010
post
Post #6





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


robisz sobie te warunki co ci napisalem...


i zawsze dajesz $where .= "";

to dokleja do zmiennej kolejne warunki


--------------------
Go to the top of the page
+Quote Post
webdice
post
Post #7


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(1010 @ 4.01.2008, 16:22:07 ) *
nie wiem czy dobrze zrozumiałem

  1. <?php
  2. if(!empty($SESSION['nazwisko']))
  3. {
  4.  $where .= "AND ART_NAZWISKO='" . $SESSION['nazwisko'] . "'";
  5. }
  6. ?>


i potem w zapytaniu tylko
Kod
... WHERE ".$where." ...

i po kłopocie...

ps: nie powinno być przypadkiem $_SESSION zamiast $SESSION


Wyjdzie:

  1. WHERE AND...


Ten post edytował webdicepl 4.01.2008, 16:57:14
Go to the top of the page
+Quote Post
-matio-
post
Post #8





Goście







Wielkie dzięki, zrozumiałem, działa, pozdrawiam i życzę wszystkiego dobrego w Nowym Roku
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 12:38