Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Višestruka provjera WHERE kod upita prema bazi

[es] :: PHP :: Višestruka provjera WHERE kod upita prema bazi

[ Pregleda: 1858 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Wizard4U
Wizard4U

Član broj: 178049
Poruke: 122
*.adsl.net.t-com.hr.



Profil

icon Višestruka provjera WHERE kod upita prema bazi02.07.2008. u 13:47 - pre 192 meseci
Dakle:

Isprobao na sve moguće načine, i sa "||", "AND" i stavljanje u zagrade ali ništa.

Code:

$rs=db_query("SELECT id, category_id, supercategory_id, naselje_id, regija_id,
jezik_id, naslov, opis, adresa, grad, drzava, cijena, tip_oglasa FROM spread
WHERE  (category_id='$category_id')&&(naselje_id='$naselje_id')");


Tu sam stavio provjeru i category_id i naselje_id (da odgovaraj7u jedan drugom. link je oblika

[url]http://localhost/category.php?category_id=8&naselje_id=1341[/url]

Ali trebam staviti još i category_id i supercategory_id

[url]http://localhost/category.php?category_id=5[/url]
category_id='$category_id'

[url]http://localhost/category.php?supercategory_id=1[/url]
supercategory_id='$supercategory_id'

Ja sam zadnje probao ovako:

Code:

$rs=db_query("SELECT id, category_id, supercategory_id, naselje_id, regija_id,
jezik_id, naslov, opis, adresa, grad, drzava, cijena, tip_oglasa FROM spread
WHERE  (category_id='$category_id')&&(naselje_id='$naselje_id') ||
category_id='$category_id' || supercategory_id='$supercategory_id'");


Ali tu ne funckionira odnos category_id vs naselje_id, tj. ne provjerava toćno!

Neznam kako bih objasnio drugačije:

Probat ću ovako:

Linkovi u category.php mi mogu biti tipa:

category.php?category_id=8&naselje_id=1428 //tu trebam provjeriti (category_id='$category_id')&&(naselje_id='$naselje_id')

category.php?supercategory_id=1

category.php?category_id=8

Al kad dodam ove druge dvije provjere onda ne radi za onu prvu! To je pitanje, ne znam kako ih odovjiti i definirati! Znam da sa znakom && vršiš dvostruku provjeru i ona prva mi radi ali kako da dodam ove druge dvije tj. definiram!

Jer kad klikneš na category onda ti je link "category.php?category_id=5"

kad klikneš na naselje onda provjeri category i onda naselja koja su tu "category.php?category_id=5&naselje_id=1324"

Neznam stvarno kako bih drugačije objasnio.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
79.101.90.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi02.07.2008. u 14:04 - pre 192 meseci
Ja ne razumem šta ti ovde pokušavaš?

Ako hoćeš da staviš više uslova u WHERE kod sql upita, povezuješ ih sa AND, znači:

Code:
SELECT * FROM tabela WHERE prvo = 1 AND drugo = 2;


A za drugi deo pitanja, jednostavno sa isset() proveriš da li je nešto setovano u $_GET nizu i na osnovu toga kreiraš SQL upit.
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Wizard4U
Wizard4U

Član broj: 178049
Poruke: 122
*.adsl.net.t-com.hr.



Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi02.07.2008. u 14:10 - pre 192 meseci
Skužio, provjeravam tako::...

Code:
<?php 
     if (isset($_GET['category_id'])&&($_GET['naselje_id'])){
     
     echo'Sad ide ispis naselja pod nekom kategorijom'; }
     
     ?>



Mogao sam odmah staviti ovu provjeru i samo dodam drugi MYSQL upit a ne da pokušavam sve utrpati u jedna upit, ali evo, uči se na greškama!
Hvala na pomoči



[Ovu poruku je menjao Wizard4U dana 02.07.2008. u 15:46 GMT+1]
 
Odgovor na temu

Wizard4U
Wizard4U

Član broj: 178049
Poruke: 122
*.adsl.net.t-com.hr.



Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi02.07.2008. u 15:34 - pre 192 meseci
Jel moguće da se međusobno poništavaju, kad stavim
Code:

if (isset($_GET['category_id'])&&($_GET['naselje_id'])){
    .........
      }
     
     if (isset($_GET['category_id'])&&($_GET['regija_id'])){
    ................
     }

onda radi


A kad dodam još provjeru samo za category onda ne radi ispravno?!

Code:

if (isset($_GET['category_id'])&&($_GET['naselje_id'])){
    .........
      }
     
     if (isset($_GET['category_id'])&&($_GET['regija_id'])){
    ................
     }

if (isset($_GET['category_id'])){
    .........
      }
 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi02.07.2008. u 23:34 - pre 192 meseci
Sta podrazumevas pod - "Ne radi ispravno" ? :-) PHP Javlja neku gresku ili dobijas nesto sto nebi trebalo da dobijes :-)
 
Odgovor na temu

Wizard4U
Wizard4U

Član broj: 178049
Poruke: 122
*.adsl.net.t-com.hr.



Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi03.07.2008. u 00:22 - pre 192 meseci
Pod tim mislim da kad stavim samo prvu provjeru (kad se klikne na naselje) onda mi funkcioniše,
a kad dodam onu drugu onda mi izbacuje sve iz te kategorije, tj. onda više kao da ne vrijedi
ona prva jer ne izbacuje samo iz tog naselja pa sam zato mislio dal se poništavaju, jer ja mislim da je provjera ok složena!
 
Odgovor na temu

Wizard4U
Wizard4U

Član broj: 178049
Poruke: 122
*.adsl.net.t-com.hr.



Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi03.07.2008. u 13:02 - pre 192 meseci
Rješio stvar, ako ima netko bilo kakvih komentara (da se moglo drugačije, kraće ili je tako dobro) neka samo komentira! Hvala svima na pomoči
Code:

if ($_GET){
    
    
    $category_id=$_GET['category_id'];
    $supercategory_id=$_GET['supercategory_id']; 
    $naselje_id=$_GET['naselje_id'];
    $regija_id=$_GET['regija_id'];
    
    
    /*We check if there wasn't click on the naselja, if answer is NO then we proceed with the action and if answer is YES then in ELSE we print naselja*/
    if (empty($_GET['naselje_id'])){
    
         /*We check if there wasn't click on the regija, if answer is NO then we proceed with the action and if answer is YES then in ELSE we print regija*/
         if (empty($_GET['regija_id'])){
    
    $rs=db_query("SELECT id, category_id, supercategory_id, naselje_id, regija_id, jezik_id, naslov, opis, adresa, grad, drzava, cijena, tip_oglasa FROM spread WHERE category_id='$category_id' OR supercategory_id='$supercategory_id'");
    
         }
         //IF click was on the regija then we print category and regija
          else{
          $rs=db_query("SELECT id, category_id, supercategory_id, naselje_id, regija_id, jezik_id, naslov, opis, adresa, grad, drzava,            cijena, tip_oglasa FROM spread WHERE category_id='$category_id' AND regija_id='$regija_id'");
          }
    
    }
    
    //IF click was on the naselja then we print category and naselja
    else{
     $rs=db_query("SELECT id, category_id, supercategory_id, naselje_id, regija_id, jezik_id, naslov, opis, adresa, grad, drzava, cijena, tip_oglasa FROM spread WHERE category_id='$category_id' AND naselje_id='$naselje_id'");
    }
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
77.46.139.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi03.07.2008. u 15:28 - pre 192 meseci
eskejpuj promenljive da sprečiš sql injection
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Wizard4U
Wizard4U

Član broj: 178049
Poruke: 122
*.adsl.net.t-com.hr.



Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi03.07.2008. u 15:52 - pre 192 meseci
Bez zamjere ali ne kužim što to znači: "eskejpuj promenljive"

[Ovu poruku je menjao Wizard4U dana 03.07.2008. u 18:01 GMT+1]
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
79.101.68.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi03.07.2008. u 21:10 - pre 192 meseci
Google: "mysql injection"
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

darence

Član broj: 90747
Poruke: 365



+2 Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi05.07.2008. u 19:55 - pre 192 meseci
pretpostavljam da se misli na mysql_real_escape_string() ? Ili drugo nesto?
 
Odgovor na temu

Wizard4U
Wizard4U

Član broj: 178049
Poruke: 122
*.adsl.net.t-com.hr.



Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi05.07.2008. u 20:09 - pre 192 meseci
Uz pomoć kolege stvar malo pojednostavljena ali sad neće da štima supercategory_id

Code:

<?php 
         //The midle of the site is this....
         
    //here we check if GET function exist
    if ($_GET){
    
    
    $category_id=$_GET['category_id'];
    $supercategory_id=$_GET['supercategory_id']; 
    $naselje_id=$_GET['naselje_id'];
    $regija_id=$_GET['regija_id'];
    
$upit='SELECT id, category_id, supercategory_id, naselje_id, regija_id, jezik_id, naslov, opis, adresa, grad, drzava, cijena, tip_oglasa FROM spread WHERE category_id = '.$category_id;

 switch(true){
         case !empty($naselje_id):
             $upit .= ' AND naselje_id = '.$naselje_id;
         break;
         case !empty($regija_id):
             $upit .= ' AND regija_id = '.$regija_id;
         break;
         case !empty($supercategory_id):
             $upit .= ' OR supercategory_id = '.$supercategory_id;
         break;
     } 
     
     $rs = db_query($upit);    

    while (list($id, $category_id, $supercategory_id, $naselje_id, $regija_id, $jezik_id, $naslov, $opis, $adresa, $grad, $drzava, $cijena, $tip_oglasa)=
    mysql_fetch_array($rs)){
    //PRINT SPREADS

    echo"<div class='list_spreads'><a href='detail.php?id=".$id."'>".$naslov."</a>";
    
    echo"<div align='right'><span style='color: #000000; font-weight: bold; font-size: 14px'>$cijena kuna</span><br>
    <hr width='100%' size='1' color='#D7D7D7'>
    </div></div>";
    }
         
        /* }
         //exist this category or supercategory "id"...if not then we print that spread with this ID doesn't exist!
else
{
echo'There is not a spread with this <b>ID</b>';
}*/
         
         }
         else {echo'Warning';
         }
        
         ?>


Jer category_id nije uvijek, ili je on (sam ili skupa sa nasljem ili regijom) ili je samo supercategory_i!

 
Odgovor na temu

Man-Wolf
Mihailo Joksimovic
Beograd

Član broj: 17016
Poruke: 873
*.eunet.yu.



+13 Profil

icon Re: Višestruka provjera WHERE kod upita prema bazi05.07.2008. u 23:04 - pre 192 meseci
Jebote, dok sam skapirao sta si hteo da pitas :-))

Ne valja ti upit :-)) Jer ti je u prvom upitu definisano da trazi category_id --> "WHERE category_id = ...".

