Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyszukiwarka "od do". jak napisać skrypt?
Forum PHP.pl > Forum > Bazy danych > MySQL
bolo
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?questionmark.gif
Seth
[sql:1:094340431c]SELECT * FROM tabela WHERE cena BETWEEN 5000 AND 10000[/sql:1:094340431c]
bolo
No tak, ale to banalne! Wielkie dzięki!
bolo
Hmmm, nie wiem dlaczego, ale to zapytanie nie chce działać poprawnie. Może ktoś wie dlaczego?
Seth
Podaj swoje zapytania i strukture tabeli z cenami + 2 przykladowe rekordy.
bolo
...

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
Paul
bbcode... :?
bolo
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>';
}
?>
wojto
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.