Datensätze einzeln durchlaufen
lala
- php
Guten Morgen :)
Ich möchte beim Aufrufen einer Seite immer (nur) einen Datensatz aus einer DB-Tabelle (MySQL) holen. Zum Beispiel gibt es ja WHERE'id'='10'
Jedoch interessiert es mich, ob es auch andere Möglichkeiten gibt. Wenn man mehrere Datensätze durchläuft (
$sql = mysql_query("SELECT * FROM class_skills");
while ($ds = mysql_fetch_object($sql)){
...
}
~~~)
Kommt es ja auch nicht auf die ids an. In dem Fall ruft er jeden einzelnen Datensatz auf. Jetzt würde ich gerne einfach den 5 Datensatz auslesen. Aber bei mir hat nicht der fünfte Datensatz beim Feld id die Zahl 5. Gibt es gute und elegante Lösungen für dieses Problem?
Schönen Sonntag noch :)
lala
Hello,
Ich möchte beim Aufrufen einer Seite immer (nur) einen Datensatz aus einer DB-Tabelle (MySQL) holen. Zum Beispiel gibt es ja
WHERE'id'='10'
Jedoch interessiert es mich, ob es auch andere Möglichkeiten gibt. Wenn man mehrere Datensätze durchläuft (
$sql = mysql_query("SELECT * FROM class_skills");
while ($ds = mysql_fetch_object($sql)){
...
}
> Kommt es ja auch nicht auf die ids an. In dem Fall ruft er jeden einzelnen Datensatz auf. Jetzt würde ich gerne einfach den 5 Datensatz auslesen. Aber bei mir hat nicht der fünfte Datensatz beim Feld id die Zahl 5. Gibt es gute und elegante Lösungen für dieses Problem?
Das ist Mengenlehre.
Stell dir vor, Du hast eine Lottotrommel mit 100 Nummernkugeln. Jede Nummer kommt nur einmal vor.
Aus der Trommel werden 10 Kugeln (mit eindeutiger Nummer) gezogen.
Welche 10 Nummern werden gezogen?
\*grübel\* :-)
Siehst Du, und fast genauso funktioniert Deine Datenbank.
Mit jeder Änderung (insert, delete, update) an einer Tabelle wird "neu gemischt". Wie die Datenbank das macht, geht Dich als Nutzer außen nichts an.
Wenn Du nun eine Ordnung haben willst, musst Du ein Ordnungskriterium einfügen. Das wird i.d.R. im Datensatz selbst gespeichert. Mögliche Lösungen zur sind z.B.:
Für die Wiedererkennung eines Datensatzes:
- laufende Nummer (autoincrement)
- Unique Index mit freier Wertevergabe (aber jeder Schlüssel nur einmal)
- Timestamp (da könnte es bei zu grober Zeitmessung schon mal mehrere Datensätze mit
demselnen Zeitstempel geben)
mehr fällt mir gerade nicht ein :-)
Für die Ordnung eigent sich eigentlich jede sortierfähige Eigenschaft, also "Nachname Vorname", "Geburtstag", "Schuhgröße", ...
Du musst eben nur wissen, ob es mehrere Datensätze mit denselben Eigenschaften geben darf, oder nicht.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg

--
Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>
So Entschuldigung,
war die letzten Tage verhindert. Vielen Dank für eure Hilfe.
Hat mir geholfen :).
Hi,
Ich möchte beim Aufrufen einer Seite immer (nur) einen Datensatz aus einer DB-Tabelle (MySQL) holen. Zum Beispiel gibt es ja
WHERE'id'='10'
Das ergibt eine leere Menge, denn die Strings 'id' und '10' sind nicht gleich.
Jetzt würde ich gerne einfach den 5 Datensatz auslesen.
Beschäftige Dich mit LIMIT
Wobei wie von Tom schon erwähnt, die Datenbank von sich aus keine Ordnung hat, der 5. Datensatz ist also ohne ORDER ein beliebiger Datensatz.
cu,
Andreas
Hi,
Ich möchte beim Aufrufen einer Seite immer (nur) einen Datensatz aus einer DB-Tabelle (MySQL) holen. Zum Beispiel gibt es ja
WHERE'id'='10'
Jedoch interessiert es mich, ob es auch andere Möglichkeiten gibt. Wenn man mehrere Datensätze durchläuft (
Wenn du meinst, ob man den Zeiger im Result auf eine bestimmte Stelle (zb die 5e) rücken kann:
mysql_data_seek($result,5)
http://th2.php.net/mysql_data_seek
Ob und wann es Sinn macht, ist natürlich eine eigene Frage.
Schöne Grüße,
Jonny 5
Ob und wann es Sinn macht, ist natürlich eine eigene Frage.
Ja, denn warum sollte man ALLES aus der Datenbank klauben (alle Felder und alle Datensätze) wo man doch vielleicht nur ein paar Felder des "5. Datensatzes" braucht?