![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Problem jest taki. Robię wyszukuwarkę, która ma wyszukiwać odpowiednie dane z MySql-a. Muszę zrobić formularz w ten sposób, żeby wyszukiwarka znajdowała wpisy "od do" jakiejś wartości. Przykładowo chcę znaleźć auta z bazy danych, które kosztują od 5tyś do 10tyś. Kwoty (od do) trzeba wprowadzać do dwóch osobnych okienek formularza. Jak napisać taki skrypt? ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
[sql:1:094340431c]SELECT * FROM tabela WHERE cena BETWEEN 5000 AND 10000[/sql:1:094340431c]
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
No tak, ale to banalne! Wielkie dzięki!
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmmm, nie wiem dlaczego, ale to zapytanie nie chce działać poprawnie. Może ktoś wie dlaczego?
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Podaj swoje zapytania i strukture tabeli z cenami + 2 przykladowe rekordy.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
...
if($marka||$model||$silnik||$od||$do) { $wynik=mysql_query("SELECT * FROM motogielda WHERE cena BETWEEN "%$od%" AND "%$do%" ORDER BY cena") or die ("BŁĄD!"); $num_rows=mysql_num_rows($wynik); print "Ilość ofert: $num_rows<br>"; if($num_rows==0) { print 'Brak ofert spełniających podane warunki<br>'; } else { print "<table border="1">"; print "<tr><td><b>Marka</b></td><td><b>Model</b></td><td><b>Pojemność</b></td><td><b>Silnik</b></td><td><b>Rocznik</b></td></tr>n"; while($rekord=mysql_fetch_array($wynik)) { $marka=$rekord[1]; $model=$rekord[2]; $silnik=$rekord[5]; $cena=$rekord[11]; print "<tr><td>$marka</td><td>$model</td><td>$pojemnosc</td><td>$silnik</td><td>$rocznik</td></tr>n"; } print "</table>"; } } else { print '<form action="wysz.php" method=Post>'; print 'Cena<br>'; print 'od '; print '<input type="text" name="od">'; print ' do '; print '<input type="text" name="do">'; print '<br>'; print '<input type="submit" value="szukaj">'; print '</form>'; } ... -------------------------------------- Tak wygląda część skryptu. A przykładowe rekordy to np. Fiat 126p cena: 5000, Fiat 125 cena: 8000 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 636 Pomógł: 0 Dołączył: 22.10.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
bbcode... :?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 27.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi o to, żeby wyszukiwarka odnajdowała wpisy z tych pól, które zostały wypałnione, bez konieczności wypełniania całości.
Jak na razie działa tylko wtedy gdy wpisze wszystko. Co mam zrobic, żeby działała tak jak chce?? Oto uproszczone źródło tej wyszukiwarki: <? mysql_connect("localhost", "root", "") or die("Nie da się połączyć z MySql"); mysql_select_db("baza1") or die("Nie da się połączyć z bazą danych: baza1"); if(($od && $do) || ($od1 && $do1)) { $wynik=mysql_query("SELECT * FROM motogielda WHERE (cena BETWEEN "$od" AND "$do") AND (przebieg BETWEEN "$od1" AND "$do1") ORDER BY nazwa") or die ("BŁĄD!"); $num_rows=mysql_num_rows($wynik); print "Ilość ofert: $num_rows<br>"; if($num_rows==0) { print 'Brak ofert spełniających podane warunki<br>'; } else { print "<table border="1">"; print "<tr><td><b>Marka</b></td><td><b>Model</b></td><td><b>Pojemność</b></td><td><b>Silnik</b></td><td><b>Rocznik</b></td></tr>n"; while($rekord=mysql_fetch_array($wynik)) { $marka=$rekord[1]; $pojemnosc=$rekord[4]; $model=$rekord[2]; $rocznik=$rekord[3]; $silnik=$rekord[5]; $cena=$rekord[11]; print "<tr><td>$marka</td><td>$model</td><td>$pojemnosc</td><td>$silnik</td><td>$rocznik</td></tr>n"; } print "</table>"; } } else { print '<form action="wysz.php" method=Post>'; print 'Przebieg<br>'; print 'od '; print '<input type="text" name="od1">'; print ' do '; print '<input type="text" name="do1"> tyś. km'; print '<br><br>'; print 'Cena<br>'; print 'od '; print '<input type="text" name="od">'; print ' do '; print '<input type="text" name="do"> PLN'; print '<br>'; print '<input type="submit" value="szukaj">'; print '</form>'; } ?> |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Moze tak:
[php:1:1f17bee26d]<? if ($od && $do) { $wynik=mysql_query("SELECT * FROM motogielda WHERE (cena BETWEEN "$od" AND "$do")"; if ($od1 && $do1) $wynik .= "AND (przebieg BETWEEN "$od1" AND "$do1")"; $wynik .= " ORDER BY nazwa") or die ("BŁĄD!");[/php:1:1f17bee26d] nie sprawdzalem, ale cos w tym stylu powinno dzialac ps. przyjmujemy, ze najpierw wypelniane sa pola $od i$do, a dopiero pozniej $od1 i $do1 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 05:42 |