Matrix: MySql/php-> next id finden.

Beitrag lesen

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);

das hat Nur Wert, wenn mehrere Reihen existieren

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 :-)