1. Schritte mit Datenbank und schon ein Problem
palme
- php
Hallo,
ich habe jtzt meine ersten Schritte in Sachen Datenbankerstellung im Zusammenhang mit PHP gewagt, und habe gleich zu Anfang schon mal ein Problem, bei dem mir hoffentlich jemand helfen kann:
Ich habe eine kleine Datenbank mit Access erstellt (3 Zeilen, 7 Spalten), wobei ja die erste Spalte die Datensatznummer darstellt.
Wenn ich nun diese Datenbank pe PHP ausgeben lasse, werden die Daten aber nicht so ausgegeben, wie sie in der Datenbank eingegeben sind.
Bei mir ist die Ausgabe so, dass der 1. Datensatz als 2. angezeigt wird, der 2. Datensatz als 3. angezeigt, und der 3. Datensatz als 1. angezeigt wird.
Hier mein Quelltext (mal ohne Doctype usw.):
<?php
$ODBC_name = "adressen";
$benutzer = "peter";
$passwort = "geheim";
$SQLstring = "SELECT * FROM adressen";
$quelle = odbc_connect("$ODBC_name", "$benutzer", "$passwort");
$ergebnis = odbc_exec($quelle, $SQLstring);
$satznr = 1;
while (odbc_fetch_row($ergebnis, $satznr))
{
echo odbc_result($ergebnis, 2) , " "; /*Name*/
echo odbc_result($ergebnis, 3) , ", "; /*Vorname*/
echo odbc_result($ergebnis, 4) , " "; /*Strasse*/
echo odbc_result($ergebnis, 5) , ", "; /*Hausnummer*/
echo odbc_result($ergebnis, 6) , " "; /*PLZ*/
echo odbc_result($ergebnis, 7) , "<br>"; /*Ort*/
$satznr++;
}
?>
Warum ist dass so?
Wie kann ich dem abhelfen?
PS: Der HTML-Code in den echo-Befehlen, dient lediglich dazu, die Ausgabe etwas übersichtlicher zu gestalten, bestimmt geht's auch anders (auch die Datenbankabfrage), aber soweit bin ich nich nicht, ich möchte eigentlich nur wissen, warum die Daten nicht in der Reihenfolge ausgegeben werden, wie sie in der Datenbank eingegeben wurden!
Ob Access jetzt gut ist zur Verwendung als Datenbank, möchte ich jetzt bitte mal nicht hier ausdiskutiert haben, es sei denn, es hat direkt was mit dem obigen Problem zu tun, ich habe Access lediglich benutzt, um meine ersten Schritte in Sachen Datenbanken zu unternehmen, da ich es eben sowieso installiert habe.
MfG
Palme
Wenn ich nun diese Datenbank pe PHP ausgeben lasse, werden die Daten aber nicht so ausgegeben, wie sie in der Datenbank eingegeben sind.
Warum ist dass so?
Hi Palme,
weil Du der Datenbank nicht mitgeteilt hast, in welcher Reihenfolge Du die Sätze der Ergebnismenge haben möchtest. Wenn Deine erste Spalte zum Beispiel "id" heißt, dann könnte Dein Select so aussehen:
$SQLstring = "SELECT * FROM adressen ORDER BY id;";
HTH Robert
weil Du der Datenbank nicht mitgeteilt hast, in welcher Reihenfolge Du die Sätze der Ergebnismenge haben möchtest. Wenn Deine erste Spalte zum Beispiel "id" heißt, dann könnte Dein Select so aussehen:
$SQLstring = "SELECT * FROM adressen ORDER BY id;";
Hallo,
PHP liest meine Datenbank also einfach wild durcheinander aus, wie es PHP gerade passt, oder wonach richtet sich PHP?
Grüße
Palme
PHP liest meine Datenbank also einfach wild durcheinander aus, wie es PHP gerade passt, oder wonach richtet sich PHP?
Hallo Palme,
PHP hat damit nichts zu tun. Ein Teil der SQL-Maschine, der Optimierer, legt für sich selbst fest, wie eine Abfrage ausgeführt wird. Den Optimierungsvorgang kannst Du nicht von Außen steuern. Steuern kannst Du aber die Gestalt der Ergebnismenge; in Deinem Fall zum Beispiel eine bestimmte Reihenfolge. Wenn Du im SELECT ohne Angabe weiterer Klauseln den Wunsch äußerst, alle Datensätze zurückzubekommen, dann bekommst Du alle Datensätze zurück - in der vom Optimierer vorgegebenen Reihenfolge.
Ich kenne mich mit MySQL nicht aus, aber in der Regel kannst Du dich auch auf diese vermeintlich zufällige Reihenfolge nicht verlassen, sie ist über die Zeit nicht notwendigerweise konstant.
Wenn Du also ein bestimmtes Ergebnis haben möchtest, dann mußt Du die Abfrage entsprechend formulieren.
HTH Robert
Hallo Robert,
Danke für deine Hilfe, es klappt jetzt in der richtigen Reihenfolge, indem ich es so mache wie du es gesagt hast!
Grüße
Palme