Ankündigung

Einklappen
Keine Ankündigung bisher.

Summen rechner

Einklappen

Neue Werbung 2019

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

  • Summen rechner

    Hallo,

    ich bin derzeit am verzweifeln an einem einfachen counter.
    Er soll aus einer MySql alle die auf 1 stehen zählen, die auf 0 ignorieren, ein einfacher Onlinecounter halt (0=offline, 1=Online) um es so auszugeben : "..Spieler sind Online".

    Mein bisheriger Code:

    PHP-Code:
    <?php
    $db_link 
    mysqli_connect (
                         
    MYSQL_HOST
                         
    MYSQL_BENUTZER
                         
    MYSQL_KENNWORT
                         
    MYSQL_DATENBANK
                        
    );

    $sql_online "SELECT * FROM users";
    $raw_online mysqli_query$db_link$sql_online );
    $onlinenaz mysqli_fetch_assoc($raw_online);

    $onlinUsers = array($onlinenaz['isonline']);
    echo 
    "<p>" array_sum($onlinUsers) . "/75 Spieler Online </p>";
    while (
    $online mysqli_fetch_array$raw_onlineMYSQL_ASSOC))
    {
        if (
    $online['isonline'] === "1") {
        echo 
    $online['name'] . ", ";
        }
    }
    ?>
    Das problem nun: Wenn jemand onlin ist, steht entweder dort immernoch 0/72 Online der name jedoch wird angezeigt, oder andersherum.

    Die abfrage "SELECT SUM('isonline') AS isonline FROM users" funktioniert ja nicht da er noch wissen muss wer online ist.

    Hat jemand evtl eine lösung für mich?


    Herzlichen Dank

  • #2
    PHP-Code:
    $sql_online "SELECT * FROM users"
    Warum "*" und ich schlage jetzt einfach mal "WHERE" als Lösungsansatz vor. Es reicht doch nur die Datensätze zu holen bei denen jemand Online ist.
    PHP-Code:
    if ($online['isonline'] === "1"
    ist ein typsicherer Vergleich, (String) speicherst du den Wert 1 nicht als Integer?

    Kommentar


    • #3
      PHP-Code:

      $query 
      "SELECT COUNT(isonline) AS \"Anzahl Online\" FROM users WHERE isonline = 1"
      reicht dir sowas nicht?
      Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

      Kommentar


      • #4
        Die Abfrage müsste so lauten:

        PHP-Code:
        SELECT SUM('isonline') AS isonline FROM users WHERE isonline 
        Durch die WHERE-Bedingung kannst du die Menge eingrenzen welche gezählt werden soll. Da du nur alle haben möchtest welche Online sind musst du also schauen wo isonline auf 1 steht. Der Query sollte funktionieren! Das mit der Summe kann natürlich auch recht gefährlich werden wenn sich mal ein anderer Wert als 0 oder 1 einschleicht. Daher sollte man immer auf COUNT() zurückgreifen. Hierfür kannst du folgende Abfrage verwenden:

        PHP-Code:
        SELECT COUNT() FROM users WHERE isonline 
        Gruß S. Brosch

        Kommentar


        • #5
          ich benötige ja aber noch 'name'...

          Kommentar


          • #6
            Zitat von Vinylarts Beitrag anzeigen
            ich benötige ja aber noch 'name'...
            Da hatte ich dich nicht ganz richtig vestanden, dann:

            PHP-Code:
            $query "SELECT name FROM users WHERE isonline = 1";
            $res mysqli_query($query)
            //Hier bin ich mir syntaktisch nicht 100% sihcer
            $anzahlOnline mysqli_num_rows($res);
            echo 
            "Es sind ".anzahlOnline;
            echo 
            "<br>User: ";
            while(
            $dataS mysqli_fetch_assoc($res))
            {
               echo 
            $dataS['name'].", ";

            so oder so ähnlich.
            Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

            Kommentar


            • #7
              so eingebaut:

              PHP-Code:
              <?php
              $db_link 
              mysqli_connect (
                                   
              MYSQL_HOST
                                   
              MYSQL_BENUTZER
                                   
              MYSQL_KENNWORT
                                   
              MYSQL_DATENBANK
                                  
              );
              $query "SELECT name FROM users WHERE isonline = 1";
              $res mysqli_query($db_link$query)
              //Hier bin ich mir syntaktisch nicht 100% sihcer
              $anzahlOnline mysqli_num_rows($res);
              echo 
              $anzahlOnline "/72 User Online";
              echo 
              "<br>User: ";
              while(
              $dataS mysqli_fetch_assoc($res))
              {
                 echo 
              $dataS['name'].", ";
              }  
              ?>
              bekomme ich einen syntax error, wie kriege ich den behoben?

              Kommentar


              • #8
                Syntaxfehler sollte man imho selbst beheben können, aber:

                Zitat von Vinylarts Beitrag anzeigen
                $res = mysqli_query($db_link, $query)
                Schau dir die Zeile nochmal ganz genau an, besonders das was am Ende der Zeile (nicht) steht …

                Kommentar


                • #9
                  Manchmal sieht man halt den wald vor lauter Bäumen nicht Herzlichen dank euch allen

                  Kommentar


                  • #10
                    in dem du das fehlende Semikolon auch setzt.
                    Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                    Kommentar


                    • #11
                      Zitat von Vinylarts Beitrag anzeigen
                      PHP-Code:
                      echo $anzahlOnline "/72 User Online"
                      Die Anzahl aller User solltest du dir auch aus der DB holen, sonst musst du bei jedem neuen oder gelöschten User den Quellcode anpassen.

                      Kommentar


                      • #12
                        Ich hätte jetzt mal unterstellt das der betreffende Server 72 Slots hat und mehr User nicht drauf passen.

                        Kommentar


                        • #13
                          Nichts Genaues weiß man nicht, im Eingangspost war noch von 75 Spielern die Rede, jetzt von 72 Usern. Ich würde davon ausgehen, dass auch bei einer Maximalanzahl gleichzeitiger Serverzugriffe diese irgendwo abgegriffen werden kann, um einen fest im Code verankerten Wert zu umgehen.

                          Kommentar

                          Lädt...
                          X