Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Punktesystem

Einklappen

Neue Werbung 2019

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

  • MySQL Punktesystem

    Ich habe den wert "hans;dieter;klaus;peter;" und nun soll php in der MySQL Datenbank für jeden dieser 4 User die Spalte coins um 1 erhöhen.

  • #2
    Und dein Ansatz ist wo?
    Du kannst einfach IN() verwenden. Davor musst du die Werte nur in ein passendes Format bringen (getrennt durch Beistrich und einzelne Werte in Hochkommas).

    Kommentar


    • #3
      Ich habe einen Kopf, zwei Hände und einen Bleistift. Daneben die Semsterprüfung. Nun muss ich die Lösungen haben.


      Merkste was?
      [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

      Kommentar


      • #4
        Wie währe es mit einem select von allen und dann einen Updatee Befehl? also mit her normalen abfrage alle werte rausfischen dann die Coins spalte +1 nehmen und wieder mit einer geziehlten Update Befehl alles wieder aktualisieren?

        Gesendet von meinem U8655-1 mit Tapatalk 2

        Kommentar


        • #5
          PHP-Code:
          UPDATE table SET field field 1 WHERE user = ...... 

          Kommentar


          • #6
            Zitat von paulnator2112 Beitrag anzeigen
            Wie währe es mit einem select von allen und dann einen Updatee Befehl?
            Schalten Sie auch morgen wieder ein zu: Anfänger fragen, Vollpfosten mit Halbwissen antworten!
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Ich scheiter bereits an der Frage. Gibt es 2 Spalten mit { Spalte 1 = NAMEN; Spalte 2 = COINS } und in Spalte 2 soll dann quasi nur { DISTINCT ANZAHL NAMEN } abgebildet werden?

              Zitat von akretschmer Beitrag anzeigen
              Schalten Sie auch morgen wieder ein zu: Anfänger fragen, Vollpfosten mit Halbwissen antworten!
              Kommt vielleicht drauf an, wie die Frage zu verstehen ist. Wenn das Problem des Users mit einem "explode()" und einem anschliessenden Update zu lösen ist...

              Kommentar


              • #8
                MySQL Punktesystem

                Wenn du für so etwas ein explode benötigst empfehle ich der Reihe nach Normalisierung und einen Leitartikel zu "auch Datenbanken können rechnen"...

                Mein Vorschlag wäre eine Transaktionstabelle und ein Trigger.
                [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                Kommentar


                • #9
                  Zitat von ChristianK Beitrag anzeigen
                  Wenn du für so etwas ein explode benötigst empfehle ich der Reihe nach Normalisierung und einen Leitartikel zu "auch Datenbanken können rechnen"...
                  Nein, ich habe das anders gemeint. Was ist, wenn "hans;dieter;klaus;peter;" gar nicht in der Datenbank steht? Was ist, wenn das PHP-seitig liegt, dort auseinandergenommen und datenbankseitig bereits existierende Daten nur inkrementiert werden sollen?

                  PHP-Code:
                  <?php
                  // Attention: Concept code
                  $line $_POST['data'];
                  $names explode(';'$line);
                  $names array_map('trim'$names);
                  $names array_filter($names);
                  foreach(
                  $names as $name) {
                      
                  $db->exec('UDPATE table SET coins = coins + 1 WHERE name = :name', ['name' => $name]);
                  }

                  Kommentar


                  • #10
                    Ja und wo ist da der SELECT?

                    Kommentar


                    • #11
                      Zitat von xenot Beitrag anzeigen
                      Ich habe den wert "hans;dieter;klaus;peter;" und nun soll php in der MySQL Datenbank für jeden dieser 4 User die Spalte coins um 1 erhöhen.
                      Zitat von Tropi Beitrag anzeigen
                      Ja und wo ist da der SELECT?

                      Kommentar


                      • #12
                        Zitat von rkr Beitrag anzeigen
                        PHP-Code:
                        foreach($names as $name) {
                            
                        $db->exec('UDPATE table SET coins = coins + 1 WHERE name = :name', ['name' => $name]); 
                        Rly?
                        1.000 Namen = 1.000 Queries?
                        VokeIT GmbH & Co. KG - VokeIT-oss @ github

                        Kommentar


                        • #13
                          Zitat von G.Schuster Beitrag anzeigen
                          Rly?
                          1.000 Namen = 1.000 Queries?
                          Das ist der Grund, warum ich
                          PHP-Code:
                          // Attention: Concept code 
                          eingebunden hatte. Aber ja - so hatte ich die Aufgabe jetzt verstanden. Kann man durch ein mass-INSERT (mit ON DUPLICATE KEY UPDATE) optimieren. Allerdings nicht durch ein UPDATE mit IN(), wenn Namen doppelt gewertet werden koennen sollen.

                          Kommentar


                          • #14
                            Zitat von rkr Beitrag anzeigen
                            Ich nehme akretschmer nahm in seiner Antwort Bezug auf SELECT + UPDATE, im Sinne von:
                            PHP-Code:
                            $id 5;
                            $user db_fetch_obect(db_query("SELECT * FROM user WHERE id =".$id));
                            $user->coins++;
                            db_query("UPDATE user SET coins = ".$user->coins." WHERE id = ".$id);
                            /*
                             * Die Methoden db_* sind natürlich erfunden, nicht das jemand den Quatsch hier kopiert
                            */ 
                            nahm.

                            Das SELECT ist unnötig, weil, wie auch schon gezeigt wurde, das gleich mit einem Rutsch im UPDATE geht. Ein zusätzliches SELECT wie oben ist aber NIE nötig, denn entweder die Werte kommen aus der Datenbank, dann kann man das im UPDATE machen oder die Werte kommen von wo anders (z.B. statisch) dann brauchts eben ein explode() o.ä.

                            Mein letzter Post war darauf bezogen das du einerseits paulnators Antwort verteidigst, es dann aber selber anders (besser; mal abgesehen von den vielen Einzel-Queries) machst.

                            Kommentar

                            Lädt...
                            X