Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] wyszukiwarka
AcidBurnt
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


Witam w jednym z moich projektow stworzylem wyszukiwarke ogloszen.. i chcialbym sie poradzic moze ktos ma lepszy pomysl realizaci tego wszystkiego.. wyszukiwarka przelatuje po tabeli o strukutzrze:

[sql:1:bc2ab6d6b0]CREATE TABLE `i_oferty` (
`ID` int(10) unsigned NOT NULL auto_increment,
`ID_oferty` varchar(32) NOT NULL default '',
`kontakt_imie` varchar(255) NOT NULL default '',
`kontakt_tel` varchar(255) NOT NULL default '',
`kontakt_email` varchar(255) NOT NULL default '',
`lok_ulica` int(10) unsigned NOT NULL default '0',
`lok_nr_bud` int(11) NOT NULL default '0',
`lok_nr_miesz` int(11) NOT NULL default '0',
`lok_kod` varchar(255) NOT NULL default '',
`lok_miasto` varchar(255) NOT NULL default '',
`lok_dziel` int(11) NOT NULL default '0',
`lok_rodz` int(1) NOT NULL default '0',
`lok_rodz_lok` int(1) NOT NULL default '0',
`lok_metraz` int(10) unsigned NOT NULL default '0',
`lok_pok` int(11) NOT NULL default '0',
`lok_cena` float NOT NULL default '0',
`opl_prad` int(1) unsigned NOT NULL default '0',
`opl_gaz` int(1) unsigned NOT NULL default '0',
`opl_czynsz` int(1) unsigned NOT NULL default '0',
`opl_woda` int(1) unsigned NOT NULL default '0',
`opl_telefon` int(1) unsigned NOT NULL default '0',
`opl_internet` int(1) unsigned NOT NULL default '0',
`opl_inne` text NOT NULL,
`pok_lozka` int(1) unsigned NOT NULL default '0',
`pok_szafki` int(1) unsigned NOT NULL default '0',
`pok_tv` int(1) unsigned NOT NULL default '0',
`pok_pulki` int(1) unsigned NOT NULL default '0',
`pok_inne` text NOT NULL,
`kuch_lodowka` int(1) unsigned NOT NULL default '0',
`kuch_kuchenka` int(1) unsigned NOT NULL default '0',
`kuch_meble` int(1) unsigned NOT NULL default '0',
`kuch_inne` text NOT NULL,
`stan` int(1) unsigned NOT NULL default '0',
`u_ID` int(11) NOT NULL default '0',
`data` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`ID`)
)[/sql:1:bc2ab6d6b0]

jest prosty formulaz z kilkoma polami wybory przenosi dalej info za pomoca method="GET"

i tworzy linka w postaci :


Kod
http://imobilare/index.php?d=3&typ=1&pokoje=2&dzielnica=2&ulica=1&cena=2&wys=10&szukaj=Szukaj


no i teraz php generujace zapytanie do bazy...:
[php:1:bc2ab6d6b0]<?php
if(!empty($_GET[typ]))
{
$zap[lok_rodz] = "lok_rodz = '".$_GET[typ]."'";
}
if(!empty($_GET[cena]))
{
if($_GET[cena] == 1)
$zap[lok_cena] = "lok_cena <= '300'";
if($_GET[cena] == 2)
$zap[lok_cena] = "(lok_cena >= '300' AND lok_cena <=500)";
if($_GET[cena] == 3)
$zap[lok_cena] = "(lok_cena >= '500' AND lok_cena <=700)";
if($_GET[cena] == 4)
$zap[lok_cena] = "(lok_cena >= '700' AND lok_cena <=1000)";
if($_GET[cena] == 5)
$zap[lok_cena] = "lok_cena > 1000";
}
if(!empty($_GET[lokal]))
{
$zap[lok_rodz_lok] = "lok_rodz_lok = '".$_GET[lokal]."'";
}
if(!empty($_GET[pok]))
{
$zap[lok_pok] = "lok_pok = '".$_GET[pok]."'";
}
if(!empty($_GET[dzielnica]))
{
$zap[lok_dziel] = "lok_dziel = '".$_GET[dzielnica]."'";
}
if(!empty($_GET[pokoje]))
{
$zap[lok_pok] = "lok_pok = '".$_GET[pokoje]."'";
}
if(strlen($_GET[ulica]) > 0)
{
$zap[lok_ulica] = "lok_ulica = '".$_GET[ulica]."'";
}
if (!empty($_GET[wys]) AND $_GET[wys] != 'on')
{
$lim = ' LIMIT '.$_GET[wys].'';
}
$ile = count($zap);
$i = '1';
if ($ile > '0')
{
foreach($zap as $id => $wa)
{
$war .= " $wa";
if($i < $ile)
{
$war.= ' AND ';
}
$i++;
}
}
$sql1 = "SELECT * FROM i_oferty WHERE $war$lim";?>[/php:1:bc2ab6d6b0]


ma moze ktos jakis lepszy pomysl na realizacje tego zapytania??

moze jakas doskonalsza baza luyb cokolwiek?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)


dodam ze jest to strona dosc priorytetowa i musi chulac dosc szybko i sprawnie....

pozdro z gory dzieki za pomoc!!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wojto
post
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


Moze w tabelach zamiast typu INT(1) daj TINYINT(1), to powinno cos pomoc, lub jakis ENUM z wartosciami 1 i 0
sprawdz tez co bedzie szybsze czy VARCHAR(255) czy CHAR(255), bo jak jest 255 liter, to wydaje mi sie, ze to drugie, bo nie musi sprawdzac dlugosci stringa, ale zato pierwsze przechowuje tylko tyle ile jest dlugosc
Go to the top of the page
+Quote Post

Posty w temacie


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: 12.10.2025 - 00:48