Ankündigung

Einklappen
Keine Ankündigung bisher.

Select aus DB nach einem Array einer Merhfachauswahl einer Selectbox

Einklappen

Neue Werbung 2019

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

  • Select aus DB nach einem Array einer Merhfachauswahl einer Selectbox

    Hallo Leute,

    ich hoffe mal der Titel ist gut gewählt.

    Ich habe also eine multiple Selectbox und in der stehen die verschiedensten Staedte drin. So nun kann man in deiser multiplen Selectbox mehrere Städte auswählen und ich will nun aus einer Benutzertabelle der Datenbank alle Datensätze selectieren die da in dem Array stehen.

    Mein Versuch ging aber voll in die Hose.

    Hier mal mein PHP Code

    PHP-Code:
    if(isset($_POST['save_nl'])){
        
        
    //prüfen welche empfängergruppe gewählt wurde
        
    if($_POST['wahl'] == 1){
            
            
    //sql string ohne where clausel
            
    $selectEmfaenger "
                                Select
                                    id,
                                    email,
                                    ort
                                From
                                    tabelle
                                "
    ;
                                
            if(
    $_POST['stadt'] != "std_leer"){
                
                if(
    is_array($_POST['stadt'])){
                    
                    
    //versuch daten anhand des multiplen arrays auszulesen schlug fehl
                    /*foreach($_POST['stadt'] as $stdKey => $sdtValue){
                        
                        $selectEmfaenger.="
                                            Where
                                                ort = '".mysql_real_escape_string($sdtValue)."'
                                            ";
                        $selectEmfaengerQuery = $db->dbQuery($selectEmfaenger);
                    
                        while ($selectEmfaengerFetch = $db->dbFetch($selectEmfaengerQuery)){
                            
                            echo $selectEmfaengerFetch['ort'].'<br>';
                        }                
                        
                    }*/
                    //array ist wie erwartet , print_r($_POST['stadt']);
                
    }
            }
            
        }

    Könnt ihr mir vieleicht weiter helfen wie ich Datensätze anhand von Arraywerten in der Where Clausel abfragen kann?

    Vielen Dank für eure Hilfe. Mfg litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    [URL]http://www.lit-web.de[/URL]

  • #2
    Was genau funktioniert denn nicht? Wie sieht die Ausgabe aus?
    [URL]http://hallophp.de[/URL]

    Kommentar


    • #3
      Vorgehen:
      Du machst dir zunächst klar, welchen SQL-Code du in den einzelnen zu berücksichtigen Spezialfällen jeweils erstellen willst. (Die Spezialfälle hast du sicher schon identifiziert?)
      Und dann - machst du per PHP dynamisch genau das.


      FYI: Für mehrere OR-verknüpfte Gleichheits-Abfragen auf den Inhalt einer Spalte bietet sich der IN-Operator oftmals an.
      [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

      Kommentar


      • #4
        Danke ich habe mir das mal durchgelesen und versucht anzuwenden.

        Mein code.

        PHP-Code:
        if(is_array($_POST['stadt'])){
                        
                        
        $selectEmfaenger.="Where ort IN(";
                        
                        foreach(
        $_POST['stadt'] as $stdKey => $sdtValue){
                            
                            
        mysql_real_escape_string($sdtValue);
                        }
                        
                        
        $selectEmfaenger.=")";
                        
                        
        $selectEmfaengerQuery $db->dbQuery($selectEmfaenger);
                        
                        while (
        $selectEmfaengerFetch $db->dbFetch($selectEmfaengerQuery)){
                                
                            echo 
        $selectEmfaengerFetch['ort'].'<br>';
                        }
                        
                        
        //print_r($_POST['stadt']);
                        
                        //echo $_POST['stadt'][0];
                    

        Und meine Fehlermeldung die ich dann bekomme.

        Code:
        Fatal error:  Uncaught exception 'Exception' with message 'Query  konnte nicht ausgef�hrt werden! <br /> 							Select 								id, 								email, 								ort 							From 								lp_jobpersonal 							Where ort IN()' in  /homepages/38/d270326037/htdocs/libphp/classes/DbAdapter/DbAdaptClass.php:82 Stack  trace: #0 /homepages/38/d270326037/htdocs/admin/adminNewsletter.php(46):  DbAdaptClass->dbQuery('????????Select?...') #1 {main}   thrown in /homepages/38/d270326037/htdocs/libphp/classes/DbAdapter/DbAdaptClass.php  on line 82
        Die Exception wird geworfen da der Query eben nicht ausgeführt werden konnte. Das heist ich mache da bei der Anwendung des IN Operators was falsch, aber was?

        Danke für die Hilfe
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        [URL]http://www.lit-web.de[/URL]

        Kommentar


        • #5
          Die Werte müssen durch ein Komma getrennt sein. Außerdem fehlt überhaupt eine Zuweisung der Orte zur Abfrage.
          Code:
          mysql_real_escape_string($sdtValue); // fehlende Zuweisung
          [URL]http://hallophp.de[/URL]

          Kommentar


          • #6
            Zitat von litterauspirna Beitrag anzeigen
            Das heist ich mache da bei der Anwendung des IN Operators was falsch, aber was?
            Du machst vor allem etwas falsch, in dem du diese Frage so naiv hier in den Raum stellst, ohne vorher offenbar mal so grundlegende Debugging-Schritte wie die Kontrollausgabe der dynamisch generierten Query gemacht zu haben.

            Und mit deiner Anzahl an Beiträgen hier solltest du das inzwischen eigentlich besser wissen!
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #7
              Zitat von ChrisB Beitrag anzeigen
              Du machst vor allem etwas falsch, in dem du diese Frage so naiv hier in den Raum stellst, ohne vorher offenbar mal so grundlegende Debugging-Schritte wie die Kontrollausgabe der dynamisch generierten Query gemacht zu haben.

              Und mit deiner Anzahl an Beiträgen hier solltest du das inzwischen eigentlich besser wissen!

              Sorry scheint heute nicht richtig mein Tag zu sein.

              Natürlich habe ich ein Ausgabe gemacht, leider vergessen das mit zu posten.

              Select id, email, ort tabelle From Where ort IN()

              So da ist also nichts drin in der Klammer hinter dem IN Operator. Was ich aber nicht wirklich verstehe weil Daten in dem Array drin sind.
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #8
                Zitat von litterauspirna Beitrag anzeigen
                So da ist also nichts drin in der Klammer hinter dem IN Operator. Was ich aber nicht wirklich verstehe weil Daten in dem Array drin sind.
                Und wo, an welcher Stelle in diesem Code:
                PHP-Code:
                                $selectEmfaenger.="Where ort IN(";
                                
                                foreach(
                $_POST['stadt'] as $stdKey => $sdtValue){
                                    
                                    
                mysql_real_escape_string($sdtValue);
                                }
                                
                                
                $selectEmfaenger.=")"
                sollen die Inhalte aus dem Array sich in die Query, die du gerade in $selectEmfaenger zusammensetzt, hineingemogelt haben ...?

                Innerhalb der foreach-Schleife, mit der du das Array durchläufst, fügst du ja nichts an $selectEmfaenger hinzu.
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar


                • #9
                  Sicher das der Query passt?
                  Code:
                  Select id, email, ort tabelle From Where ort IN()

                  Kommentar

                  Lädt...
                  X