if-abfrage highscorelist

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

  • if-abfrage highscorelist

    Hi Leute!

    es geht um meine highscoretabelle.
    es dürfen immer nur max 10 Einträge rein.
    wenn aber angenommen 9 User in der Tabelle stehen und der 9. hat 300 und ich als neuer spieler hab jetzt 250, dann dürfte ich mich als 10. spieler in die highscorelist eintragen.
    genau das funtzt nicht.

    php-Code:
    ....
    if (
    // wenn noch keine 10 Einträge da sind
    $anzahl<10 ||
    // oder der neue Score größer ist als der bisherige kleinste
    $min<$winnercredits ||
    //da müßte irgendwie der check rein ob ich mich als 10. eintragen darf
    )
    ....
    $PHP resource 4ever$

  • #2
    Mach ein Bubblesort oder ähnliches
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      kannst mir dafür mal ein bsp. geben
      $PHP resource 4ever$

      Kommentar


      • #4
        Achne Bubblesort is zu kompliziert.
        wenn Du alle highscores in einem Array hast zB $highscore
        dann mach sowas:

        $i = count($highscore);
        $highscore[$i+1]=$newscore;
        sort($highscore);
        $highscore = array_reverse($highscore);
        array_pop($highscore);
        foreach($highscore as $score) print $score."<br>";

        Aber am einfachsten is doch die Scores in einer DB tabelle dann kannste die 10 besten im sql bestimmen.
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          ist doch eigentlich mal wieder ne typische metallica frage ...

          Code:
          [b]
          if($eingetragene user < 10) {
          
          echo "form zum eintragen "; 
                                      } else {
           if($myScore > $letzter eintrag) {
             echo "<form> zum eintrag";    } else {
             echo "Du Vollpflaume kanst auch gar nix :D ";                                        
                                                  }
                                             }
          [/b]


          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #6
            Original geschrieben von schmalle
            Code:
            [b]
            if($eingetragene user < 10) {
            
            echo "form zum eintragen "; 
                                        } else {
             if($myScore > $letzter eintrag) {
               echo "<form> zum eintrag";    } else {
               echo "Du Vollpflaume kanst auch gar nix :D ";                                        
                                                    }
                                               }
            ist doch eigentlich mal wieder ne typische metallica frage ... 
            
            


            [/B]
            Was wenn myScore > topscore is? dann kommt er auch nur an die letzte Stelle?
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              nein, das ist doch eine datenbank ... wie der salat drinsteht ist doch banane. er kann die daten beim auslesen ja wieder sortieren ( wenn er nicht wieder alles vergessen hat )

              und $letzter_eintrag soll natürlich der kleinste wert in der db darstellen. sorich mysql_query( select MIN() bla blaub ...
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #8
                uahhh, verwirrt ich bin.

                hier mal das komplette script:


                <?
                $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=>trim($data[1]), plr=>trim($data[0]));
                // und den kleinsten Wert merken
                if ($min<0 || $min>$data[1])
                $min = $data[1];
                }
                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 //hier fehlt der check wenn schon 9 drinnen sind und ich als zehnter dazukomme
                $min<$winnercredits)
                { // eintragen
                $hitlist[] = array (score=>$winnercredits, plr=>$winnername);

                // Array nach Punktzahl absteigend sortieren
                function vergleich ($a, $b)
                {
                return $b[score]-$a[score];
                }
                usort ($hitlist, 'vergleich');

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


                => @schmalle
                dieses script stammt noch aus zeiten wo ich keine DB-Anbindung hatte. Deshalb die data.txt
                ich bin auch momentan überfragt, wie ich das script umschreiben müßte, wenn ich zB 'ne tabelle "highscore" in meiner DB hätte.
                => Vollpflaume verbitte ich mir du Pupsgesicht
                $PHP resource 4ever$

                Kommentar


                • #9
                  ne also, so nicht. schmeiss das script weg ist zwar sauber, aber für db nicht zu gebrauchen! wer hat das gemacht? du jdenfalls nich

                  sach an, wie der salat inner db steht, warte 1 2 stunden, dann helfe ich
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    du wirst es nicht glauben, aber durch dieses script bin ich member in diesem board geworden.
                    ich hab damit begonnen und bin nicht weitergekommen. dann hab ich gepostet und nach 1000000000000000000000000000000000000000000000000000 frage-antwortspiel hat mir's Titus (ups, hab ich da jetzt was verraten) fertiggeschrieben.
                    der war damals der einzige, der sich meinem problem angenommen hat und gottseidank drangeblieben ist.

                    inzwischen hab ich halt die DB-Anbindung bekommen und könnte eigentlich auf die txt-datei verzichten.

                    bin mir noch nicht so ganz sicher wie es in der tabelle aussehen soll.
                    in der txt steht es so drinnen:
                    Freak;32000
                    Freaker;30595
                    King;14070
                    Gandalf;4400
                    Jan;1890
                    BennY;900
                    Charly;850
                    Jürgen;800
                    Gina;640


                    => die tabelle müßte demnach nur zwei varchar-felder haben. Name und Points. sonst nix. und eventuell ein drittes feld dass als Trennfeld fungiert (zB damit php nicht durcheinander kommt. oder man setzt es direkt im code.

                    Ahja, noch was:
                    es gibt da noch eine highscorelesen.php die man dann wahrscheinlich auch umbauen müßte.
                    Script:
                    <?
                    // datei auslesen
                    $fp = fopen("data.txt","r");
                    while ($data = fgets($fp,1024)) {
                    $data = explode(";",$data);
                    $hitlist[$data[0]] = chop ("$data[1]");
                    }
                    fclose($fp);

                    arsort($hitlist);

                    // string zusammenbauen
                    //$uebergabe = "";
                    $i = 1;
                    while (list ($key, $val) = each ($hitlist)) {
                    if ($i == 1) $maxwert = $val;
                    $uebergabe .= "&name$i=$key&credits$i=$val";
                    $i++;
                    $minwert = $val;
                    }
                    $uebergabe .= "&minwert=$minwert&maxwert=$maxwert&eintraege=$i";
                    $uebergabe = substr($uebergabe,1);

                    echo $uebergabe;
                    ?>
                    $PHP resource 4ever$

                    Kommentar


                    • #11
                      dann wollen wa mal was? ich fange mal mit dem auslesen anzeigen der highscorelist an. es gibt eine tabelle, die heisst highscore, und hat die felder player und points!

                      Code:
                      $grabbel = mysql_query("select * from highscore order by poits DESC");
                      $i = "1";
                      while($row = mysql_fetch_array($grabbel) {
                      $i <= 10;
                      echo "Platz $i: $row[player] mit $row[points] Punkten <br>";
                      $i++;
                                                               }
                      
                      // ich mal davon aus, dass eben nur 10 people inner db drinne sind ...
                      sollte so hinhauen

                      h.a.n.d.
                      Schmalle

                      http://impressed.by
                      http://blog.schmalenberger.it



                      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                      ... nur ohne :-)

                      Kommentar


                      • #12
                        teil 2 dann die sache mit dem eintrag inne db rein und so
                        Code:
                        // Spieler übergibt seine punkte in $score
                        
                        $gucknach = mysql_query(" select * from highscore order by points DESC");
                        $zaehlmal = mysql_num_rows($gucknach);
                        
                        if($zaehlmal < 10) {
                         echo "Na super! Du knalltüte darfst dich eintragen :) <br>
                         <form>";
                                           } else {
                        $check = mysql_query("select MAX(points) from highscore ");
                        while($row = mysql-fetch_array($check)) {
                         $maxwert = $row[0]; 
                                                                }
                         if($maxwert > $score) {
                          $differenz = $mxwert - $score;
                          echo "Üb mal noch n bissel, Dir fehlen $differenz Punkte!";
                                               } else {
                        echo "Trag dich ein LOS 
                               <form>"; 
                                                      }
                        hab ich eigentlich nichts anderes zu tun?
                        h.a.n.d.
                        Schmalle

                        http://impressed.by
                        http://blog.schmalenberger.it



                        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                        ... nur ohne :-)

                        Kommentar


                        • #13
                          die highscore hab ich aber in flash.
                          die echoausgabe meiner alten script's muss mit der neuen übereinstimmen sonst funkt's nicht.

                          es dürfen nie mehr als 10 spieler in der sql-tabelle drinnen sein. dass muss (genauso wie bei der data.txt) von php aus gesteuert werden.

                          schau mir das morgen noch genauer an.
                          bin etwas im zeitdruck.

                          so long... my lieblings_schmalle... bye
                          $PHP resource 4ever$

                          Kommentar


                          • #14
                            du willst mich seelisch zum krüppel machen ... gib´s doch endlich zu

                            ... mir doch egal, wie die echo´s funzen müssen ... das kannst selber machen
                            h.a.n.d.
                            Schmalle

                            http://impressed.by
                            http://blog.schmalenberger.it



                            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                            ... nur ohne :-)

                            Kommentar


                            • #15
                              ähm ... Leute ...
                              Bevor ihr euch über mein Skript beschwert, lest es erst mal!
                              Hier gibt´s nämlich keine Datenbank, sondern nur eine Text-Datei.

                              und die Abfrage, ob noch keine 10 drin sind, ist doch da: $anzahl<10. Ich frach mich also mal im Stillen, warum´s das nicht tut und warte gespannt auf eure Lösungen. *eg*

                              [Editiert von Titus am 20-02-2002 um 22:45]
                              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

                              Lädt...
                              X