• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

zwei gleiche Namen beim Highscore-Eintrag erlauben...

Metallica

Lounge-Member
Hallo Leute,

ich komme einfach nicht weiter.
Was muss ich am folgenden php-script abändern damit auch zwei gleiche Namen und Beträge in meine data.txt (=highscoretabelle) reingeschrieben werden können:

<?
//$winnername="Mario"; //kommt von Flash zurück
//$winnercredits=120; //kommt von Flash zurück
$min = -1;
$fp = fopen("data.txt","r");
// zeile für zeile einlesen
while($data = fgets($fp,1024)){
// jede zeile aufsplitten
$data = explode(";",$data);
// ein array erzeugen mit allen eintraegen
$hitlist[] = array (score=>$data[0], plr=>trim($data[1]));
// und den kleinsten Wert merken
if ($min<0 || $min>$data[0])
$min = $data[0];
}
fclose($fp);

$anzahl = count($hitlist);
if (
// wenn noch keine 10 Einträge da sind
$anzahl<10 ||
// oder der neue Score größer ist als der bisherige kleinste
$min<$winnercredits)
{ // eintragen
$hitlist[] = array (score=>$winnercredits, plr=>$winnername);
function vergleich ($a, $b)
{
return $b[score]-$a[score];
}
usort ($hitlist, 'vergleich');

// maximal zehn Elemente des Arrays speichern:
$fp=fopen("data.txt","w");
for ($i=0; $i<10 && $i<count($hitlist); $i++)
fputs($fp,$hitlist[$i][plr].";".$hitlist[$i][score]."\n");
fclose ($fp);
}
?>


data.txt:
Mario;120
Hoschi;200
Martin;614
Rene;345
Jan;683
Frank;405
Superwinner;1239


Nach ausführen des codes sieht meine data.txt jetzt so aus:
Mario;120
200;Hoschi
614;Martin
100;Erich
683;Jan
405;Frank
1239;Superwinner
120;Mario
345;Rene

Zwei gleiche Einträge nimmt er. Aber die anderen dreht er um!?!?!?
 
Das ist für mich schon viel zu hoch, ich kann dir aber CSV-Datenbanken empfehlen, ist immernoch besser als alles direkt in die Datei zu schreiben.

Ich vermute das wenn du diese Zeile:
$hitlist[] = array (score=>$data[0], plr=>trim($data[1]));
durch diese ersetzt:
$hitlist[] = array (score=>$data[1], plr=>trim($data[0]));
es vielleicht funktionieren könnte (?)
 
Also Null mit Eins vertauschen war's leider nicht.
Trotzdem DANKE.

Was sind CSV-Datenbanken genau?? Hab noch nix darüber gehört.
 
Das ist eigentlich genau das gleiche was du da hast, bloß gibt es dafür spezielle Funktionen

Ich werd dir die entsprechenden Funktionen heute abend nochmal raus suchen - keine Zeit ;)
 
Ich benutze nie Dateioperatoren, deshalb tippe ich es hier mal einfach ab, du wirst da schon durchsteigen ;)

php-datei:
<?
$fp = fopen ("data.csv", "r");
while ($zeile = fgetcsv ($fp, 1000, ",")) {
$spalten = count ($zeile);
for ($i=0; $i<$spalten; $i++) {
echo $zeile[$i]."<br>\n";
}
}
fclose ($fp);
?>

CSV-Datei
irgendwas,irgendwas,soviel,du,willst
irgendwas,irgendwas,soviel,du,willst
irgendwas,irgendwas,soviel,du,willst
irgendwas,irgendwas,soviel,du,willst


So sollte eine Ausgabe funktionieren, die Eingabe geht dann wohl immernoch über normale operatoren.
 
Zurück
Oben