Autor | Zpráva | ||
---|---|---|---|
Citanek Profil * |
Dobrý den,
dělám momentálně na jednom webu, kde je potřeba seznam produktů, který se dá řadit podle nejlevnějšího a podobně, taktéž v něm jde vybrat rubriky tím pádem z toho vyleze dlouhá url No nevím jakým způsobem mám řešit Select z DB, jelikož je tam hodně podmínek WHERE, tak každou změnu v url, která se má projevit v SELECTU musím řešit podmínkou if tím pádem z toho mám dost podmínek if a v nich selecty. Nejsem zběhlý v php, takže se chci zeptat, jestli je nějaké lepší řešení než to co popisuji. Děkuji |
||
SwimX Profil |
#2 · Zasláno: 25. 2. 2010, 10:23:54
Citanek:
pokud to co popisuješ znamená, že se provádí více než jeden dotaz na DB pak by lepším řešením bylo: poskládat si hodně podmínek WHERE do proměnné $where a tu potom doplnit do jediného dotazu. Více poradíme, když ukážeš část skriptu. |
||
Citanek Profil * |
#3 · Zasláno: 25. 2. 2010, 10:40:22
Momentálně to mám takto, jak říkám, nejsem zběhlý v php, tudiž sem to zatím vyřešil takto.... budu rád, když se to provede do nějakého menšího scriptu a budu za něj moc vděčný. Děkuji za Vaši pomoc. S pozdravem Patrik
if ($rubrika == "") { if ($razeni == "") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' Order by id DESC LIMIT $start,$PZS"); } else { if ($razeni == "nejlevnejsi") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' Order by cena ASC LIMIT $start,$PZS"); } if ($razeni == "nejdrazsi") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' Order by cena DESC LIMIT $start,$PZS"); } if ($razeni == "datum") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' Order by id DESC LIMIT $start,$PZS"); } } } else { if ($razeni == "") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' AND rubrika='$rubrika' Order by id DESC LIMIT $start,$PZS"); } else { if ($razeni == "nejlevnejsi") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' AND rubrika='$rubrika' Order by cena ASC LIMIT $start,$PZS"); } if ($razeni == "nejdrazsi") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' AND rubrika='$rubrika' Order by cena DESC LIMIT $start,$PZS"); } if ($razeni == "datum") { $result = mysql_query("SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat WHERE typ='$typ' AND rubrika='$rubrika' Order by id DESC LIMIT $start,$PZS"); } } } |
||
nightfish Profil |
#4 · Zasláno: 25. 2. 2010, 10:48:28
šlo by to třeba takto
$query = "SELECT id,typ,rubrika,popis,foto1,cena,DATE_FORMAT(datum,'%d.%m.%Y') AS datum FROM web_nahradni_dily_inzerat"; $queryEnd = "LIMIT $start,$PZS"; $where = array(); $where[] = "typ='".mysql_real_escape_string($typ)."'"; if (!empty($rubrika)) $where[] = "rubrika='".mysql_real_escape_string($rubrika)."'"; $orderBy = ''; if ($razeni == 'nejlevnejsi') $orderBy = '`cena`'; else if ($razeni == 'nejdrazsi') $orderBy = '`cena` DESC'; else if ($razeni == 'datum') $orderBy = '`id` DESC'; $queryFinal = $query; if (count($where) > 0) $queryFinal .= " WHERE ".implode(' AND ', $where); if (!empty($orderBy)) $queryFinal .= " ORDER BY $orderBy"; $queryFinal .= " ".$queryEnd; $result = mysql_query($queryFinal); Na závěr si dovolím jednu poznámku k řazení pomocí datumu: lepší by bylo řadit podle sloupce `datum` než podle `id`. |
||
Citanek Profil * |
#5 · Zasláno: 25. 2. 2010, 10:57:59
Co se týče datumu, ano vím i vím jak na to, ale to ještě nemám hotové, takže jsem to zatím sem vložil takto... Ale děkuji za upomínku a děkuji za toto řešení, hned jak dodělám jinou věc, tak ho vyzkouším. Ještě jednou děkuji... S pozdravem, Patrik
|
||
Citanek Profil * |
#6 · Zasláno: 25. 2. 2010, 11:05:32
Funguje to naprosto perfektně. Ještě jednou děkuji...
|
||
Časová prodleva: 14 let
|
0