Datensätze abrufen, jedoch im Array sortieren

Watusimann

Erfahrenes Mitglied
Hallo Gemeinde,

Bei dem u.a. Script handelt es sich um eine DLL - statistik. Nun, mit ORDER BY ist es recht einfach zu realisieren, den z.B. höchsten DLL als erstes anzuzeigen. Ich würde aber gern den WIRKLICHEN Favoriten an erster Stelle sehen. Ein DLL kann zwar die meisten klickst haben aber schon seit 4 Jahren online stehen, während dessen ein 1 Monat alter DLL die Hälfte der Klicks hat ...
Bisl kompliziert ausgedrückt, aber ich möchte das Uploaddatum mit dem DLLcount gern verbinden.
Nun läuft der Abruf der einzelnen Datensätze in einer Schleife und wird ausgegeben, jedoch ist es dann nicht geordnet.
Habe mir überlegt, die Datensätze in einen Array zuladen und dann geordnet aufzulisten, nur leider scheitere ich daran.
PHP:
// Array geordnet ausgeben ...
$db_abfrage = array (1, 4, 6, 23, 17, 2, 15);

sort($db_abfrage);
foreach ($db_abfrage as $key => $val) {

   echo  $val . "<br>\n";}
PHP:
$result      = mysql_query("SELECT * FROM  download") or die(mysql_error()); 
while ($row = mysql_fetch_assoc($result)) {
			   
$datei 	= "/home/www/webxxx/files/".$row['dl_link'];
$differenz = date ("U", filemtime($datei)) - date ("U");
$ordnen = number_format($differenz / $row['count'],0);		

// Es soll letztendlich nach $ordnen selektiert werden
// Je kleiner $ordnen desto weiter oben in der Liste
}
Wie kann ich dieses realisieren? Oder ist dies eher nicht machbar? Vielleicht hat einer eine Idee und ich bin völlig auf dem Holzweg.

Vielen Dank schonmal im Voraus
 
Stehe ich dann nicht vor dem gleichem Problem? Die entsprechende Zuordnung wäre ja dann immernoch nicht gegeben. Ich möchte ja nicht nur nach Upload-Datum ordnen. Oder gibt es eine Abrufselektion bei msql, die die die Differenz des Timestamp durch die Klicks teilt?

ORDER BY $ordnen <- so würde es ja aussehen, nur um $ordnen zu deklarieren benötige ich Angaben aus der DB.

Oder verstehe ich Dich falsch?
 
MySQL kann gleich diese Rechenoperation übernehmen und den Wert als Sortierkriterium nutzen, etwa:
Code:
ORDER BY `created` - NOW()
 
PHP:
// create -> timestamp der Erstellung
mysql_query("SELECT * FROM  download ORDER BY ((`create` - ".date("U").") / `count`) DESC") or die(mysql_error());

Wow ... So hat es funktioniert. Vielen vielen ist ja fast unkompliziert ;)
 
Zurück