[Variablen] Rechenfehler.

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

  • [Variablen] Rechenfehler.

    Ich habe folgendes Problem ich übergebe den wert $status über die URl
    Wenn status 1 ist, ist auch alles OK doch sobald status 2 zum einsatz kommt wird der $zaehler um 1 erhöht was noch stimmt jedoch bis zum eintrag in die DB ist der wert um 2 erhöht.
    Auch ist es der fall das wenn bei status 2 nicht unique in der DB angegeben ist der User 2x eingetragen wird.
    Also eigentlich ist da ja nicht viel drinnen wo ich falsch machen könnte oder ?

    PHP-Code:
        <?
        session_name("sid");
        session_start();
                        require "./admin/_data.inc.php";
                        require("global.php");
                        require("_header.php");
                                 $seite = "reg_nr";
                                 $result = $db_zugriff->query("SELECT * from reg_allgm WHERE seite = '$seite'");
                                 $row = $db_zugriff->fetch_array($result);
                                 $datum = date("j.n.Y");
        if ($status==1){
                        $zaehler = $row[stand];
                        $zaehler++;
                        $sql = "UPDATE reg_allgm SET stand=$zaehler WHERE seite = '$seite'";
                                 mysql_db_query($mysqldb, $sql0);
                                 echo mysql_error();
                                  $reg_id = $zaehler;
                                  $usertable ="reg_a_user";
                                  $freischaltung .="<br>Deine Mitgliedsnummer: $zaehler";
                                  $dat .="<br>$datum";
                                         }
        if ($status==2){
                        $zaehler = $row[stand2];
                        $zaehler++;
                        $sql = "UPDATE reg_allgm SET stand2=$zaehler WHERE seite = '$seite'";
                                 mysql_db_query($mysqldb, $sql);
                                 echo mysql_error();

                                   $reg_id = $zaehler;
                                   $usertable ="reg_b_user";
                                   $freischaltung .="<br>Deine Mitgliedsnummer: $zaehler";
                                   $dat .="<br>$datum";

                                         }
        else{

                }
                        $sqlwert = ("INSERT INTO $usertable (reg_id, userid) VALUES ($reg_id, $user_id)");
                                   mysql_db_query($mysqldb, $sqlwert);
                                   echo mysql_error();
                        $sqlwert2 = ("Update bb2_user_table SET regstatus=$status WHERE userid = '$user_id'");
                                   mysql_db_query($mysqldb, $sqlwert2);
                                   echo mysql_error();
                        eval("dooutput("".gettemplate("reg_freischaltung")."");");
        ?>
    Sollte noch fragen offen sein bitte posten.
    Zuletzt geändert von Wurzel; 24.06.2004, 16:21.
    Den Wind kann man nicht ändern, aber die Segel richtig setzen.

  • #2
    siehe Anhang, kennste das?
    Angehängte Dateien
    mfg
    marc75

    <Platz für anderes>

    Kommentar


    • #3
      Re: [Variablen] Rechenfehler.

      Sollte noch fragen offen sein bitte posten.
      - schaust du dir deine beiträge nach dem posten an?
      - woher kommt status?
      - was meinst du mit 'um zwo erhöht'? 3? oder 4?

      benutz mal elseif, das script macht doch genau das, was du programmiert hast was soll das script machen?
      Zuletzt geändert von derHund; 24.06.2004, 16:23.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        - schaust du dir deine beiträge nach dem posten an?
        ne leider nicht immer da ich auf arbeit bin und das hier immer nur zwischendurch machen kann und leider immer wenn man was postet ein kunde kommt sorry

        - woher kommt status?
        status wird über link übergeben
        www.adresse.de/dateiname.php?status=1 (oder 2)


        - was meinst du mit 'um zwo erhöht'? 3? oder 4?
        der wert zaehler wird aus einer DB ausgelesen
        ("stand" für user kateg. 1 und "stand2" für user kateg. 2)

        Das soll die mitgliedsnummer geben so wenn user mit status 1 reingeht funktioniert es einwandfrei nur eben bei usern mit mitgliedstatus 2 tritt folgender fehler auf

        ausgelesener wert: 10000
        Mitgliedsnummer : 10001 (noch ok)
        nächste mitgliedsnummer ist dann aber 10003 was wohl falsch ist
        auch in der db "stand2" werden 2 statt nur 1 dazuaddiert.
        Den Wind kann man nicht ändern, aber die Segel richtig setzen.

        Kommentar


        • #5
          ohne den code anzusehen, ist es ein auto_inc feld in der DB? wurde ein Eintrag gelöscht? dann ist es normal
          mfg
          marc75

          <Platz für anderes>

          Kommentar


          • #6
            Nein passiert auch beim ersten user, ist kein auto incr. gesetzt


            Feld Typ Attribute Null Standard Extra Aktion
            id int(11) Nein auto_increment
            seite varchar(30) Nein
            stand int(11) Nein 0
            stand2 int(11) Nein 0
            Alle auswählen / Auswahl entfernen markierte:



            das ist alles.

            ich verstehe einfach nicht wieso er bei stand2 immer 2 dazu addiert
            Den Wind kann man nicht ändern, aber die Segel richtig setzen.

            Kommentar


            • #7
              jetzt versteh ich gar nichts mehr !

              jetzt versteh ich gar nichts mehr !


              PHP-Code:
                  if ($status==2){
                                  
              $zaehler $row[stand2];
                                  
              $zaehler++;
                                  
              $sql "UPDATE reg_allgm SET stand2=$zaehler WHERE seite = '$seite'";
                                           
              mysql_db_query($mysqldb$sql);
                                           echo 
              mysql_error();

                                             
              $reg_id $zaehler;
                                             
              $usertable ="reg_b_user";
                                             
              $freischaltung .="<br>Deine Mitgliedsnummer: $zaehler";
                                             
              $dat .="<br>$datum";

                                                   } 
              wenn ich den $zaehler durch "$zaehler+++" ersetze geht es einwandfrei und er zählt wie gewünscht 1 nur dazu.

              Und wieso bekomme ich bei $zaehler+++; einen Parse error und muss das Semikolon weglassen ?

              Ist jemand in der Lage mir das irgendwie begreiflich zu machen ?

              thx: abraxas
              Den Wind kann man nicht ändern, aber die Segel richtig setzen.

              Kommentar


              • #8
                eine Ahnung, haste hier mal geschaut:

                http://www.php.net/manual/de/language.expressions.php
                mfg
                marc75

                <Platz für anderes>

                Kommentar


                • #9
                  Re: jetzt versteh ich gar nichts mehr !

                  Original geschrieben von Abraxas
                  Und wieso bekomme ich bei $zaehler+++; einen Parse error und muss das Semikolon weglassen ?
                  vielleicht, weil der Post-Inkrement-Operator ++ und nicht +++ heißt ...?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    vielleicht, weil der Post-Inkrement-Operator ++ und nicht +++ heißt ...?
                    Ja aber wie ich geschrieben hab sobald ich ++ mache zählt er immer +2 auf die variable und bei +++ macht er +1

                    Siehe oben weil ich das jetzt überhaupt nicht mehr kapiere !
                    Den Wind kann man nicht ändern, aber die Segel richtig setzen.

                    Kommentar


                    • #11
                      Original geschrieben von Abraxas
                      Ja aber wie ich geschrieben hab sobald ich ++ mache zählt er immer +2 auf die variable und bei +++ macht er +1
                      daraus würde ein halbwegs logisch denkender mensch jetzt vermutlich schliessen, dass

                      a) +++ gänzlich ohne wirkung ist (wie du den fehler dabei eliminierst, ist mir aber noch schleierhaft)
                      b) ++ an dieser stelle vermutlich um genau eins erhöht, und damit
                      c) das "zweite" mal plus eins an einer ganz anderen stelle passieren muss ...
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Original geschrieben von wahsaga
                        a) +++ gänzlich ohne wirkung ist (wie du den fehler dabei eliminierst, ist mir aber noch schleierhaft)
                        Zustimme deswegen ja mein dumme frage!

                        c) das "zweite" mal plus eins an einer ganz anderen stelle passieren muss ... [/B][/QUOTE]

                        Nur wo die datei ist eigentständig und wird nur von 1 angesprochen die ausser dem <h ref mit dem dateiname.php?status=1 keine variabeln oder formeln bisher enthält.

                        und die include dateien hab ich geprüft da kommt keiner der variabeln drinnen vor, die db hab ich erstellt und auch schon zellennamen geändert (da ich dachte irgendwo eine doppelte variable zu haben)
                        Den Wind kann man nicht ändern, aber die Segel richtig setzen.

                        Kommentar


                        • #13
                          also mal nur so, der code ist nicht ganz sauber programmiert.

                          ich würd mal den $HTTP_GET_VARS einbauen und die register globals off.

                          Wo kommt eigentlich die Variable Stand und Stand2 her?

                          warum machst du's nicht über

                          $zaelerstandNeu=max(result["Feldname Kundennummer"])+1;
                          Zuletzt geändert von oeno; 25.06.2004, 18:05.

                          Kommentar


                          • #14
                            stand und stand2 werden aus einer datenbank ausgelesen!

                            Hab noch ausprobiert wenn ich $zaehler++ bzw+++ ganz rausnehme bleib der wert fest stehen und es wird 0 hinzuaddiert

                            Auch habe ich mitlerweile alle fremdverbindungen entfernt so das es ausser die aufzurufende html datei keine andere datei gibt die reinfuschen könnte.

                            Geholfen hat das jedoch auch nicht es bleibt dabei er zählt immer noch +2
                            Zuletzt geändert von Abraxas; 26.06.2004, 08:48.
                            Den Wind kann man nicht ändern, aber die Segel richtig setzen.

                            Kommentar


                            • #15
                              ist das was du postest, auch vollständig? oder befinden sich noch Codeteile davor und danach? Du verwendest gerne register_globals = On ? ausserdem, verstehe ich nicht, was der Unfug sein soll:
                              PHP-Code:
                              $zaehler $row[stand];
                              $zaehler++;
                              // stattdessen wäre $zaehler = $row[stand] + 1; angebrachter? 

                              Kommentar

                              Lädt...
                              X