Ugabuga Posted November 14, 2005 Report Share Posted November 14, 2005 Lieta taada, ka ir tabula ar datiem, gribas uztaisiit filtreeshanu. Triis selekti zem tabulas, piemeeram paraadiit lietotaajus, kas online, lietotaajus ar noteiktu dzimumu, lietotaajus ar noteiktu statusu (juuzers, admins..) Tik taalu viss vienkaarshi. Bet gribas lai filtreet var vairaak nekaa peec viena nosaciijuma, piemeeram: paraadiit lietotaajus, kas ir admini un online vai lietotaajus, kas ir viirieshu dzimuma vai vai lietotaajus, kas ir admini, sievieshu dzimuma un nav online. Domaaju, ka jaabuut labaakam veids, kaa rakstiit astonjus IFus astonjiem dazhaadiem kverijiem. Un ja piemet veel ceturto nosaciijumu, tad vispaa traks var palikt. Shaa taa paprobeejos, pakjeepaajos, bet pagaidaam nav nekas jeedziigs padevies, piemeeram doma, ka to kveriju ver buuveet pa daljaam, noskaidrot vai isset kaads nosaciijums un rakstiit to nosaciijums=".." vai nee, bet sanaak muhlis ar WHERE un AND attieciigi dazhaadaas kombinaacijaas un nekas labs tur galaa nav sanaacis. Tad vajag veidu, kaa peec WHERE dabuut nosaciijumu peec kura atlasaas visi attieciigie lauki un iisti praats nevelk, vai maz kkas taads pastaav.. vai arii es te akal braucu uz Riigu caur Maskavu.. Any ideas? Link to comment Share on other sites More sharing options...
rpr Posted November 14, 2005 Report Share Posted November 14, 2005 kaapeec tev leikas, ka ar isset() ir slikts variants?. es gan isset() vietaa ieteiktu izmantot empty(). domaa praatiigaak ir katram variantam rakstiit savu kveriju? $where .= !empty($_POST['kol']) ? "kol={$_POST['kol']}" : ''; Link to comment Share on other sites More sharing options...
bubu Posted November 14, 2005 Report Share Posted November 14, 2005 (edited) Es daru kautkā šādi: $where = array('1'); $conditions = array( $condition1 => "param1=value1", $condition2 => "param2=value2", ...); foreach($conditions as $cond => $param) { if ($cond) { $where[] = $param; } } $sql = "SELECT * FROM tabule WHERE " . implode(" AND ", $where); Edited November 14, 2005 by bubu Link to comment Share on other sites More sharing options...
Ugabuga Posted November 14, 2005 Author Report Share Posted November 14, 2005 Probleema bija ar AND un WHERE. Piemeeram, ja netiek nekas filtreets, tad kverijaa WHERE un to, kas tam seko vispaa nevaik. SELECT * FROM tabula ORDER BY vards ASC Ja tiek mekleets peec visiem nosaciijumiem tad ir SELECT * FROM tabula WHERE pirmais=".." AND otrais=".." AND treshais=".." ORDER BY vards ASC tad kaa pareizi sakombineet un salikt tos lai piemeeram, ja netiek mekleets peec pirmaa, bet tikai peec otraa vai treshaa vai abiem nosaciijumiem, tas liekais AND neparaadaas. Un ja nekas tiek filtreets, lai WHERE ar protaas. Variants ir vnk ja kaads kriteerijs nav noraadiits vinja vietaa aiz WHERE ielikt nevis kriteerijs = "kaut kas", bet kriteerijs != "kaut kas".. Brr.. Link to comment Share on other sites More sharing options...
Recommended Posts