carsten schlichting: array assoziativ und multidimensional

hallo

versuche gerade aus einer datenbank auszulesen und habe mehrere Zeilen als Ergebnis.

wenn ich jetzt die daten so auslese:

$dsatz=mysql_fetch_array(mysql_querry(....))

kann ich ja folgendermaßen an die werte kommen:

$foo  =$dsatz['spaltennamen']

sind in diesem array jetzt alle zeilen der select_Anfrgae enthalten?

so dass ich an die  mit z.B.
$foo  =$dsatz['spaltennamen'][2] rankommen würde. Hier wärs die wahrscheinlich die 3. Zeile.

und $foo  =$dsatz['spaltenname'] wahrscheinlich die zeile O bzw. die erste.

stimmt das , oder wird nur eine Zeile ausgegeben?

grüße von mir

carsten

http://de3.php.net/manual/de/language.types.array.php

  1. N'Abend,

    $dsatz=mysql_fetch_array(mysql_querry(....))

    Von dem Tippfehler und der sehr heiklen Verschachtelung (keine Fehlerbehandlung...) mal abgesehen ist $dsatz genau ein Datensatz. Wenn du alle willst musst du mit einer Schleife darüber iterieren...

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
  2. Hallo carsten,

    wenn du die PHP-Dokumentation zur Funktion mysql_fetch_array() liest, solltest du schnell zu deiner Antwort kommen.
    Spätestens die while-Schleife im ersten Codebeispiel müsste dir auffallen.

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. hallo

      Spätestens die while-Schleife im ersten Codebeispiel müsste dir auffallen.

      das sieht ganz schön kompliziert aus. sprintf()kapier ich gerade noch nicht so.

      wie kann ich denn ganz einfach  z. B. die daten der 3. zeile des select_Ergebnisses herauslesen?

      grüße von mir

      carsten

      1. hi,

        Spätestens die while-Schleife im ersten Codebeispiel müsste dir auffallen.

        das sieht ganz schön kompliziert aus. sprintf()kapier ich gerade noch nicht so.

        Toller Blick für's Wesentliche *g*
        An diesem Beispiel ist sicher nicht das sprintf() das wesentliche, sondern die Verarbeitung mehrerer Datensätze hintereinander mittels while().

        wie kann ich denn ganz einfach  z. B. die daten der 3. zeile des select_Ergebnisses herauslesen?

        Du könntest mittels mysql_data_seek() den Zeiger im Ergebnisdatensatz entsprechend positionieren, und dann auslesen (mittels mysql_fetch_...).
        Aber das willst du vermutlich gar nicht. Denn wenn dich ausschließlich der dritte Datensatz interessieren würde, dann hättest du als halbwegs logisch denkender Mensch ja gleich nur diesen von der DB auslesen lassen.
        Wenn du aber alle Sätze, die zurückgeliefert wurden, auswerten willst - dann ist idR. eine Schleife genau dein Mittel der Wahl. while() bietet sich oftmals an, ist aber natürlich nicht die einzige Möglichkeit.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          Du könntest mittels mysql_data_seek() den Zeiger im Ergebnisdatensatz entsprechend positionieren

          Fataler Schreibfehler:
          natürlich nicht im Ergebnisdatensatz, sondern im Ergebnis-Set.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
        2. Hi

          Du könntest mittels mysql_data_seek() den Zeiger im Ergebnisdatensatz entsprechend positionieren, und dann auslesen (mittels mysql_fetch_...).

          weiß du zufällig ob man den befehl auch mit mysql_fetch_assoc() benutzen kann?

          liebe Grüße

          carsten

          1. hi,

            Du könntest mittels mysql_data_seek() den Zeiger im Ergebnisdatensatz entsprechend positionieren, und dann auslesen (mittels mysql_fetch_...).

            weiß du zufällig ob man den befehl auch mit mysql_fetch_assoc() benutzen kann?

            *seufz*

            Wofür schrieb ich wohl extra "mysql_fetch_..."?

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi

              also danke

              jetzt habe ich  noch eine Frage, und ich stell sie einfach mal, vielleicht weißt du ja was.

              gibt es eigentlich einen vorgefertigten Befehl der es ermöglicht einen mulidimensionalen array bei jedem aufrufen des scripts eine zeile weiter auszugeben und das wichtigeste wär halt, das wenn man am ende angekommen ist, man wieder automatisch zu ersten zeile kommt. multidimensional ist gar nicht so wichtig, aber dass automatisch am Ende auf null gesprungen wird.

              bisher habe ich das so gelöst, das ich einen zähler in der session abgelegt habe, der mitzählt. aber man muß ihn immer von der ergeniss_menge abhängigmachen. Und am ende und am anfang wieder durch code springen lassen.

              weiß du da zufällig irgendwas Vorgefertigtes

              grüße von mir

              carsten

              1. hi,

                gibt es eigentlich einen vorgefertigten Befehl der es ermöglicht einen mulidimensionalen array bei jedem aufrufen des scripts eine zeile weiter auszugeben

                Eine foreach()-Schleife beispielsweise hilft dabei.

                und das wichtigeste wär halt, das wenn man am ende angekommen ist, man wieder automatisch zu ersten zeile kommt.

                Niemand hindert dich daran, den Array-Zeiger wieder zurückzusetzen (mit welcher Funktion, findest du jetzt aber bitte mal selber raus).

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
              2. OK

                hier habe ich was gefunden:

                http://de3.php.net/manual/de/function.each.php

                aber automatisch zurückstellen tun die funktionen hier leider nicht. aber dafür reset().

                also grüße

                carsten

      2. hallo noch ein nachtrag:http://de3.php.net/manual/de/function.mysql-fetch-row.php

        function mysql_fetch_all($result) {
           while($row=mysql_fetch_array($result)) {
               $return[] = $row;
           }
           return $return;
        }

        wie les ich denn hier die Ergebnisse aus $return aus.

        $return wird wohl das multidimensionale array sein , was ich suche.

        ungefähr so:?  $return['spaltenname'][2] für die 3. zeile?

        grüße von mir carsten

        1. hi,

          ungefähr so:?  $return['spaltenname'][2] für die 3. zeile?

          Nein, natürlich nicht - sondern genau andersherum.

          Wenn du dir solch ein Array mal mit print_r() zur Analyse anschaust, wirst du verstehen ...

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. N'abend...

            Wenn du dir solch ein Array mal mit print_r() zur Analyse anschaust, wirst du verstehen ...

            ... oder dir überlegst, wie du es zusammengebaut hast:
            Du hast #Datensätze mal ein Array der Form Spaltenname1|Spaltenname2|...  genommen und in ein neues Array hintereinander geschrieben. Genau so musst du sie jetzt auch wieder rausholen, erste das äußere Array (Zeilen), dann das innere (Spalten)...

            MfG
            Rouven

            --
            -------------------
            ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(