Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sposob na zapytanie SQL zalezne od wielu $, formularz i filtrowanie bazy
Mr Groch
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.05.2005
Skąd: Knurów

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


Witam

Czy da sie w deklaracji zmiennej umiescic warunek?
np takie cos:

$cos = if($bla='bla'){echo('bla to bla');};

Wiem ze teraz zapis ten jest bez sensu, ale czy da sie
takie cos poprawnie zapisac?

Jezlei nie to prosilbym o pomoc w jaki sposob rozwiazac problem:

Zapytanie do sql:

select * from tabela /*jezeli jakas zmienna ma okreslona wartosc to: */ where cos = '$zmienna' /*jezlei inna zmienna ma okreslona wartosc to: */ and cos2 = '$zmienna2' /*i tak dalej*/;

Wyjasnienie:

Chcialbym by zapytanie do MySQL bylo rozne w zaleznosci od wartosci
paru zmiennych. Wiem, ze mozna to zrobic w paru(nastu) warunkach if i
tyle samo roznych wersji zapytan, ale tym sposobem kod rozroslby sie
naprawde za bardzo, gdyz tych zmiennych od ktorych zapytanie bedzie zalezne
jest bardzo duzo..

Z gory dziekuje...

Ten post edytował Mr Groch 24.05.2005, 16:58:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Mr Groch
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.05.2005
Skąd: Knurów

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


Dzieki ale jest maly problem:

  1. SELECT *
  2. FROM $tabela WHERE IF($_typ!='','typ='$_typ'','')


MySQL sie pluje, ze niby za duzo apostrof w wyrazeniu ale gdy zostawie
'typ=$_typ' to otatecznie zapytanie bedzie wygladalo WHERE typ = CB i tutaj
bedzie sie plul, ze nie ma takiej kolumny CB (musi byc w apostrofach)...

A tak wogole to sytuacja wyglada tak:

Mam pobrane z tabeli dane i sa ladnie wyswietlone na stronce.
Jednakze na stronce znajduje sie formularz z 3 polami <select> i chce by dane
z tabeli byly odpowiednio "filtrowane" w zaleznosci od tego co zostalo
wybrane w polach <select>

Tymczasowo zrobilem to metoda duzej ilosci sprawdzan co zostalo wybrane
z pol <select> i w zaleznosci od tego, przygotowalem mnostwo roznych wersji zapytan
SQL - dziala ale skrypt obslugujacy ten formularz zajmuje naprawde duzo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Tak to wyglada teraz:

  1. <?php
  2.  $_typ = $_POST[styp];
  3.  $_system = $_POST[ssystem];
  4.  $_mapa = $_POST[smapa];
  5.  
  6.  
  7.  if (($_typ=='') && ($_system=='') && ($_mapa=='')) {
  8. $query = &#092;"select * from \".$this->prefix.\"clanwars\";
  9.  
  10. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  11. } // end if
  12.  
  13.  if (!($_typ=='') && ($_system=='') && ($_mapa=='')) {
  14. $query = &#092;"select * from \".$this->prefix.\"clanwars where (typ = '$_typ')\";
  15.  
  16. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  17.  } // end if
  18.  
  19.  if (!($_typ=='') && !($_system=='') && ($_mapa=='')) {
  20. $query = &#092;"select * from \".$this->prefix.\"clanwars where (typ = '$_typ' and system = '$_system')\";
  21.  
  22. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  23.  } // end if
  24.  
  25.  if (!($_typ=='') && !($_system=='') && !($_mapa=='')) {
  26. $query = &#092;"select * from \".$this->prefix.\"clanwars where (typ = '$_typ' and system = '$_system' and mapa = '$_mapa')\";
  27.  
  28. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  29.  } // end if
  30.  
  31.  if (!($_typ=='') && ($_system=='') && !($_mapa=='')) {
  32. $query = &#092;"select * from \".$this->prefix.\"clanwars where (typ = '$_typ' and mapa = '$_mapa')\";
  33.  
  34. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  35.  } // end if
  36.  
  37.  if (($_typ=='') && !($_system=='') && ($_mapa=='')) {
  38. $query = &#092;"select * from \".$this->prefix.\"clanwars where (system = '$_system')\";
  39.  
  40. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  41.  } // end if
  42.  
  43.  if (($_typ=='') && !($_system=='') && !($_mapa=='')) {
  44. $query = &#092;"select * from \".$this->prefix.\"clanwars where (system = '$_system' and mapa = '$_mapa')\";
  45.  
  46. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  47.  } // end if
  48.  
  49.  if (($_typ=='') && ($_system=='') && !($_mapa=='')) {
  50. $query = &#092;"select * from \".$this->prefix.\"clanwars where (mapa = '$_mapa')\";
  51.  
  52. $query .= &#092;" order by time desc limit $start,{$this->show}\";
  53.  } // end if
  54.  
  55. ?>


http://www.hordasquad.com/web/clanwars.php

PS. Co do warunku w zmiennej - nie wiem czemu ale korszystajac z podanego
przykladu zawsze zmienna otrzymywala wartosc taka jak przy warunku=true

Ten post edytował Mr Groch 24.05.2005, 01:29:25
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: 12.10.2025 - 16:21