Query mit Array?

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

  • Query mit Array?

    Hallo Ihr

    Bin immernoch Anfänger und hab gleich 2 Probleme, natürlich hab ich auch schon die Suchfunktion benützt, aber leider nichts gefunden was mir weiterhilft.

    So jetzt mein Problem:

    Ich habe eine Mysql-Tabelle "zweck" mit Spalten "id", "zweck_de", "zweck_uk".
    und ich habe eine weitere Tabelle "maschinen2" wo es u.a. eine Spalte "zweck" gibt.

    Man kann nun über ein Formular mit Selectboxen mehrer Zwecke auswählen, die dann per implode zu einem Array (bestehend aus den id`s der Tab. "zweck") zusammengefügt und in maschinen2/zweck gespeichert werden.

    Ich frage jetzt als erstes die Tabelle maschinen2 ab mit where id=$id
    so das er mir nur einen Datensatz ausgibt. Das funzt auch soweit.

    Jetzt möchte ich aber die im Array mit "," getrennten ID`s wieder mit zweck_de bzw zweck_uk anzeigen lassen.

    Beispiel:
    Tabelle "zweck"
    id=1 ,
    zweck_de=verwendungszweck1 , zweck_uk=verwendungszweck1_uk

    id=2
    zweck_de=verwendungszweck2 , zweck_uk=verwendungszweck2_uk
    usw...

    Tabelle "maschinen2"
    id=34
    model=NTV75
    zweck= 1, 2, 6, 9, 23, 4 // kann unterschiedlich viele sein
    usw...

    Wie muss die select abfrage geschrieben werden wenn man
    aus den im Array gespeicherten id wieder in Text umwandeln will?

    SELECT * FROM zweck WHERE id='???'

    Problem 2
    Es betrifft wiederum diese beiden Tabellen aber jetzt etwas andersherum.

    Jetzt wird durch ein Link die ID des Zweck übergeben.
    Nun will ich die Tabelle maschinen2 durchsuchen lassen und alle Maschinen anzeigen lassen in deren zweck-Array die id vorkommt.

    Auch hier hab ich keinen blassen Schimmer.
    Ich würde mich freuen wenn mir einer helfen könnte, bzw links zur lösung posten könnte, denn etwas fertiges möchte ich ja gar nicht , denn ich will ja lernen!

    (mein Problem sind glaub ich die Arrays)

    1000. Dank
    Zdek

  • #2
    Re: Query mit Array?

    Original geschrieben von zdek

    Wie muss die select abfrage geschrieben werden wenn man
    aus den im Array gespeicherten id wieder in Text umwandeln will?

    SELECT * FROM zweck WHERE id='???'

    Du hast die id, die Du hier abfragen willst vorher in ein Array geschrieben?
    Dann mach es so:
    PHP-Code:
    $sql="SELECT * FROM zweck WHERE id='".$dein_id_array[die_nummer_deines_arrays]."'"
    Original geschrieben von zdek


    Problem 2
    Es betrifft wiederum diese beiden Tabellen aber jetzt etwas andersherum.

    Jetzt wird durch ein Link die ID des Zweck übergeben.
    Nun will ich die Tabelle maschinen2 durchsuchen lassen und alle Maschinen anzeigen lassen in deren zweck-Array die id vorkommt.
    Da solltest Du Dir evtl. ein besseres Datenbank Layout einfallen lassen.
    Natürlich ist das möglich, aber sehr unkomfortabel...

    Warum stehen die Fahrzeuge nicht so in der DB:
    id=34
    model=NTV75
    zweck= 1

    id=34
    model=NTV75
    zweck= 2

    id=34
    model=NTV75
    zweck= 6

    usw...

    Das würde twas komfortabler sein...

    Kommentar


    • #3
      Zu Problem 2

      Warum stehen die Fahrzeuge nicht so in der DB:
      id=34
      model=NTV75
      zweck= 1
      usw...
      Weil die maschienen mehrere Zwecke haben können.
      Das hab ich mir auch schon überlegt, ob man nicht eine einfachere Datenbank struktur benützen sollte. Doch da die Anzahl der Zwecke erweiterbar sein soll, kann ich keine DB-Tabelle mit festen Zwecken erstellen.

      Zu Problem 1

      PHP-Code:
      $sql="SELECT * FROM zweck WHERE id='".$dein_id_array[die_nummer_deines_arrays]."'"
      Das kann nicht funzen da ich ja nicht weis welche nummer_meines_arrays ich gerade habe. Irgendwie muss man da mit for oder while arbeiten, damit das abgefragt wird.

      Kommentar


      • #4
        Hallo Leute

        Ich habe das selbe Problem!

        Wie muss ich eine Query schreiben wenn ich für die Abfrage die id Werte in einem Array habe, wobei die Anzahl der Array nicht immer gleich gross sind?

        Zur Zeit habe ich die ganze Abfrage in eine foreach Schaufe eingebunden, nur wäre es ************y wenn ich dafür lediglich eine Abfrage starten müsste. Also war meine Überlegung, ob es innerhalb der Query eine ähnliche Möglichkeit wie foreach gibt?

        Um einen Tip wäre ich dankbar.

        Gruz René

        Kommentar


        • #5
          PHP-Code:
          $sql "SELECT ... WHERE id IN ('".implode("', '" $array)."')"

          Kommentar


          • #6
            Danke Dir onemorenerd

            der Weg scheint schon richtig, nur erhalte ich einen Parse error!

            Weshalb das implode? Dient es lediglich dazu um die Array in ein String mit Komma getrennt zu schreiben?

            Wenn ja könnte man diesen Schritt auslassen, da ich zuvor aus dem Zeichensatz (mit Komma) via explode die Array erstellte!

            Ich suche nun nach "IN". Eventuell finde ich es heraus, ansonsten wäre ich Dir um einenen weiteren Tip sehr dankbar.

            Gruss René

            Kommentar


            • #7
              Wenn du es nicht brauchst, lass es weg. Sonst füge das Komma ein, das ich vergessen habe. Sorry!
              PHP-Code:
              implode("', '"$array

              Kommentar


              • #8
                Danke, ja mit dem Komma funktioniert es einwandfrei!

                Nur wenn ich direkt die Variabel einsetzte wird nichts ausgegeben.

                In der variable sind die ID bereits mit Komma getrennt.

                PHP-Code:
                id IN '$variable' 
                Das macht doch keinen Sinn? Es müsste doch auch ohne implode richtig funktionieren?

                Kommentar


                • #9
                  Ohne die Klammern wirds auch nichts.
                  Lies dir http://dev.mysql.com/doc/refman/5.0/...ubqueries.html durch!

                  Kommentar


                  • #10
                    vielen Dank

                    Kommentar

                    Lädt...
                    X