Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyszukiwarka "od do". jak napisać skrypt?
bolo
post
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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Seth
post
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]
Go to the top of the page
+Quote Post
bolo
post
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!
Go to the top of the page
+Quote Post
bolo
post
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?
Go to the top of the page
+Quote Post
Seth
post
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.
Go to the top of the page
+Quote Post
bolo
post
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
Go to the top of the page
+Quote Post
Paul
post
Post #7





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


bbcode... :?
Go to the top of the page
+Quote Post
bolo
post
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>';
}
?>
Go to the top of the page
+Quote Post
wojto
post
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
Go to the top of the page
+Quote Post

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: 22.08.2025 - 18:26