Probaj da napravis prvo proveru da li je u pitanju category ili supercategory_id, pa tek onda switch. Odnosno:

Code:

$upit='SELECT id, category_id, supercategory_id, naselje_id, regija_id, jezik_id, naslov, opis, adresa, grad, drzava, cijena, tip_oglasa FROM spread WHERE';

if (!empty($category_id))
{
  $upit .= " category_id = $category_id";
}
else
{
  $upit .= " supercategory_id = $supercategory_id";
}

 switch(true){
         case !empty($naselje_id):
             $upit .= ' AND naselje_id = '.$naselje_id;
         break;
         case !empty($regija_id):
             $upit .= ' AND regija_id = '.$regija_id;
         break;
     } 


EDIT: Sad sam tek video da se pod
Code:
empty
podrazumevaju sledeci slucajevi:

Citat:

* "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)


Sto znaci, da ako neko stavi: $category_id = 0, to ce se smatrati kao prazna promenljiva, sto ce ocigledno poremetiti ono sto ti treba... E sad, ako umesto !empty stavis isset(), cini mi se da ce ispasti jos veci haos, zato sto on vraca TRUE, cak i ako je promenljiva definisana ovako:

Code:

  $category_id = '';
  isset($category_id) ----> Uslov je tacan, iako nista nije dodeljeno promenljivoj ...


Tako da, nemam pojma sta da ti kazem :-) Gledaj da nemas ni jedan ID 0 :-))

[Ovu poruku je menjao Man-Wolf dana 06.07.2008. u 00:24 GMT+1]
 
Odgovor na temu

[es] :: PHP :: Višestruka provjera WHERE kod upita prema bazi

[ Pregleda: 1858 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.