Skocz do zawartości

[php/MysQL] Wyszukiwanie wyników w bazie.


kondi

Rekomendowane odpowiedzi

Witam.

Mam taki skrypt wyszukujący, który dostałem i który testuje i problem polega na tym, ze jesli na stronie WWW nie wybiore zadnej kategori, i klkne SZUKAJ wyswietlaja mi sie wszystkie wyniki zapisane w BAZIE, kolejnym problemem jest to, ze nawet jesli wybiore ktoras z opcji, ale pozostawie inne puste, rowniez wyswietla sie wszystkie :/

Jak zatem zrobić, aby tam gdzie PUSTE POLE tego forma, tam nie pobiera danych z tabeli...:|?


Cena max/doba/osoba :<br>

<select name="cenaID" style="width:180px" id=button><option value="" selected>

<?



lacz_bd();

$wynik=mysql_query("select * from ceny");

for ($i=0; $i<@mysql_num_rows($wynik); $i++){

 $wiersz=mysql_fetch_array($wynik);

 echo "<option value="".$wiersz["cenaID"]."">".$wiersz["nazwa"];

}



?>

</select><br>





Miejscowo¶ć :<br>

<select name="miejsceID" style="width:180px" id=button><option value="" selected>

<?



lacz_bd();

$wynik=mysql_query("select * from miejscowosc");

for ($i=0; $i<@mysql_num_rows($wynik); $i++){

 $wiersz=mysql_fetch_array($wynik);

 echo "<option value="".$wiersz["miejsceID"]."">".$wiersz["nazwa"];

}



?>

</select><br>





Typ noclegu :<br>

<select name="noclegiID" style="width:180px" id=button><option value="" selected>

<?



lacz_bd();

$wynik=mysql_query("select * from typnoclegu");

for ($i=0; $i<@mysql_num_rows($wynik); $i++){

 $wiersz=mysql_fetch_array($wynik);

 echo "<option value="".$wiersz["noclegiID"]."">".$wiersz["nazwa"];

}



?>

</select><br>



<span id=qw>Województwo :<br>

<select name="wojewodztwoID" style="width:180px" id=button><option value="" selected>

<?



$wynik=mysql_query("select * from wojewodztwa");

for ($i=0; $i<@mysql_num_rows($wynik); $i++){

 $wiersz=mysql_fetch_array($wynik);

 echo "<option value="".$wiersz["wojewodztwoID"]."">".$wiersz["nazwa"];

}



?>

Uprzejmie prosze o pomoc, z gory dziekuje.

Odnośnik do komentarza
Udostępnij na innych stronach

nie wiem, może tak:

if ( $_POST[cenaID])!="" AND $_POST[miejsceID]!="" AND $_POST[noclegiID]!="" AND $_POST[wojewodztwoID]!="" ) {



// pokaz wyniki 



} else {



// jedno z wymaganych pól pozostało nie zostało wybrane



}

zdaje się ze zamiast zapisu $_POST[cenaID]!="" mozesz też użyć !isset($_POST[cenaID])

- buduj content metodą drag&drop i łatwo zgarnij SEO backlinki z msDrop

- wideoporadniki jak korzystać z msDrop

Odnośnik do komentarza
Udostępnij na innych stronach

nie wiem, może tak:

if ( $_POST[cenaID])!="" AND $_POST[miejsceID]!="" AND $_POST[noclegiID]!="" AND $_POST[wojewodztwoID]!="" ) {



// pokaz wyniki 



} else {



// jedno z wymaganych pól pozostało nie zostało wybrane



}

zdaje się ze zamiast zapisu $_POST[cenaID]!="" mozesz też użyć !isset($_POST[cenaID])

$_POST[cenaID]!="" to nie to samo co !isset($_POST[cenaID]), bo pole moze istniec ale byc BLANK

www.governo.it

Odnośnik do komentarza
Udostępnij na innych stronach

Zapomnialem dodac, ze mam jeszcze cos takiego :

<?

include_once("x.php");



$zapytanie = "select * from noclegi";

