Sortieren von Daten

myplex

Erfahrenes Mitglied
Hallo,
ich habe folgendes Problem: :mad:
Ich habe ein PHP-Formular erstellt mit dem ich Daten in eine Datei schreibe. Ich würde gerne eine Hiscore-Liste auf meiner Homepage anbieten. Nun weiß ich aber nicht, wie ich diese Daten nach höchster Punktzahl sortieren kann. Ich weiß das es mit MySQL sehr einfach geht. (Hab ich auch schon gemacht) Ich will es jetzt aber mit Dateien machen, weil ich auf einem anderen Anbieter jetzt hoste, der kein MySQL unterstützt. Ich würde gerne eine schnelle Antwort erhalten :)
 
Hi,

Wie sieht denn die Datei aus?
Ich nehme jetzt halt mal an so:

1235
2568
165
987
3569
2100
1590


Jetzt liest Du die Datei mit file() ein und sortierst das array dann mit arsort()


PHP:
<?php

$datei = file("highscore.txt");
$datei = arsort($datei);
foreach($datei as $k => $v)
	echo $k." -- ".$v."<br>";

?>


Gruß Xabbu!
 
Zuletzt bearbeitet:
Die Datei sieh so aus:
MeinName | 123 | NochEinName | 321 |
usw.


Mit der möglichkeit, die du mir genant hast bekomme ich ein Parse-Error !
Wenn du eine Grundlegende andere möglickeit weißt kannst du sie mir auch nennen . Ich bin immer für Verbessungsvorschläge offen !

Trotzdem Danke für die schnelle Antwort (ca. 1,5 min)
 
Ja, sorry, hatte vorher nen fehler drin. so muss es aussehen:

PHP:
<?php 

$datei = file("highscore.txt"); 
arsort($datei);  //Hier musste das $datei = weg....
foreach($datei as $k => $v) 
    echo $k." -- ".$v."<br>"; 

?>

Wenn Deine Datei also so aussieht:

MeinName | 123 | NochEinName | 321 |

ist das etwas schwieriger.....
Wieso machst Du nicht für jeden Datensatz (Eintrag) eine neue Zeile?

Dann könntest Du es so lösen:

PHP:
<?php 

$datei = file("highscore.txt"); 
$array = array();
for($i=0;$i<count($datei);$i++)
	{
		$tmp = explode("|", $datei[$i]);
		array_push($array, $tmp[1]."|".$tmp[0]);
	}	

arsort($array); 
foreach($array as $k => $v) 
    {
		$tmp = explode("|", $v);
		echo "Name: ".$tmp[1]."<br>";
		echo "Punkte: ".$tmp[0]."<br>";
		echo "<br><br>";
	}

?>

Ansonsten müsstet Du noch einen zusätzlichen Zähler einbauen, der immer bis 2 zählt, denn Du hast ja immer ein Name | Punkte Paar. Wenn Du's nicht ändern kannst / willst, kann ich Dir auch noch so eine Lösung geben.

Gruß Xabbu!
 
Wenn du willst kannst du mir eine Grundlegene andere möglichkeit geben, mit der ich die ganze Sache besser hinbekommen kann. Ich werde das Script von dir mal ausprobieren !
:-)
 
Original geschrieben von myplex
Wenn du willst kannst du mir eine Grundlegene andere möglichkeit geben, mit der ich die ganze Sache besser hinbekommen kann. Ich werde das Script von dir mal ausprobieren !
:-)

Was meinst nun damit? ;)
Du kannst also nicht für jeden Eintrag eine neue Zeile machen? Oder wie meinst, das mit einer anderen Grundlegenden Möglichkeit? Das Script oben ist doch eine gute Lösung.

Gruß Xabbu!
 
Ich meine das du mir einen kompletten Code schreibst:
Code für:
-Formular
-zum nochmal anzeigen und überprüfen
-zum speichern
-zum wieder öffnen

Geht das ? :rolleyes:
 
Naja, das hier ist doch ein Hilfe-Forum und nicht ein "Bitte mach mir das Script so wie ich es brauch - Forum!" :-)

Ein bischen selber denken musst schon noch! ;)
Mit meinem Beispiel oben ist doch sowas, wie Du es haben möchtest, leicht zu realisieren!

Wenn ich die Zeit hätte, würde ich es Dir machen, aber hab ich halt grad net....:(

Gruß Xabbu!
 
Zurück