bolo
27.03.2004, 22:07:19
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?
Seth
27.03.2004, 22:25:09
[sql:1:094340431c]SELECT * FROM tabela WHERE cena BETWEEN 5000 AND 10000[/sql:1:094340431c]
bolo
27.03.2004, 23:44:50
No tak, ale to banalne! Wielkie dzięki!
bolo
28.03.2004, 00:19:00
Hmmm, nie wiem dlaczego, ale to zapytanie nie chce działać poprawnie. Może ktoś wie dlaczego?
Seth
28.03.2004, 16:54:56
Podaj swoje zapytania i strukture tabeli z cenami + 2 przykladowe rekordy.
bolo
29.03.2004, 20:11:41
...
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
29.03.2004, 20:13:45
bbcode... :?
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
9.04.2004, 10:02:33
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.