Daten sortieren vor Ausgabe
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
Daten sortieren vor Ausgabe
da ich keinen passenden Mod fand, habe ich mir mal einen 'umgebaut'.
folgendes Problem:
die Daten werden original absteigend nach einem, per sql-eingelesenem, Feld sortiert.
Ich möchte aber die Ausgabe sortiert nach einem berechneten Feld erreichen,
genaugenommen nach $g2 absteigend, errechnet in Zeile 84-93.
(habe mich zwar erfolgreich durch die Zeitberechnungen gekämpft, durchschaue aber die Array-Geschichte nicht)
ich hänge die php mal hier an in der Hoffnung, jemand hilft mir aus der Klemme....
folgendes Problem:
die Daten werden original absteigend nach einem, per sql-eingelesenem, Feld sortiert.
Ich möchte aber die Ausgabe sortiert nach einem berechneten Feld erreichen,
genaugenommen nach $g2 absteigend, errechnet in Zeile 84-93.
(habe mich zwar erfolgreich durch die Zeitberechnungen gekämpft, durchschaue aber die Array-Geschichte nicht)
ich hänge die php mal hier an in der Hoffnung, jemand hilft mir aus der Klemme....
- Dateianhänge
-
- admin_users_inactive.zip
- (4.6 KiB) 384-mal heruntergeladen
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Du kannst auch in einer Sortieranweisung (ORDER BY) in SQL berechnen und dann kommen die Datensätze auch nach den Ergebnissen sortiert zurück...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
ähm - ja, wohl doch, denn ich errechne es ja damit, aber wie bring ich den ganzen Komplex in die sql-Abfrage?
Code: Alles auswählen
$g = $row['user_lastlogon'];
if ($row['user_lastlogon'] == 0) $g = $row['user_regdate'];
$t = time();
$gMonth = date("n", $g);
$tMonth = date("n", $t);
$gYear = date("Y", $g);
$tYear = date("Y", $t);
$g2 = (($tYear - $gYear) * 12) + ($tMonth - $gMonth);- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Öhm, nun, es werden datenbankfremde Daten herangezogen, das klappt dann nicht.
Also bliebe nur noch sort() oder auch ksort() über...
Hast Du ein mehrdimensionales Array oder ein einfaches?
Also bliebe nur noch sort() oder auch ksort() über...
Hast Du ein mehrdimensionales Array oder ein einfaches?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
wenn ich alles richtig übersehe, ist es ein mehrdimensionales
(es werden ja mehrere felder übergeben)
(es werden ja mehrere felder übergeben)
Zuletzt geändert von shadowrider am Mi 11.Okt, 2006 19:18, insgesamt 1-mal geändert.
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Entscheidungshilfe:
Eindimensionale Arrays besitzen einen Key.
Z. B. $lang['Username']
Mehrdimensionale Arrays besitzen mehrere Schlüssel:
$lang['Username']['Realname'] (mal hier ein zweifaches frei erfunden).
Welche Art wird also bei Dir verwendet?
Wenn es ein mehrdimensionales Array ist, mit der Berechnung als ersten Schlüssel, wäre die Sortierung einfach...
Eindimensionale Arrays besitzen einen Key.
Z. B. $lang['Username']
Mehrdimensionale Arrays besitzen mehrere Schlüssel:
$lang['Username']['Realname'] (mal hier ein zweifaches frei erfunden).
Welche Art wird also bei Dir verwendet?
Wenn es ein mehrdimensionales Array ist, mit der Berechnung als ersten Schlüssel, wäre die Sortierung einfach...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
also mehrdimensional:
der Schlüssel, nach welchem ich sortieren will, wäre der 7.
Code: Alles auswählen
$template->assign_block_vars("Table_InactiveUsers", array(
"ROW_CLASS" => $row_class,
"ROW_CLASS_ALERT" => $row_class_alert,
"NUMBER" => $i +1,
"USERNAME" => $row['username'], usw.- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Nicht die Übergabe an ein Template kann sortiert werden, sondern nur ein Array!
Was "soll" denn nun sortiert werden???
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
dann wird offenbar Zeile für Zeile bearbeitet und an das Template übergeben?
da müsste ja das ganze völlig anders laufen, vor der Übergabe sammeln und dann sortieren und erst dann an das Template - das ist zu fett für mich, da muss ich wohl die Finger von lassen
oder ist es möglich, direkt nach
$sql = "SELECT....
den gesamten Datensatz zu sortieren?
da müsste ja das ganze völlig anders laufen, vor der Übergabe sammeln und dann sortieren und erst dann an das Template - das ist zu fett für mich, da muss ich wohl die Finger von lassen
oder ist es möglich, direkt nach
$sql = "SELECT....
den gesamten Datensatz zu sortieren?
Zuletzt geändert von shadowrider am Do 12.Okt, 2006 08:09, insgesamt 1-mal geändert.
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Öh, sofern ein Datensatz gelesen und übergeben wird nicht.
Dann muss wirklich erst alles ausgelesen und dann sortiert werden.
Aber ich kenne ja bislang auch nur ein Bruchstück dessen, was Du da bearbeitest. Vielleicht ist es einfacher, als ich jetzt rätzeln kann, was Du genau willst...
Dann muss wirklich erst alles ausgelesen und dann sortiert werden.
Aber ich kenne ja bislang auch nur ein Bruchstück dessen, was Du da bearbeitest. Vielleicht ist es einfacher, als ich jetzt rätzeln kann, was Du genau willst...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Oh, sorry, komplett übersehen 
Also:
Wenn Du
gegen
tauschen würdest, müsste die Sortierung die gewünschte sein.
Denn was macht die Berechnung:
Sie ermittelt ja die Monate vom letzten Login bis jetzt.
Und mit der Berechnung time() - user_lastlogon wird ja auch die Differenz zwischen jetzt und dem letzten Login ermittelt.
Aufsteigend sortiert (ASC) würde der User mit der kürzesten Inaktivität "oben" stehen, bei absteigender Sortierung (DESC), so wie ich das jetzt mal gemacht habe, der mit der längsten Offline-Zeit.
Nach der Abfrage werden dann auch weiter brav die Monate berechnet. Das ist ja dann okay, da die User bereits sortiert vorliegen...
Also:
Wenn Du
Code: Alles auswählen
ORDER BY user_lastlogon ASCCode: Alles auswählen
ORDER BY ".time()." - user_lastlogon DESCDenn was macht die Berechnung:
Sie ermittelt ja die Monate vom letzten Login bis jetzt.
Und mit der Berechnung time() - user_lastlogon wird ja auch die Differenz zwischen jetzt und dem letzten Login ermittelt.
Aufsteigend sortiert (ASC) würde der User mit der kürzesten Inaktivität "oben" stehen, bei absteigender Sortierung (DESC), so wie ich das jetzt mal gemacht habe, der mit der längsten Offline-Zeit.
Nach der Abfrage werden dann auch weiter brav die Monate berechnet. Das ist ja dann okay, da die User bereits sortiert vorliegen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ach ja. Dann muss noch eine Bedingung rein:
Dann werden alle "nie" angemeldeten User ausgegrenzt.
Code: Alles auswählen
AND user_lastlogon <> 0 AND user_lastlogon IS NOT NULLKarsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Also die Sortierung erweitern:
Damit wird eben gesagt, wenn user_lastlogon NULL ist, nimm das user_regdatum und anschliessend wird sortiert.
Sofern ich jetzt keine Tippfehler drinnen habe, sollte das dann gehen und alle User in einer "Linie" sortieren...
Code: Alles auswählen
ORDER BY CASE user_lastlogon WHEN NULL THEN user_regdate ELSE user_lastlogon END DESCSofern ich jetzt keine Tippfehler drinnen habe, sollte das dann gehen und alle User in einer "Linie" sortieren...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Und so?
Code: Alles auswählen
ORDER BY CASE user_lastlogon WHEN NULL THEN user_regdate ELSE user_lastlogon DESC ENDKarsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- shadowrider
- Beiträge: 473
- Registriert: Mi 18.Aug, 2004 12:56
- Wohnort: Schelklingen-Schmiechen
- Kontaktdaten:
