Ankündigung

Einklappen
Keine Ankündigung bisher.

Größe zahl aus der DB lesen und um eins erhöhen

Einklappen

Neue Werbung 2019

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

  • Größe zahl aus der DB lesen und um eins erhöhen

    Hi,

    ich hab ein feld 'position'
    dort hat jeder user seine position.
    Jetzt meldet sich ein neuer an. dieser muss ganz nach unten, heißt ich muss die höchste position aus der DB auslesen und um 1 einerhöhen.

    wie kriege ich die höchste position heraus?

  • #2
    mir fällt spontan nur ein, eine schleife laufen zu lassen, mit ner select anweisung, wo du aus allen Zeilen die 'position' ausliest, das ganze dann der größe nach ordnest (ORDER BY position) und die position bei jedem durchlauf in die gleiche Variable speicherst. am Ende, als noch der while-Schleife, steht in der Variable die größte, vorkommende 'position'.


    so würde ich des machen.

    Kommentar


    • #3
      Zitat von loxos
      mir fällt spontan nur ein, eine schleife laufen zu lassen, mit ner select anweisung, wo du aus allen Zeilen die 'position' ausliest, das ganze dann der größe nach ordnest (ORDER BY position) und die position bei jedem durchlauf in die gleiche Variable speicherst. am Ende, als noch der while-Schleife, steht in der Variable die größte, vorkommende 'position'.
      Wozu der ganze Aufwand?

      Code:
      SELECT spalte FROM tabelle ORDER BY spalte DESC LIMIT 1
      Gibt dir den Datensatz zurück, bei dem in Spalte der Höchste Wert steht.

      (Vielleicht hat SQL aber auch genau für dein Anliegen irgendeine spezielle Funktion, so dass du dir den Query sparen kannst...)

      mfG
      werbegeschenk
      [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

      Kommentar


      • #4
        Ja, nee, is' klar. Eine Schleife, die dann eventuell tausende von Datensätzen einliest, und dann am besten mit "Select *" arbeiten. Wie wäre es denn damit:
        PHP-Code:
        $query "Select Max(position) from tabelle";
        $result mysql_query($query);
        $max mysql_result($result,0); 
        Solche Spalten sollten am Besten als auto_increment definiert sein, dann muss man sich darum nicht selber kümmern.
        MfG
        Nobody

        Kommentar


        • #5
          danke

          Kommentar


          • #6
            PHP-Code:
              $query "Select Max(User_rank) from taa_1on1_ladder_piloten";
              
            $result2 mysql_query($query);
              
            $max mysql_result($result2,0);
              
            $max '$max+1';
              
              
            mysql_query("INSERT INTO taa_1on1_ladder_piloten(User_nick,User_email,User_passw, User_rank) VALUES('".$_POST['nick']."','".$_POST['email']."','".$_POST['passw1']."','$max')",$link); 
            Hm irgendwie klappt das mit dem erhöhen nicht so richtig
            kann mir einer sagen was hier falsch ist?

            Kommentar


            • #7
              Zitat von Nana23
              Hm irgendwie klappt das mit dem erhöhen nicht so richtig
              kann mir einer sagen was hier falsch ist?
              [PHP
              PHP-Code:
                $max '$max+1'
              Was suchen die Anführungszeichen dort? So erzeugst du einen String $max indem steht "$max+1"....

              mfG
              werbegeschenk
              [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

              Kommentar


              • #8
                Also einfach nur

                $max = $max++

                ???
                ab total das brett mal wieder vorm kopf. sorry

                Kommentar


                • #9
                  $max++; reicht da auch.

                  Kommentar


                  • #10
                    hm leider klappt das nicht
                    hier jetzt nochmal der aktuelle code:

                    PHP-Code:
                      $query "Select Max(User_rank) from taa_1on1_ladder_piloten"
                      
                    $result2 mysql_query($query); 
                      
                    $max mysql_result($result2,0); 
                      
                    $max $max++; 
                       
                      
                    mysql_query("INSERT INTO taa_1on1_ladder_piloten(User_nick,User_email,User_passw, User_rank) VALUES('".$_POST['nick']."','".$_POST['email']."','".$_POST['passw1']."','$max')",$link);?> 

                    Kommentar


                    • #11
                      mysql_error()

                      Kommentar


                      • #12
                        Mische mich jetzt auch mal ein.

                        $_POST['passw1']."','$max')",$link);
                        Sollte das nicht so heissen:

                        PHP-Code:
                        ['passw1']."','".$max."')",$link); 

                        Kommentar


                        • #13
                          Nicht selber durchzählen und erhöhen. Die Datenbank soll für eindeutige Werte sorgen.
                          Sonst muss Du die Tabelle vor dem SELECT bis nach dem INSERT sperren - oder Du bekommst race conditions.

                          beachte:
                          Zitat von *Nobody*
                          Ja, nee, is' klar. Eine Schleife, die dann eventuell tausende von Datensätzen einliest, und dann am besten mit "Select *" arbeiten. Wie wäre es denn damit:
                          PHP-Code:
                          $query "Select Max(position) from tabelle";
                          $result mysql_query($query);
                          $max mysql_result($result,0); 
                          Solche Spalten sollten am Besten als auto_increment definiert sein, dann muss man sich darum nicht selber kümmern.
                          MfG
                          Nobody

                          Kommentar

                          Lädt...
                          X