Sortieren (Rangliste) - bissel kompiliziert ... - ohne MySQL |
Wanki
Pixelschubser Threadstarter
Beiträge: 7 |
Hi,
ich weiß hier kamen schon mehre Ranglistenanfragen, dennoch möchte ich meine auch zeigen da ich ein etwas naja komisches system habe ^^
Ich habe mehrere .txt-Dateien in einem Ordner, die werden alle von ner php-datei geöffnet.
In jeder Datei steht ne punktzahl und ein Benutzer.
Es kann vorkommen das in mehreren Dateien, der gleiche Benutzer steht, in dem Fall müssen die punkte addiert werden.
Dann speicher ich die Rangliste zwischen in ne txt-datei und öffne diese dann.
die Daten werden in $user[0] und $punkte[0] wiedergegeben
Nun möchte ich nach Punkten sortieren.
Am besten gleich noch so, das man entweder auf seite 1 die besten von 1-10 auf seite 2 die besten von 1-20 sieht usw. aber das würd ich glaub selber hinbekommen.
Danke für jede Hilfe !
mfg Wanki
Diese Nachricht wurde geändert von: Wanki |
 Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Also das ist ja das Chaos pur bei so vielen Textdateien und schnell kann das ganze auch nicht mehr sein. Überleg dir mal, ob du das nicht besser machen kannst.
|
 Profil
Editieren
Zitieren
|
Wanki
Pixelschubser Threadstarter
Beiträge: 7 |
Das sind nur ganz kleien Datein, auserdem wird es LAN betreieben, daher schnell.
Also eigentlich müsste ich nur $punkte[0-x] sortieren und das mit dem $user natürlich anpassen, nicht nur das die punkte sortiert werden, aber ich glaub das wißt ihr '^-^
mfg Wanki
|
 Profil
E-Mail
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Mit LAN hat die Geschwindigkeit nix zu tun. MySQL selbst speichet die Datenbanken ja auch als Dateien auf der Festplatte. Er greift nur beim Abfragen der Daten gezielt auf die einzelnen Inhalte zu und cacht sie zum Teil noch im RAM.
Wenn du es mit Dateien machen willst, mußt du die Sortierfunktionen selbst bauen. Dazu legst du alle Daten als Arrays in einem Array ab. Dann schreibst du eine Vergleichsfunktion für zwei "Datensätze" und nutzt diese für usort().
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Wanki
Pixelschubser Threadstarter
Beiträge: 7 |
Thx erstmal, aber noch ein Problem.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13: | $verz=opendir ('user/');
while ($file = readdir ($verz)) {
if($file != "." && $file != ".." && $file != "index.php")
$datenfile = "user/$file";
$datenzeile = file($datenfile);
$filedata = explode(",",$datenzeile[0]);
echo "$filedata[0] ";
}
closedir($verz); |
Und in der $filedata[0] steht der name, und $filedata[5] die Punkte.
Ich bekomm das aber net wirklich in ein array rein.
Kann mir da bitte ejmand helfen?
mfg Wanki
|
 Profil
E-Mail
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Verschachtelte Arrays können in PHP eine ganze Menge
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: |
if (isset($alldata[$filedata[0]])) {
$alldata[$filedata[0]]['points'] += $filedata[5];
} else {
$alldata[$filedata[0]] = array(
'name'=>$filedata[0],
'points'=>$filedata[5]
);
}
|
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Wanki
Pixelschubser Threadstarter
Beiträge: 7 |
Danke erstmal, das müsste ich doch jetzt mit $alldata[0] auslesen können?!
Steht aber bloß überl array :(
mfg Wanki
|
 Profil
E-Mail
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Arrays müssen in PHP nicht unbedingt einen numerischen Index haben - in meinem Beispiel wird der Name als Index genutzt. Der Zugriff wäre also:
1: | $alldata['mustermann']['points'] |
Ich habe auch die Detaildaten in einem Array, da ich mir gut vorstellen kann, das dies noch mehr werden - nicht nur "points" sondern z.B. auch E-Mail o.ä.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Wanki
Pixelschubser Threadstarter
Beiträge: 7 |
Danke nochmal, klingt logisch jedoch...
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in...
Das kam bei
echo"$alldata['mustermann']['points']"; |
Habs versucht anders zu öffnen:
so:
$alldata['gali1']['points'] //ist ein name der user |
so:
usw. kein Erfolg.
Versteh ich nicht
mfg Wanki
Diese Nachricht wurde geändert von: Wanki |
 Profil
E-Mail
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Einzelne Variablen kommen nicht in ". Komplexe Variablen innerhalb von " müssen mit {} umschlossen werden.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Wanki
Pixelschubser Threadstarter
Beiträge: 7 |
Hm ich glaub ich stell mich jetzt sehr blöd an...
Was genau muss ich nu eingeben, damit er die Daten ausgibt *blödsei*
Vielen Dank
mfg Wanki
|
 Profil
E-Mail
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ein wenig Lesen im QNet-Tutorial und Grundlagen lernen, wäre wohl angebracht.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
Wanki
Pixelschubser Threadstarter
Beiträge: 7 |
Danke für die Hilfe zur Selbsthilfe, hasb hinbekommen
mfg wanki
|
 Profil
E-Mail
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
|
 Profil
Website
Editieren
Zitieren
|