zwei gleiche Namen beim Highscoreeintrag

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • zwei gleiche Namen beim Highscoreeintrag

    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 nachfolgenden dreht er um!?!?!?
    Aussehen sollte die richtige data.txt so:
    Mario;120
    Mario;120
    Hoschi;200
    Martin;614
    Rene;345
    Jan;683
    Frank;405
    Superwinner;1239

    Bitte dringend um Rat.

    $PHP resource 4ever$

  • #2
    Kann mir da wirklich keiner weiterhelfen?? Bin ECHT schon am verzweifeln. Ich komme einfach nicht weiter. Bin leider kein php-profi.
    $PHP resource 4ever$

    Kommentar


    • #3
      Ich hab's schon mal gesagt ...

      Du mußt die Nullen und Einsen in der ersten Schleife vertauschen. Genau dort und nur dort. Und dann die Änderungen an deinem Skript speichern.

      Ich hab's jetzt sogar mal getestet, und bei mir läuft's wie erwartet. Einziger Unterschied zu deinem gewünschtem Ergebnis ist, dass die höchsten Punktzahlen zuerst kommen.

      Hier nochmal der geänderte Teil:
      Code:
      while($data = fgets($fp,1024))
      { 
        // jede zeile aufsplitten 
        $data = explode(";",$data); 
        // ein array erzeugen mit allen eintraegen 
        $hitlist[] = array (score=>trim($data[1]), plr=>trim($data[0])); 
        // und den kleinsten Wert merken 
        if ($min<0 || $min>$data[1]) 
        $min = $data[1]; 
      }
      P.S.: Gewöhn dir bitte mal die [ code ]-Umklammerung an (vB-Code)
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        VIELEN DANK Titus, hat jetzt geklappt.

        Keine Ahnung was vorher nicht stimmte.Ich hab dein Script wirklich gewissenhaft mit meinem verglichen.

        Echt geil was du drauf hast.
        $PHP resource 4ever$

        Kommentar

        Lädt...
        X