Thomas: Mehrdimensionales Array aus MySQL DB in PHP

hallo!

ich bin am verzweifeln. ich habe eine normale mysql tabelle ("test"). diese tabelle besteht aus z.b. 5 spalten.

ich benötige nun diese tabelle komplett in einer php seite, weil je nach wert der zellen unterschiedliche grafiken in einer tabelle dargestellt werden. soweit so gut.

wie bekomme ich nun diese tabelle in ein php-array?

ich möchte die tabelle (etwa 50 datensätze) per schleife einlesen.

im prinzip sollte es am ende so aussehen:

z.b.
$name = test[14]["name"];
...für die strassenangabe in record 14

oder

$strasse = test[27]["strasse"];
...für die strassenangabe in record 28

mir ist zwar klar, daß es theoretisch so gehen müßte:

test = Array(
 array(id => $myrow["id"],name => $myrow["strasse"],plz => $myrow["plz"],farbe => $myrow["farbe"], miete => $myrow["miete"])
);

test[0]["id"]?
oder
test[14]["name"]

ich schaffe aber irgendwie das schleifenkonstrukt nicht.

while ($myrow = mysql_fetch_array($result))

DAS HIER IST FALSCH:
test = Array(
 array(id => $myrow["id"],name => $myrow["strasse"],plz => $myrow["plz"],farbe => $myrow["farbe"], miete => $myrow["miete"])
);

}

wäre echt nett, wenn mir mal jemand helfen könnte, weil ich an den arrays echt verzweifle. im prinzip fehlt mir ja nur ein laufindex um soetwas wie test[laufindex]["feldname"] realisieren zu können. oder

vielen vielen dank!!!

gruss thomas

  1. Holladiewaldfee,

    ganz einfach:

    $test = array();
    while($x = mysql_fetch_array($was_auch_immer))
     $test[] = $x;

    Ciao,

    Harry

    --
      Intelligenz ist nicht zwingend etwas positives.
      Man weiß erst, was man hatte, wenn man es verloren hat.
    1. Hallo Harry,

      $test = array();
      while($x = mysql_fetch_array($was_auch_immer))
       $test[] = $x;

      *grmpf* da hätte ich auch darauf kommen sollen - sowas habe ich schließlich selbst schon gemacht :-)
      Die Sache hat nur einen klitzekleinen Haken - der Array enthält jeden Wert zweimal - einmal den Spaltennamen (bzw. dem Alias) und einmal einen numerischen Schlüssel - was aber bei 50 Datensätzen ziemlich egal sein dürfte :-)

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      1. Holladiewaldfee,

        *grmpf* da hätte ich auch darauf kommen sollen - sowas habe ich schließlich selbst schon gemacht :-)
        Die Sache hat nur einen klitzekleinen Haken - der Array enthält jeden Wert zweimal - einmal den Spaltennamen (bzw. dem Alias) und einmal einen numerischen Schlüssel

        In diesem Fall empfiehlt es sich, den zweiten Parameter für mysql_fetch_array anzugeben. Sollte man eigentlich eh immer ...

        while($x = mysql_fetch_array($was_auch_immer, MYSQL_ASSOC))

        Ciao,

        Harry

        --
          Intelligenz ist nicht zwingend etwas positives.
          Man weiß erst, was man hatte, wenn man es verloren hat.
        1. Hallo Harry,

          Die Sache hat nur einen klitzekleinen Haken - der Array enthält jeden Wert zweimal - einmal den Spaltennamen (bzw. dem Alias) und einmal einen numerischen Schlüssel
          In diesem Fall empfiehlt es sich, den zweiten Parameter für mysql_fetch_array anzugeben.

          oder mysql_fetch_assoc() zu verwenden :-)

          Sollte man eigentlich eh immer ...

          ähh... warum?

          Grüße aus Nürnberg
          Tobias

          --
          Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  2. Hallo Thomas,

    while ($myrow = mysql_fetch_array($result))

    du du könntest auch mysql_fetch_assoc() nehmen, aber mit ..._array() sollte es genauso funktionieren.

    test = Array(

    vor Variablennamen gehören immernoch $-Zeichen...

    array(id => $myrow["id"],name => $myrow["strasse"],plz => $myrow["plz"],farbe => $myrow["farbe"], miete => $myrow["miete"])

    der Versuch ist schonmal nicht schlecht, mit zwei verschachtelten Array(...) geht das nicht (außerdem musst du um die Schlüssel (id, name, plz usw.) Anführungszeichen machen), aber das:
    $test[] = array('id' => $myrow['id'], ..., 'miete' => $myrow['miete']);
    sollte funktionieren (evtl. mit print_r($test) nachschauen, was in dem Array $test dann drinsteht)

    wäre echt nett, wenn mir mal jemand helfen könnte, weil ich an den arrays echt verzweifle. im prinzip fehlt mir ja nur ein laufindex um soetwas wie test[laufindex]["feldname"] realisieren zu können.

    schau dir mal http://de2.php.net/language.types.array an, das dürfte dir helfen.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|