snoot: Ausgabe aus MySQL-DB mit Array (multiple select)

Hio,

wenn ich eine multiple-select-Box habe (<select multiple="multiple" name="selectbox[]">) werden ja alle ausgewählten Werte als Array gespeichert.

Wie bekomme ich nun alles das, was im Array gespeichert wurde aus der Datenbank? Muss ich das wirklich über eine Schleife machen:

  
foreach($selectbox as $select)  
{  
  $abfrage = "SELECT stick FROM usb WHERE herst = '$select'";  
  $abfrage = mysql_query($abfrage);  
  while($row = mysql_fetch_object($abfrage))  
  {  
    echo $row->stick . "<br>";  
  }  
}  

  1. Hi,

    Wie bekomme ich nun alles das, was im Array gespeichert wurde aus der Datenbank?

    In dem du den IN()-Operator nutzt.

    Muss ich das wirklich über eine Schleife machen

    Himmel, nein - Datenbankabfragen in Schleifen sind fast immer blödsinnig.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Hi,

      »» Wie bekomme ich nun alles das, was im Array gespeichert wurde aus der Datenbank?

      In dem du den IN()-Operator nutzt.

      Hm, versteh nicht genau, wie das funktionieren soll. So vielleicht?

        $abfrage = "SELECT stick FROM usb WHERE herst IN '$selectbox'";  
        $abfrage = mysql_query($abfrage);  
        while($row = mysql_fetch_object($abfrage))  
        {  
          echo $row->stick . "<br>";  
        }  
      
      

      Aber das liefert mir nur: "Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource" (auch mit row/assoc/array etc.).

      1. Hi,

        In dem du den IN()-Operator nutzt.

        Hm, versteh nicht genau, wie das funktionieren soll.

        Die Syntax siehst du auf der Seite.

        So vielleicht?

        $abfrage = "SELECT stick FROM usb WHERE herst IN '$selectbox'";

        Nein.

        Schreibe zunächst die Abfrage mit ein paar Beispielwerten von Hand, teste sie.
        Überlege dir dann, wie du eine Anfrage mit dynamischen Werten erstellst, die dem Schema entspricht.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. Die Syntax siehst du auf der Seite.

          Nur das da nirgends Arrays vorkommen ;)

          Wenn ich Klammern setze kommt zumindest kein Fehler, aber ausgegeben wird mir auch nichts.

            
            $selectbox = array("Sony", "Verbatim", "Corsair");  
            
            # optional  
            # $selectbox = implode(",", $selectbox);  
            
            $abfrage = "SELECT stick FROM usb WHERE herst IN ('$selectbox')";  
            $abfrage = mysql_query($abfrage);  
            while($row = mysql_fetch_object($abfrage))  
            {  
              echo $row->stick . "<br>";  
            }  
          
          
          1. Hi,

            Die Syntax siehst du auf der Seite.

            Nur das da nirgends Arrays vorkommen ;)

            Natürlich nicht - MySQL interessiert sich nicht dafür, welche Datenstruktur du in deinem PHP-Script zur Vorbereitung einer Query nutzt.

            Wenn ich Klammern setze kommt zumindest kein Fehler, aber ausgegeben wird mir auch nichts.

            $selectbox = array("Sony", "Verbatim", "Corsair");

            # optional
              # $selectbox = implode(",", $selectbox);

            Wieso optional?

            (Maßnahmen zur Verhinderung von SQL-Injection sind übrigens auch nicht optional, fehlen hier aber vermutlich trotzdem.)

            $abfrage = "SELECT stick FROM usb WHERE herst IN ('$selectbox')";

            Und als du diese Query zur Kontrolle ausgegeben hat, entsprach sie dem, was du dir vorgestellt hast?

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. Wieso optional?

              Testweise - mal so, mal so. Klappt aber beides nicht. Kein Fehler, keinerlei Ausgabe.

              (Maßnahmen zur Verhinderung von SQL-Injection sind übrigens auch nicht optional, fehlen hier aber vermutlich trotzdem.)

              Brauchts hier nicht, weil das ein interner Bereich ist, wo nur ich dran bastel - außerdem bringt mir Sicherheit auch nichts, solange das Script nicht so läuft wie es soll.

              »»   $abfrage = "SELECT stick FROM usb WHERE herst IN ('$selectbox')";

              Und als du diese Query zur Kontrolle ausgegeben hat, entsprach sie dem, was du dir vorgestellt hast?

              Vermutlich nicht, Weil ich das bekomme: SELECT * FROM usb WHERE hersteller IN ('Sony,Verbatim,Corsair')

              1. Hi,

                Und als du diese Query zur Kontrolle ausgegeben hat, entsprach sie dem, was du dir vorgestellt hast?

                Vermutlich nicht, Weil ich das bekomme: SELECT * FROM usb WHERE hersteller IN ('Sony,Verbatim,Corsair')

                Da hast du genau *einen* String-Wert notiert - und der wird vermutlich so nicht in der Datenbank stehen.

                Also, wie müsste das richtig aussehen?
                Das erst überlegen, und dann, wie man es per PHP dynamisch erzeugt.

                MfG ChrisB

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
              2. Okay, ich habs. 2 Stunden um den heißen Brei geredet, liefert mir Google endlich was ich suche.

                Vielen Dank trotzdem :)

                1. Hallo,

                  Okay, ich habs. 2 Stunden um den heißen Brei geredet, liefert mir Google endlich was ich suche.

                  und wieso Google?
                  Das MySQL-Handbuch, von dem ChrisB dir sogar schon das passende Kapitel verlinkt hat, hätte dir das schon vor drei Stunden verraten.
                  Zitat #231

                  So long,
                   Martin

                  --
                  Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
                  1. und wieso Google?

                    Weil da in einem Satz genau steht, was ich mit dem array anstellen soll :D

                  2. War auch nicht böse gemeint.

                    Mir hilft es nur einfach mehr, wenn mir jemand einfach die Lösung verraten kann. Dann wäre ich vor 3 Stunden da gewesen, wo ich jetzt bin.

                    Eine mehr oder weniger selbst erarbeitete Lösung ist ja schon und gut - wenn ich das nächste mal was in PHP mache (vielleicht in 8-10 Monaten für 1-2 Tage), dann weiß ich das aber auch nicht mehr und komme mit einer kurzen Antwort einfach schneller ans Ziel.

                    1. Hi,

                      Mir hilft es nur einfach mehr, wenn mir jemand einfach die Lösung verraten kann. Dann wäre ich vor 3 Stunden da gewesen, wo ich jetzt bin.

                      Wenn du lernst, Lösungen selbst zu entwickeln, brauchst du für sowas nicht drei Stunden, sondern drei Minuten.

                      MfG ChrisB

                      --
                      Light travels faster than sound - that's why most people appear bright until you hear them speak.
                    2. hi,

                      Mir hilft es nur einfach mehr, wenn mir jemand einfach die Lösung verraten kann. Dann wäre ich vor 3 Stunden da gewesen, wo ich jetzt bin.

                      Du bist hier in einer Selbsthilfegruppe, keiner Codefabrik.

                      Wenn du nachweisen kannst (mit Bspw. vielen Glaubhaften Code-Beispielen), kann es passieren, dass jemand dir eine Fertige Lösung liefert, aber mit einem „lass mal Code rüberwachsen, zum lernen keine Zeit“ kommst du hier nicht weit.

                      mfg

                      --
                      echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
                      array(2) {
                        ["SELFCODE"]=>
                        string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
                        ["Meaningful"]=>
                        string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
                      }