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
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 *
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
š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 *
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 *
Funguje to naprosto perfektně. Ještě jednou děkuji...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: