Der-Dennis: Kleines Logisches/Syntax Problem

Beitrag lesen

Hallo Jo,

$i = 1;
$query = "SELECT `Tab1`.`Wert1`,`Tab1`.`Wert2`,`Tab2`.`Wert3` FROM `Tab1` LEFT JOIN `Tab1` ON (`Tab2`.`var`=`Tab1`.`var`) WHERE `Tab1`.`var`=$i";
$result = mysql_query($query);

echo '<table border="1">';
while ($arr = mysql_fetch_array($result))
{
        echo "<tr>";
        echo "<td>". $arr['wert1'] . "</td>";
        echo "<td>". $arr['wert2'] . "</td>";
        echo "<td>". $arr['wert3'] . "</td>";
        echo "</tr>";
}
echo "</table>";
echo '</br>';
echo '<table border="1">';

Soweit zur Ausgabe. Aber die braucht man ja nicht immer, wie krieg ich das in ein mehrdimensionales Array

Welche Form soll denn Dein "mehrdimensionales Array" haben?

Grundsätzlich kannst Du Dir vorstellen, dass $result bereits ein "mehrdimensionales Array" ist. Mit Hilfe von mysql_fetch_array() & Co kannst Du dann auf dieses Array zugreifen. Jedesmal wenn Du die Funktion aufrufst bekommst Du den nächsten Datensatz (also sozusagen den nächsten Eintrag im "mehrdimensionalen Array").

Direkt alle Datensätze in einem Array auszugeben ist meines Wissens nach mit den MySQL-Funktionen nicht möglich, mit MySQLi (s.u.) sollte es gehen.

Wenn Du alle Datensätze in einem "richtigen" Array haben willst, musst Du es Dir (bei Verwendung der MySQL-Funktionen) selbst zusammenbauen.

Oder suchst Du so etwas wie den Gruppenwechsel?

An alle: Haben wir im Wiki schon einen Artikel zum Gruppenwechsel?

bei dem ich jeden Wert (Float) einzeln ansprechen kann?

Du kannst auch jetzt schon jeden Wert einzeln ansprechen, egal von welchem Datentyp er ist. Was meinst Du damit? Beziehst Du Dich auf Deine Frage aus diesem Post? Zitat:

denn eine ausgabe mit:

echo $arr['wert1'][0];
echo $arr['wert1'][1];
echo $arr['wert1'][2];

zeigt mir jede Stelle eines Floats an als [0]=> zahl, [1]=>. , [2]=>zahl,....

Hier kommt ein bisschen "PHP-Magie" ins Spiel. PHP hat eine automatische Typenumwandlung. Und Strings in PHP wiederum sind ein Array ihrer einzelnen Zeichen. In $arr['wert1'] steht jetzt also beispielsweise 1.23, dann greifst Du mit $arr['wert1'][0] auf ein Array zu. PHP wandelt Deinen Float in einen String um und gibt Dir das erste Zeichen (PHP-Arrays sind nullbasiert), hier 1 zurück.

Denn dann kann ich mich wieder meinem Anfangsproblem witmen... Nachdem ich dann alles auf MySQLi umgeschrieben hab.

MySQLi ist definitiv die bessere Wahl. Wenn Du MySQLi verwendest, kannst Du Dir auch mit mysqli_result::fetch_all direkt ein "mehrdimensionales Array" zurückgeben lassen - falls es das ist, was Du suchst.

Gruß Dennis