AND und OR richtig setzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • AND und OR richtig setzen

    Ich weiß nicht, ob ich richtig bin,zur not verschiebt mich bitte!

    Hi, ich möchte per checkboxen datensätze aus der db filtern.
    ich möchte mehrere stati auswählen können und mir diese dann durch quelle und prioritaet filtern, also es soll möglich sein, dass ich stati 3 un 4 anwähle und daraus nur die prio 3 und 4 wähle...
    meine abfrage müsste so aussehen
    SELECT * FROM gfs_aenderung WHERE status_id='4' AND quelle_id='T' OR quelle_id='W'

    nur ich bekomm das nicht so wirklich hin ..
    mein quelltext, könnt ihr gucken, ob OR und AND richtig gesetzt sind...?

    PHP-Code:
    <?php
    if(isset($_POST['anzeigen_detail']))
    {
    //sql anweisung, abfrage status_id aus tabelle gfs_aenderung...  
        
    $sql "SELECT * FROM gfs_aenderung WHERE (";
        
    $or=" OR ";
        
    $and2=" AND ";
        
        
        if(isset(
    $_POST['checkbox0'])){
          
    $t=true;
          
    $checkbox0=$_POST['checkbox0'];
        
          
    $sql.= "status_id='$checkbox0' ";
        }
        
    ////////////////////////////////////////
        
    if(isset($_POST['checkbox1'])){
          if(
    $t==true){
            
    $sql.=$or;
          }else{
            
    $t=true;
          }
          
    $checkbox1=$_POST['checkbox1'];
          
    $sql.= "status_id='$checkbox1' ";
        }
        
    ////////////////////////////////////////
        
    if(isset($_POST['checkbox1a'])){
          if(
    $t==true){
            
    $sql.=$or;
          }else{
            
    $t=true;
          }
          
    $checkbox1a=$_POST['checkbox1a'];
          
    $sql.= "status_id='$checkbox1a' ";
        }
        
    ////////////////////////////////////////
        
    if(isset($_POST['checkbox2'])){
          if(
    $t==true){
            
    $sql.=$or;
          }else{
            
    $t=true;
          }
          
    $checkbox2=$_POST['checkbox2'];
          
    $sql.= "status_id='$checkbox2' ";
        }
        
    ////////////////////////////////////////
        
    if(isset($_POST['checkbox3'])){
          if(
    $t==true){
            
    $sql.=$or;
          }else{
            
    $t=true;
          }
          
    $checkbox3=$_POST['checkbox3'];
          
    $sql.= "status_id='$checkbox3' ";
          echo 
    $sql;
        }
        
    /////////////////////////////////////
        ////////////////////////////////////////
         
    if(isset($_POST['checkbox4'])){
          if(
    $t==true){
            
    $sql.=$or;
          }else{
            
    $t=true;
          }
          
    $checkbox4=$_POST['checkbox4'];
          
    $sql.= "status_id='$checkbox4' ";
          echo 
    $sql;
        }
        
    ////////////////////////////////////////
        
    if(isset($_POST['checkbox5'])){
          if(
    $t==true){
            
    $sql.=$or;
          }else{
            
    $t=true;
          }
          
    $checkbox5=$_POST['checkbox5'];
          
    $sql.= "status_id='$checkbox5' ";
        }
        
    ////////////////////////////////////////
        
    if(isset($_POST['checkbox6'])){
          if(
    $t==true){
            
    $sql.=$or;
          }else{
            
    $t=true;
          }
          
    $checkbox6=$_POST['checkbox6'];
          
    $sql.= "status_id='$checkbox6' ";
        }
        
    $sql.=")"// ende der status checkboxen
        //////////////////////////////////
        
    if(isset($_POST['checkboxT'])){
          if(
    $t===true){
            
    $sql.=$and2."(";
          }else{
            
    $t=true;
          }
          
    $checkboxT=$_POST['checkboxT'];
          
    $sql.= "quelle_id='$checkboxT' ";
          
        }
        
    ////////////////////////////////////
        
    if(isset($_POST['checkboxD'])){
          if(
    $t==true){
            
    $sql.=$and2;
          }else{
            
    $t=true;
          }
          
    $checkboxD=$_POST['checkboxD'];
          
    $sql.= "quelle_id='$checkboxD' ";
        }
        
    //////////////////////////////////////
        
    if(isset($_POST['checkboxW'])){
          if(
    $t==true){
            
    $sql.=$and2;
          }else{
            
    $t=true;
          }
          
    $checkboxW=$_POST['checkboxW'];
          
    $sql.= "quelle_id='$checkboxW' ";
          echo 
    $sql;
        }
        
    //////////////////////////////////////
        
    if(isset($_POST['checkbox_1'])){
          if(
    $t==true){
            
    $sql.=$and2;
          }else{
            
    $t=true;
          }
          
    $checkbox_1=$_POST['checkbox_1'];
          
    $sql.= "prioritaet_id='$checkbox_1' ";
        }
        
    //////////////////////////////////////
        
    if(isset($_POST['checkbox_2'])){
          if(
    $t==true){
            
    $sql.=$and2;
          }else{
            
    $t=true;
          }
          
    $checkbox_2=$_POST['checkbox_2'];
          
    $sql.= "prioritaet_id='$checkbox_2' ";
        }
        
    //////////////////////////////////////
        
    if(isset($_POST['checkbox_3'])){
          if(
    $t==true){
            
    $sql.=$and2;
          }else{
            
    $t=true;
          }
          
    $checkbox_3=$_POST['checkbox_3'];
          
    $sql.= "prioritaet_id='$checkbox_3' ";
        }
        
       
    // $sql.=" ORDER BY status_id";
    danke euch!

  • #2
    Re: AND und OR richtig setzen

    Original geschrieben von Bulls3y3
    WHERE status_id='4' AND quelle_id='T' OR quelle_id='W'
    AND bindet bekanntlich stärker als OR.

    Mit dieser Bedingung wählst du also alle Datensätze aus, die status_id='4' und quelle_id='T' haben - sowie alle, die quelle_id='W' haben, unabhängig von ihrem Status.

    Vermutlich möchtest du also einfach nur Klammern setzen:

    WHERE status_id='4' AND (quelle_id='T' OR quelle_id='W')
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ja, du hast es richtig verstanden, ich versuche klammern zu setzen, nur leider verstehe ich nicht, wie ich dass im obrigen quelltext machen kann, dass es funktioniert!

      ich möchte halt zw. den 3 checkbox blöcken auswählen.

      checkbox block1 ( zwischne den einzelnen checkboxen ein OR)
      AND
      checkbox block2 ( zwischne den einzelnen checkboxen ein OR)
      AND
      checkbox block3 ( zwischne den einzelnen checkboxen ein OR)

      diese bekomm ich in meinem quelltext nicht hin.....

      Kommentar


      • #4
        sagt dir das etwas?
        PHP-Code:
        $i=1;
        while(isset(
        $_POST['checkbox'.$i])){
              if(
        $t==true){
                
        $sql.=$or;
              }else{
                
        $t=true;
              }
                    
        $sql.= "status_id='{$_POST['checkbox'.$i]}";
            } 
        ich glaube, dass du deine quellcode einwenig reduzieren kannst.
        und mit buschtaben am ende ist auch nicht schwer, wenn man die buchstaben in ein array packt und dann entsprechend durchläuft
        Zuletzt geändert von Slava; 27.06.2006, 12:02.
        Slava
        bituniverse.com

        Kommentar

        Lädt...
        X