If ($wojewodztwoID<>""||$miejsceID<>""||$noclegiID<>""||$cenaID<>""){

 $zapytanie=$zapytanie." where";

 if ($wojewodztwoID<>"") $zapytanie=$zapytanie." wojewodztwoID like '%$wojewodztwoID%' and";

 if ($miejsceID<>"") $zapytanie=$zapytanie." miejsceID='$miejsceID' and";

 if ($noclegiID<>"") $zapytanie=$zapytanie." noclegiID='$noclegiID' and";

 if ($cenaID<>"") $zapytanie=$zapytanie." cenaID='$cenaID' and";

 $zapytanie = substr($zapytanie, 0, -3);

}



$zapytanie = $zapytanie." order by opis";



wyswietl_noclegi($zapytanie);



?>

Moze w powyzszym jest jakas LUKA, a ja doszukuje sie bledu w formularzu wyszukiwania ?

Odnośnik do komentarza
Udostępnij na innych stronach

"<>" to jest PHP? PHP używa != jesli dobrze pamiętam :roll:

a co z is_set? Próbowałeś to zastosować? Dla strony przekazanie pustego pola w POST (czy GET) intrpretowane jest jako nieustawione.

[EDYCJA]Miałem na myśli empty, zamiast is_set. Ja używam czegoś takiego do odbierania parametrów:


if (!empty($_GET["param1"])) $p1=$_GET["param1"]; else $p1=-1;

if (empty($_GET["param2"])) $p2=0; else $p2=$_GET["param2"];

Można sobie na swój sposób to wykorzystać. Powyższe działa zarówno z nieustawionym GET (adres?param1=&param2=) lub jego brakiem jak i pustym polem formularza wysyłanegio via POST.

[/EDYCJA]

Odnośnik do komentarza
Udostępnij na innych stronach

"<>"

może chodzi o mniejsze lub większe niż puste (brak) ?

Hmm, nikt mi nie podpowie

cierpliwości chłopie, jak ktoś będzie wiedział i miał parę minut to podpowie :D

nigdy nie korzystałem z tych znaczków <> więc pewnie zapisałbym to tak

If ($wojewodztwoID=="" AND $miejsceID=="" AND $noclegiID=="" AND $cenaID=="") { 



$komunikat = "musisz wybrac przynajmnej jedno pole z warunkiem";



} else {



// tutaj masz już pewnosc ze skrypt nie poda Ci samych pustych pól 

// więc możesz rozpocząć zapytanie do bazy

$zapytanie = "select * from noclegi where"; 



// jesli pole województwo nie jest puste 

If ($wojewodztwoID!="") { 

$zapytanie .= " wojewodztwoID like '%$wojewodztwoID%' and";

}



// jesli pole miejsce nie jest puste 

If ($miejsceID!="") { 

$zapytanie .= " miejsceID='$miejsceID' and";

}



// jesli pole noclegi nie jest puste 

If ($noclegiID!="") { 

$zapytanie .= " noclegiID='$noclegiID' and";

}



// jesli pole cena nie jest puste 

If ($cenaID!="") { 

$zapytanie .= " cenaID='$cenaID'";

} else {



// [edit] wlaśnie to przeglądnąłem jeszcze raz, bez tego else nie wybranie

// ostatniego parametru zakończy się pewnie błędem składni 

// zapytania mysql

$zapytanie = substr($zapytanie, 0, -3);

}



// skoro kończysz sortowaniem, możesz je także podzielić

$zapytanie .= " order by opis"; 





// wykonaj zapytanie

wyswietl_noclegi($zapytanie); 



}

powodzenia, może zadziała.

Przy okazji zobacz że jeśli ze skryptu, który podałeś wytniesz warunki If zostanie Ci coś co i tak zadziała i wyświetli wszytko z bazy, sotrując po opisie. W zasadzie bez warunków Twój kod będzie wyglądał dokładnie tak jak poniżej ;)

wyswietl_noclegi("select * from noclegi order by opis");

A jeszcze przy okazji dlaczego masz podane wojewodztwoID like '%$wojewodztwoID%'. Po Twoim pierwszym poście z kodem formularza mozna wnioskować, że w bazie przechowujesz województwa jako ID wiec powinieneś dać wojewodztwoID='$wojewodztwoID'

- buduj content metodą drag&drop i łatwo zgarnij SEO backlinki z msDrop

- wideoporadniki jak korzystać z msDrop

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności