MySQL SELECT vyhľadavanie

Programovacie jazyky, rady, poradňa...
hakan20
Amateur
Amateur
Príspevky: 11
Registrovaný: 04 máj 2005, 12:14

MySQL SELECT vyhľadavanie

Príspevok od používateľa hakan20 »

Ahojte..
Mam tak otazku. Mam jednu len jednu tabulku a potreboval by som urobit SELECT, ale to tak, ze ked zadam do formulara hodnoty (nemusia byt vsetky-teda niektore polia mozu zostat aj prazdne), tak my to vypise zoznam na zaklade tych kriterii.
Priklad:
mam tabulku Auta:
obsahuje stlpce: druh_auta, typ_auta, palivo, cena

A potrebudem, ked do formulara zadam napr. Druh_auta a palivo, aby mi vyhladalo len konkretny typ s konkretnym palivom. Dufam sa chapeme.. :) Vdaka
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa audiotrack »

všetky tie hodnoty môžeš dať do jedného query, ak aj nebude vyplnená a dáš medzi ne logickú spojku or tak ti to nájde to čo chceš, teda:

select * from auta where druh_auta = $_POST[druh_auta] or typ_auta = $_POST[typ_auta] or palivo = $_POST[palivo] or cena = $_POST[cena]

(tento príklad je len ukážka, nestačí to capnúť do php lebo ti nebudú sedieť apostrofy a úvodzovky ale ak vieš základy tak ako návod ti to poslúži)
hakan20
Amateur
Amateur
Príspevky: 11
Registrovaný: 04 máj 2005, 12:14

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa hakan20 »

Hmmm... No teraz to mam asi takto a ked zadam hladat napr. FIAT a zaroven diesel, tak mi to vypise vsetky Fiaty a zaroven vsetky diesle. Takze to vyzera asi takto:

Id Druh auta Typ auta Palivo Cena
1 ALFA 156 diesel 3700
2 HONDA Acord diesel 400
5 FIAT Uno diesel 120
20 FIAT Punto benzín 3500

Kód: Vybrať všetko

$typ= $_POST['typ'];
$typ_auta= $_POST['typ_auta'];
$palivo= $_POST['palivo'];
$cena_od= $_POST['cena_od'];
$cena_do= $_POST['cena_do'];

//if ($typ=="0") { echo "Zadajte druh auta!!!";}

//else  {

$result = mysql_query("SELECT * FROM skuska WHERE Typ='".$typ."' OR Typ_auta='".$typ_auta."' OR Palivo='".$palivo."' OR (Cena BETWEEN '".$cena_od ."' AND '".$cena_do."')");
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa c-ice »

DAJ tam AND namiesto OR a ked bude parameter prazdny nahradis ho percentom
hakan20
Amateur
Amateur
Príspevky: 11
Registrovaný: 04 máj 2005, 12:14

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa hakan20 »

c-ice napísal:DAJ tam AND namiesto OR a ked bude parameter prazdny nahradis ho percentom
ako a kde ho mam nahradit percentom?
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa c-ice »

Kód: Vybrať všetko

$typ= $_POST['typ'];
$typ_auta= $_POST['typ_auta'];
$palivo= $_POST['palivo'];
$cena_od= $_POST['cena_od'];
$cena_do= $_POST['cena_do'];
if($palivo == "")
  $palivo = "%";
if($typ_auta == "")
  $typ_auta = "%";
if($cena_od == "")
  $cena_od= 0;
if($cena_do == "")
  $cena_do= 99999999;

//if ($typ=="0") { echo "Zadajte druh auta!!!";}

//else  {

$result = mysql_query("SELECT * FROM skuska WHERE Typ='".$typ."' AND Typ_auta='".$typ_auta."' AND Palivo='".$palivo."' AND (Cena BETWEEN '".$cena_od ."' AND '".$cena_do."')");
alebo mozes postupovat tak ze select budes dynamicky skladat do premennej ... zaklad ostava a podla zadanych poli bude pridavat kusky stringu ku premmennej ...

Kód: Vybrať všetko

$sql = "SELECT * FROM skuska WHERE Typ='".$typ."' "
if($typ_auta != "")
  $sql = $sql."AND Typ_auta='".$typ_auta."' "
//....... a tak dalej ...
hakan20
Amateur
Amateur
Príspevky: 11
Registrovaný: 04 máj 2005, 12:14

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa hakan20 »

c-ice napísal:

Kód: Vybrať všetko

$typ= $_POST['typ'];
$typ_auta= $_POST['typ_auta'];
$palivo= $_POST['palivo'];
$cena_od= $_POST['cena_od'];
$cena_do= $_POST['cena_do'];
if($palivo == "")
  $palivo = "%";
if($typ_auta == "")
  $typ_auta = "%";
if($cena_od == "")
  $cena_od= 0;
if($cena_do == "")
  $cena_do= 99999999;

//if ($typ=="0") { echo "Zadajte druh auta!!!";}

//else  {

$result = mysql_query("SELECT * FROM skuska WHERE Typ='".$typ."' AND Typ_auta='".$typ_auta."' AND Palivo='".$palivo."' AND (Cena BETWEEN '".$cena_od ."' AND '".$cena_do."')");
alebo mozes postupovat tak ze select budes dynamicky skladat do premennej ... zaklad ostava a podla zadanych poli bude pridavat kusky stringu ku premmennej ...

Kód: Vybrať všetko

$sql = "SELECT * FROM skuska WHERE Typ='".$typ."' "
if($typ_auta != "")
  $sql = $sql."AND Typ_auta='".$typ_auta."' "
//....... a tak dalej ...

No nejak mi to nefunguje... :( Co ma robit to percento? Lebo teraz ked zadam len jeden udaj, tak my vypise prazdnu tabulku..
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa c-ice »

ja PHP neovladam ... percento je nieco ako * ... znamena ze namiesto % moze ist cokolvek ... takze ked das ze "diesel" a vsetko ostatne nahradis % tak ti to ma vyplut iba vsetky diesle ... samozrejme nemozes % nahradzovat cisla asi (stlpce ktore su ciselneho typu) ... a mozno treba namiesto = pouzit LIKE

tak pouzi ten druhy sposob skladat si select dynamicky na zaklade zadanych parametrov ...
hakan20
Amateur
Amateur
Príspevky: 11
Registrovaný: 04 máj 2005, 12:14

Re: MySQL SELECT vyhľadavanie

Príspevok od používateľa hakan20 »

c-ice napísal:ja PHP neovladam ... percento je nieco ako * ... znamena ze namiesto % moze ist cokolvek ... takze ked das ze "diesel" a vsetko ostatne nahradis % tak ti to ma vyplut iba vsetky diesle ... samozrejme nemozes % nahradzovat cisla asi (stlpce ktore su ciselneho typu) ... a mozno treba namiesto = pouzit LIKE

tak pouzi ten druhy sposob skladat si select dynamicky na zaklade zadanych parametrov ...

Kód: Vybrať všetko

$sql = "SELECT * FROM skuska WHERE Typ='".$typ."' "
if($typ_auta != "")
  $sql = $sql."AND Typ_auta='".$typ_auta."' "
//....... a tak dalej ...
a nemohol by si k tomuto napisat trochu viac, nech som v obraze? :)
Napísať odpoveď