Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] suchabfrage mysql

Einklappen

Neue Werbung 2019

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

  • Herbert40
    hat ein Thema erstellt [Erledigt] suchabfrage mysql.

    [Erledigt] suchabfrage mysql

    hi leute,

    ich verzweifele langsam an meine abfrage

    Das ganze soll eine Linkpartnerdatenbank werden sowie webkatalog.

    ich habe 4 auswahlkriterien

    - checkbutton $alle <-- alle filterungen werden deaktiviert und es werden alle einträge angezeigt

    - Hauptkategorie $kk <--- filterung nach der selbigen (listenfeld)
    - Unterkategorie $uk <--- filterung nach $kk und $uk (kann nur mit $kk gewählt werden)(listenfeld)

    - Volltextsuche $text <--- sucht über plz, text, uschrift, ort

    Ich bin jetzt soweit gekommen das ich soweit nach allem filtern kann mein problem ist das ich die Unterkategorie noch nicht ausgeklammert habe und irgendwie nicht hinbekomme
    sprich: sofern ich die Hauptkategorie angewählt habe wird gleichzeitig auch nach unterkategorie fefiltert.
    mir geht es hierbei nicht um die Datenbankabfrage sondern um die "if-abfrage" die irgendwie noch da zwischen muss.
    hat jemand ne idee wie ich das hinbekomme das ich diese dort noch extra filtern kann.

    Ich hoffe das ich verständlich rüberbringen konnte was ich meine.

    Vieleicht bin ich ja auch auf dem falschen weg und die sache geht viel einfacher wie ich es mir mache ?
    danke für jeden tip.

    hier der code
    PHP-Code:
        $text $_POST['text'];
        
    $kk $_POST['kk'];
        
    $uk $_POST['uk'];
        
    $alle $_POST['alle'];

    if (!empty(
    $kk) && $kk != 'aus' || !empty($text)) { echo "|-uk-->".$uk."<---|<br>";
            if (
    $alle == "on"){ echo "|-alle-->".$alle."<---|<br>";
                
    $kk "aus";
                
    $uk "0";
                
    $text "";
                
    $auswahl "WHERE aktiv LIKE '$aktiv' ORDER BY id ASC "
                }
                else { echo 
    "|-else-kk nr1-->angesprochen<---|<br>";
                    
    $auswahl "WHERE aktiv LIKE '$aktiv' AND kk= '$kk' AND uk= '$uk' ORDER BY id ASC";
                    }
                if (
    $text !== ""){ echo "|-text--->angesprochen<---|<br>";
                    
    $auswahl ="WHERE aktiv LIKE '$aktiv' AND text LIKE '%".$text."%' OR uschrift LIKE '%".$text."%' OR ort LIKE '%".$text."%' OR plz LIKE '%".$text."%' ORDER BY text ASC";
                    }
                    if (
    $text !== "" && !empty($kk) && $kk != 'aus'){ echo "|-text un kk-->angesprochen<---|<br>";
                            if (
    $alle == "alle"){
                                
    $auswahl "WHERE aktiv LIKE '$aktiv' AND text LIKE '".$text."%' ORDER BY text ASC"; }
                            else { echo 
    "|-else nr2-->angesprochen<---|<br>";
                        
    $auswahl " WHERE aktiv LIKE '$aktiv' AND kk= '$kk' AND text LIKE '".$text."%' ORDER BY text ASC";
                            }}    
    echo 
    "|-test nr1-->angesprochen<---|<br>";
    $query "SELECT * FROM linkpartner $auswahl ";
    $result mysql_query($query);
     }
    else{ 
    echo 
    "|-test nr2-->angesprochen<---|<br>";
    $query "SELECT * FROM linkpartner WHERE aktiv = 'ja' ORDER BY id ASC " ;
    $result mysql_query($query);

    ps. sorry ignoriert bitte die echos die habe ich nur für mich als prog hilfe drin und habe sie eben vergessen raus zu nehmen

  • lstegelitz
    antwortet
    Gratulation, aber deine Einrückung ist immer noch Kacke...

    Einen Kommentar schreiben:


  • Herbert40
    antwortet
    so ich hab es nun endlich geschafft

    für alle die es interessiert hier der code
    PHP-Code:
            $aktiv "ja";
        
    $text $_POST['text'];
        
    $kk $_POST['kk'];
        
    $uk $_POST['uk'];
    if (!empty(
    $kk) && $kk != 'aus' || !empty($text)) { 
        
    $auswahl "WHERE aktiv = '$aktiv' AND linkart = 'vw' AND kk= '$kk' ORDER BY id ASC";
            if (
    $text !== ""){ 
                
    $auswahl ="WHERE aktiv = '$aktiv' AND linkart = 'vw' AND (text LIKE '%".$text."%' OR uschrift LIKE '%".$text."%' OR ort LIKE '%".$text."%' OR plz LIKE '%".$text."%') ORDER BY text ASC";
            }
                if (!empty(
    $kk) && $kk != 'aus' && $uk != "0"){
                    
    $auswahl "WHERE aktiv = '$aktiv' AND linkart = 'vw' AND kk= '$kk' AND uk= '$uk' ORDER BY id ASC";
                }
                    if (
    $text !== "" && !empty($kk) && $kk != 'aus'){ 
                        
    $auswahl "WHERE aktiv LIKE '$aktiv' AND linkart = 'vw' AND kk= '$kk' AND (text LIKE '%".$text."%' OR uschrift LIKE '%".$text."%' OR ort LIKE '%".$text."%' OR plz LIKE '%".$text."%') ORDER BY text ASC"
                    }
                        if (
    $text !== "" && !empty($kk) && $kk != 'aus' && $uk != "0"){ 
                            
    $auswahl "WHERE aktiv LIKE '$aktiv' AND linkart = 'vw' AND kk= '$kk' AND uk= '$uk' AND (text LIKE '%".$text."%' OR uschrift LIKE '%".$text."%' OR ort LIKE '%".$text."%' OR plz LIKE '%".$text."%') ORDER BY text ASC"
                        }    
    $query "SELECT * FROM linkpartner $auswahl ";
    $result mysql_query($query);
    }
    else{ 
    $query "SELECT * FROM linkpartner WHERE aktiv = 'ja' AND linkart = 'vw' ORDER BY id ASC " ;
    $result mysql_query($query);

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    $alle kannst du dir auch sparen - es ist das gleiche, als ob $kk (und damit $uk) und $text leer wäre. Je weniger Filter angegeben werden, desto mehr wird gefunden. Lässt man alle Filter weg, sollte auch alles gefunden werden...

    Dein Einrückungs-Stil ist auch nicht wirklich lesbar... du verlierst schnell den Überblick, welches else zu welchem if gehört.

    PHP-Code:
    // Block beginnt
    if (...) {
        
    // Im neuen Block ein Tab eingerückt
        // Startet ein neuer Block, wird wieder eingerückt
        
    if (...) {
            
    // neuer Block, neue Ebene
        
    }
        else {
            
    // else-Zweig auf der gleichen Höhe wie der zugehörige if-Zweig
            // man erkennt gleich, welche Ebenen zusammengehören
        
    }

    // Block endet
    // Hier wieder ausserhalb des Blocks, also wieder die gleiche Ebene wie zu Beginn des Blocks.

    // Variationen bei der Klammersetzung:
    if (...)
      {
        
    // Code
      
    }
    else
      {
        
    // Code
      
    }


    if (..)
    {
        
    // Code
    }
    else 
    {
        
    // Code
    }


    if (...) {
        
    // Code
    } else {
        
    // Code

    Einen Kommentar schreiben:


  • Wolla
    antwortet
    Wahrscheinlich ist es besser, wenn du auf eine Checkbox 'alle' verzichtest, sondern statt dessen den Wert "alle" an den Anfang der Kategorie-Selectboxen stellst.

    Einen Kommentar schreiben:

Lädt...
X