mySQL und PHP, wie lese ich am besten aus...
Marc
- datenbank
0 Christian Seiler0 Marc
Hallo,
ich habe folgendes Problem. Ich weiss immer noch nicht, wie ich am besten per mySQL auslese um das ganze sauber zu haben. Im speziellen geht es nun um folgendes Problem. Ich habe diesen Query zur Abfrage von 100 Kartenfeldern aus einer DB. Die felder sind durch x und y definiert.
SELECT feld FROM karte WHERE x > '$startx' AND x < 'endx' AND y > '$starty' AND y < '$endy'
Wie lese ich das jetzt am besten aus, um auf alle Informationen gut Zugriff zu haben. Am liebsten wäre mir natürlich so etwas wie karte[2][7], die dann die Informationen für das feld 2;7 enthält. Kann mir da jemand helfen?
Marc
Hallo,
SELECT feld FROM karte WHERE x > '$startx' AND x < 'endx' AND y > '$starty' AND y < '$endy'
SELECT feld, x, y FROM karte WHERE x > '$startx' AND x < '$endx' AND y > '$starty' AND y < '$endy' order by x, y
Wie lese ich das jetzt am besten aus, um auf alle Informationen gut Zugriff zu haben. Am liebsten wäre mir natürlich so etwas wie karte[2][7], die dann die Informationen für das feld 2;7 enthält. Kann mir da jemand helfen?
Wenn der SQL-Query-String in $query steht, dann so:
------------------------------ schnipp -----------------------------
$my_result = mysql_query ($query);
if (!$my_result) {
// fehlerbehandlung
}
$karte = array ();
$aktuell_y = array ();
$aktuell_x = -1;
while ($arr = mysql_fetch_array ($my_result)) {
if ($aktuell_x != $arr["x"]) {
if ($aktuell_x != -1) {
$karte[$aktuell_x] = $aktuell_y;
}
$aktuell_y = array ();
$aktuell_x = $arr["x"];
}
$aktuell_y[$arr["y"]] = $arr["feld"];
}
if ($aktuell_x == -1) { // kein Datensatz
// Fehlerbehandlung
}
$karte[$aktuell_x] = $aktuell_y;
unset ($aktuell_y);
unset ($aktuell_x);
------------------------------ schnapp -----------------------------
Grüße,
Christian
Moin,
danke für die prompte Bedienung... Nur irgendwie komme ich noch nicht so recht damit zurecht... im moemt hat das Feld 2;2 den Wert k. Anscheinend werden auch Informationen für das Feld ausgelesen (denn der kein Datensatz Fehler kommt nicht). Trotzdem bekomme ich kein ergebniss ausgegeben. So sieht mein Script zur Zeit aus
-------------------
$query = "SELECT feld FROM karte WHERE x >= '$startx' AND x <= '$endx' AND y >= '$starty' AND y <= '$endy' order by x, y";
echo $query;
$my_result = mysql_query ($query);
if (!$my_result) {
die(mysql_error);
}
$karte = array ();
$aktuell_y = array ();
$aktuell_x = -1;
while ($arr = mysql_fetch_array ($my_result)) {
if ($aktuell_x != $arr["x"]) {
if ($aktuell_x != -1) {
$karte[$aktuell_x] = $aktuell_y;
}
$aktuell_y = array ();
$aktuell_x = $arr["x"];
}
$aktuell_y[$arr["y"]] = $arr["feld"];
}
if ($aktuell_x == -1) { // kein Datensatz
echo "Keine Datensätze";
}
$karte[$aktuell_x] = $aktuell_y;
unset ($aktuell_y);
unset ($aktuell_x);
echo $karte[2][2];
---------------------------
mySQL verbindung steht und so sieht der Query zur Zeit aus:
SELECT feld FROM karte WHERE x >= '1' AND x <= '20' AND y >= '1' AND y <= '20' order by x, y
nur $karte[2][2] gibt nichts zurück...
$query = "SELECT feld FROM [...]
Die im script vorausgesetzten Felder x und y werden nicht geliefert.
Was spricht allerdings gegen...:
$query='SELECT feld,x,y '
.'FROM karte '
.'WHERE ...';
$result=mysql_query($query) or die(mysql_errno().': '.mysql_error());
while($row=mysql_fetch_object($result)) {
$karte[$row->x][$row->y]=$row->feld;
}
... oder habe ich die Aufgabenstellung nicht ganz verstanden?!
jepp, genau dies war die Aufgabenstellung :) Dank, so kurz und prägnant hätte ich das wohl nie hinbekommen 8ich muss noch viel üben)
Marc
Hallo,
while($row=mysql_fetch_object($result)) {
$karte[$row->x][$row->y]=$row->feld;
}
... oder habe ich die Aufgabenstellung nicht ganz verstanden?!
Hopppla. Da hab' ich wohl um 3 Ecken gedacht. Betriebsblindheit.
Grüße,
Christian