MySql/php-> next id finden.
butterbrot
- datenbank
0 TomIRL0 butterbrot0 Matrix
Abend
Gibt es eine enifache möglichkeit in php/mysql die nachbar id zu finden?
---------------------------------------------------------------
z.B.
ID NAME ALTER
1 Hans 12
2 Peter 9
3 Jacob 19
5 Max 4
8 Urlike 2
9 Annika 17
12 Saskia 21
Jetzt davon alle auswäheln, welche älter als 10 jahre sind und das ganze nach dem alter ordnen ->
ID NAME ALTER
1 Hans 12
9 Annika 17
3 Jacob 19
12 Saskia 21
Jetzt auf den datensatz mit der id '9' gehen. ->
ID NAME ALTER
1 Hans 12
9 Annika 17 <--
3 Jacob 19
12 Saskia 21
Davon möchte ich jetzt die nächst/vorherige id raus finden. ->
ID NAME ALTER
1 Hans 12
9 Annika 17
3 Jacob 19 <--nächster
12 Saskia 21
Was währe den dafür die beste lösung?
Hallo butterbrot.
Sorry,
Könntest Du mal ne konkrete Aufgabenbeschreibung liefern?
Es gibt da meiner Ansicht nach verschieden Ansätze:
1. Du ordnest die Daten nach Alter liest sie komplett in ein neues Array ein und vergibst neue Schlüssel
2. Du Ordnest die die daten nach Alter, dann rufst du die Daten auf mit der limit Function, un d dann eifach plus 1 Also LIMIT 30,31 zBsp.
Na und wenn ich so nachdenke fallen mir noch einige Möglichlkeiten ein
TomIRL
hab ne lösung gefunden
$next = mysql_fetch_assoc(mysql_query("SELECT id FROM tabel WHERE group = 'negruppe' AND date > ".$info[date]." ORDER BY date DESC"));
hab ne lösung gefunden
$next = mysql_fetch_assoc(mysql_query("SELECT id FROM tabel WHERE group = 'negruppe' AND date > ".$info[date]." ORDER BY date DESC"));
Hab auch ne Lösung:
Suche nach dem Datensatz, dessen Alter größer ist, als das Alter des Datensatzes mit der id "9" und LIMITiere die Ausgabe auf einen Datensatz.
Erstmal: Das Alter steht ja fest, das ist die 17, also
$alter= 17;
Query könnte ungefähr so aussehen:
select id from table1 where alter > $alter LIMIT 1;
OK, das ist blöd, weil Alter kein Key ist, sondern die ID ( man kann ja mehrere Datensätze mit dem Alter von 17 haben)
Aaaalso schau mer mal in der MySQL-Doku, die es zum Glück nicht in einem gescheiten deutschen Format gibt.
....such
Leider nichts gefunden :-(
Aber wenn man in PHP ein select macht, werden die Daten in einem Ergebnis-Array (Result-Set)gespeichert. Dies kann man mit einer for-Schleife durchgehen, bis man auf das Ergebnis mit der ID 9 kommt. Das $i von dieser Zeile ist der erste Wert von LIMIT. Der zweite Wert ist eine 1 für eine Zeile.
Also ungefähr so:
Du liest die ID der Zeile mit den 17 Jahren aus.
$my_id = 9;
dann erstmal wie folgt:
$query = "select id from table1 ORDER BY ALTER";
$result = mysql_query($query);
$num = mysql_num_rows($result);
if ($num > 1) {
for ($i = 0; $i < $num; $i++) {
$id = mysql_result($result, $i, 'id');
if ($id == $my_id) {
## setzt ersten Wert von LIMIT ($n)
$n = $i;
## Prüfen, ob es der letzte Datensatz ist:
if ($i == $num) {
die("Es existiert kein Eintrag nach ID $my_id");
.......
}
## Ansonsten $i hochsetzen, das die Schleife aufhört
else {
$i = $num;
}
}
}
$query = "select * from table1 LIMIT $n,1";
.....
}
else {
die("Es existiert kein Eintrag nach ID $my_id");
}
Naja, besser als keine Antwort :-)
Grüße, ein mittlerweile confuse-ter Matrix :-)