Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Sortieren (Rangliste) - bissel kompiliziert ... - ohne MySQL<... Antworten
Sortieren (Rangliste) - bissel kompiliziert ... - ohne MySQL

Wanki
Pixelschubser


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.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

Wanki
Pixelschubser


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


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


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]<br>";

}

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


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


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


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


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:
$alldata['name']


usw. kein Erfolg.

Versteh ich nicht

mfg Wanki

Diese Nachricht wurde geändert von: Wanki
  Profil   E-Mail   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Einzelne Variablen kommen nicht in ". Komplexe Variablen innerhalb von " müssen mit {} umschlossen werden.

---
Weaverslave

  Profil   Website   Editieren   Zitieren

Wanki
Pixelschubser


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


Ein wenig Lesen im QNet-Tutorial und Grundlagen lernen, wäre wohl angebracht.

---
Weaverslave

  Profil   Website   Editieren   Zitieren

Wanki
Pixelschubser


Beiträge: 7


Danke für die Hilfe zur Selbsthilfe, hasb hinbekommen

mfg wanki

  Profil   E-Mail   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Fein




---
Weaverslave

  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben