Mailinglisten-Archive |
Hallo Michael, Michael Borchers wrote: > $table_array = array(); > > while($table_row = mysql_fetch_array($this->db_result)) > { > foreach($this->mysql_num_fields_array as $field) > { > $table_array[][$field] = $table_row[$field]; > } > } Wie soll denn das $table_array am Ende aussehen? Assoziativ mit Feldnamen oder indiziert mit Feldnummern? Laut Handbuch zu mysql_fetch_array: "mysql_fetch_array() ist eine erweiterte Version von mysql_fetch_row(). Die Daten werden sowohl unter numerischen Indizes des Ergebnis-Arrays abgelegt, als auch unter assoziativen Indizes. Als Schlüssel für die assoziativen Indizes werden die Feldnamen benutzt." "Das optionale zweite Argument Ergebnistyp in mysql_fetch_array() ist eine Konstante und kann die folgenden Werte annehmen: MYSQL_ASSOC, MYSQL_NUM und MYSQL_BOTH. Diese Eigenschaft steht seit PHP 3.0.7 zur Verfügung. MYSQL_BOTH ist der Standard für diesen Paramater." Da MYSQL_BOTH als Standard definiert ist, wird $table_row folglich beide Schlüsseltypen enthalten und eignet sich daher noch nicht zur direkten Übernahme. Vorschlag von mir: $table_array = array(); while($table_row = mysql_fetch_array($this->db_result)) { /* lass dir zur Kontrolle und damit du ein Gefühl für den Inhalt des Arrays bekommst dieses mal ausgeben */ echo '<pre>'; print_r($table_row); echo </pre>'; $row = array(); // eigenes Array für die endgültige Zeile foreach($this->mysql_num_fields_array as $field) { $row[$field] = $table_row[$field]; // je Zeile ein Array aufbauen } $table_array[] = $row; // die Zeile hinten an das $table_array anhängen } Falls du den Parameter MYSQL_ASSOC verwendest könntest du die $table_row direkt übernehmen, ohne die Fields extra anzufassen. $table_array = array(); while($table_row = mysql_fetch_array($this->db_result)) { $table_array[] = $table_row; // die Zeile hinten an das $table_array anhängen } > Wie genau entsteht dieser Fehler?! In deinem fehlerhaften Verständnis der kurzen Schreibweise von $array[] = 'foo'; > $table_array[][$field] = $table_row[$field]; Schau mal mit print_r in das Array $table_array bei jedem Durchlauf. Du fügst an dieses Array nicht nur je MySQL-Zeile einen neuen Eintrag hinten an, sondern auch noch je Spalte. Als Ergebnis sieht dein Array dann wohl so aus: $table_row[0]['Vorname'] = 'Max'; $table_row[1]['Nachname'] = 'Mustermann'; $table_row[2]['Alter'] = '40'; $table_row[3]['Anrede'] = 'Herr'; $table_row[4]['Vorname'] = 'Mario'; $table_row[5]['Nachname'] = 'Müller'; $table_row[6]['Alter'] = '30'; $table_row[7]['Anrede'] = 'Herr'; Ich nehme aber an, dass du eher folgendes planst: $table_row[0]['Vorname'] = 'Max'; $table_row[0]['Nachname'] = 'Mustermann'; $table_row[0]['Alter'] = '40'; $table_row[0]['Anrede'] = 'Herr'; $table_row[1]['Vorname'] = 'Mario'; $table_row[1]['Nachname'] = 'Müller'; $table_row[1]['Alter'] = '30'; $table_row[1]['Anrede'] = 'Herr'; regards, Ringo
php::bar PHP Wiki - Listenarchive