Announcement

Collapse
No announcement yet.

Daten berechnen und in DB speichern ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten berechnen und in DB speichern ?

    Guten Morgen,

    ich hoffe ich finde hier jemanden der mir helfen kann.
    Kurz erklärt, ich habe ein Profil Formular welches Daten aus einer DB liest und anzeigt.
    Ein User aknn seine Daten dann verändern und diese werden dann wieder in die DB geschrieben.
    Soweit funktioniert das auch.

    Ich habe aber noch 2 weitere Felder in der DB die auf dem Formular nicht angezeigt werden.
    gesamt und durch
    Diese sollen beim Abschicken der Formulars berechnet und in die DB geschrieben werden.
    Das jedoch will nicht funktionieren !
    In der DB werden nur 0 in "gesamt" und 0.00 in "durch" eingetragen.


    Auszug aus der php Datei:
    Code:
      # statische felder speichern
    		  db_query("UPDATE prefix_user
    			  SET
              homepage = '".get_homepage(escape($_POST['homepage'], 'string'))."',
              wohnort = '".escape($_POST['wohnort'], 'string')."',
              icq = '".escape($_POST['icq'], 'string')."',
              msn = '".escape($_POST['msn'], 'string')."',
              yahoo = '".escape($_POST['yahoo'], 'string')."',
              ".$avatar_sql_update."
              aim = '".escape($_POST['aim'], 'string')."',
              staat = '".escape($_POST['staat'], 'string')."',
              geschlecht = '".escape($_POST['geschlecht'], 'string')."',
              status = '".escape($_POST['status'], 'string')."',
              opt_mail = '".escape($_POST['opt_mail'], 'string')."',
              opt_pm = '".escape($_POST['opt_pm'], 'string')."',
              opt_pm_popup = '".escape($_POST['opt_pm_popup'], 'string')."',
              gebdatum = '".get_datum(escape($_POST['gebdatum'], 'string'))."',
              sig = '".substr(escape($_POST['sig'], 'string'),0,$allgAr['forum_max_sig'])."',
    		  gilde = '".escape($_POST['gilde'], 'string')."',
      		  lev = '".escape($_POST['lev'], 'string')."',
    		  alf = '".escape($_POST['alf'], 'int')."',
    		  fen = '".escape($_POST['fen'], 'int')."',
    		  gla = '".escape($_POST['gla'], 'int')."',
    		  hel = '".escape($_POST['hel'], 'int')."',
    		  mid = '".escape($_POST['mid'], 'int')."',
    		  nam = '".escape($_POST['nam'], 'int')."',
    		  forn = '".escape($_POST['forn'], 'int')."',
    		  wat = '".escape($_POST['wat'], 'int')."',
    		  ruf = '".escape($_POST['ruf'], 'int')."',
    		  tok = '".escape($_POST['tok'], 'int')."',
    		  kar = '".escape($_POST['kar'], 'int')."',
    		  abe = '".escape($_POST['abe'], 'int')."',
    		  sos = '".escape($_POST['sos'], 'int')."',
    		  vol = '".escape($_POST['vol'], 'int')."',
    		  cad = '".escape($_POST['cad'], 'int')."',
    		  ran = '".escape($_POST['ran'], 'int')."',
    		  gle = '".escape($_POST['gle'], 'int')."',
    		  pgi = '".escape($_POST['pgi'], 'int')."',
    		  ctp = '".escape($_POST['ctp'], 'int')."'
    				WHERE id = ".$_SESSION['authid']
          );
    
    		$abfrage = 'SELECT gilde,lev,alf,fen,gla,hel,mid,nam,forn,wat,ruf,tok,kar,abe,sos,vol,cad,ran,gle,pgi,ctp,gesamt,durch FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';
    		
    		$gesamt = 0;
    		$gesamt = $row->alf + $row->fen + $row->gla + $row->hel + $row->mid + $row->nam + $row->forn + $row->wat + $row->ruf + $row->tok + $row->kar + $row->abe + $row->sos + $row->vol + $row->cad + $row->ran + $row->gle + $row->pgi + $row->ctp;
    		$durch = ($gesamt/19);		  
    
    		  db_query("UPDATE prefix_user
    			SET
              gesamt = '$gesamt',
              durch = '$durch'			   
    		  	WHERE id = ".$_SESSION['authid']
          );
    Das Problem fängt unten ab Zeile 44 $abfrage = .... an

    Ich hoffe das ihr mir dabei helfen könnt und bedanke mich schon mal im voraus.
    Zuletzt editiert von Tommy67; 13.05.2010, 10:40.

  • #2
    Das Problem fängt unten ab Zeile 44 $abfrage = .... an
    Was für ein Problem?
    Christian

    Comment


    • #3
      Habe das Problem oben, im 1. Beitrag, mal in FETT hervorgehoben.

      Comment


      • #4
        Das jedoch will nicht funktionieren !
        ist wenig hilfreich für jemanden, der nicht weiss um was es geht, den Code nicht kennt

        Wenn falsche Daten gespeichert werden, solltest du prüfen, was überhaupt berechnet wird?

        Wer ist $row, mit dem du die Berechnung durchführst? Wo wird dieser mit den Daten versorgt? Würde darauf tippen, du führst die Berechnung mit falschen Daten durch

        Bei solchen Problemen kannman debuggen oder die Ausgaben mit echo prüfen
        Christian

        Comment


        • #5
          Hallo Christian,

          vergiss einfach mal das $row.

          Die Abfrage $abfrage = ..... beinhaltet alle Werte die ich brauche.
          $gesamt soll eigentlich nur die Werte die ich mit der Abfrage aus der DB hole addieren, allerdings gibt es dort auch negative Werte, und das Ergebnis könnte auch negativ sein.

          Wenn Du eine andere Idee hast wie ich $gesamt und danach $durch ($gesamt / ZAHL z.B. 19) berechnen kann, wäre ich auch sehr dankbar.

          Nach der Berechnung sollten die beiden Werte dann in der DB gespeichert werden.

          Das wie, ist mir eigentlich egal. Hauptsache es geht.

          MfG Tommy67

          Comment


          • #6
            Sorry, befürchte das ist mir zu hoch:

            Wenn das

            In der DB werden nur 0 in "gesamt" und 0.00 in "durch" eingetragen.
            zutrifft, ist doch

            $gesamt = $row->alf + $row->fen ....

            mit großer Wahrscheinlichkeit falsch, ausgenommen das Ergebnis ergibt durch Zufall wirklich 0.
            Und dann ergibt nüscht dividiert durch 19 eben nüscht

            Die Klammerung ist bei der Division unnötig. Um die Nachkommastelle zu erzwingen kannst du /19.0 nutzen

            Oder geht es nicht um die Errechung des Betrages, sondern um das Speichern in die DB?
            Christian

            Comment


            • #7
              Richtig , bei der Berechnung ist was falsch.

              Den das Ergebnis ist weder 0 für $gesamt noch 0.00 für $durch.
              Kein Zufall !

              Nochmal, ich hoffe Verständlicher.

              Über die
              Code:
              $abfrage = 'SELECT gilde,lev,alf,fen,gla,hel,mid,nam,forn,wat,ruf,tok,kar,abe,sos,vol,cad,ran,gle,pgi,ctp,gesamt,durch FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';
              bekomme ich ja die Daten
              alf,fen,gla,hel,mid,nam,forn,wat,ruf,tok,kar,abe,s os,vol,cad,ran,gle,pgi,ctp,
              10,-5,-9,4,-12,6,10,-8, usw.
              Diese möchte ich dann addiert als $gesamt haben und in die DB speichern.

              Den Durchschnitt $durch ($gesamt/19) soll dann ebenso in die DB gespeichert werden.

              Das mit dem $row->alf + .... war ja nur eine Idee die ich in einem ganz anderem Zusammenhang mal gemacht habe, hier aber scheinbar nicht funktioniert.

              Wenn Du eine andere Idee hast wie ich die Werte addiert bekomme wäre mir das egal. Wichtig ist nur das es berechnet und gespeichert wird.

              Egal wie böse Du diesen Beitrag liesst, es ist wirklich nicht böse gemeint und ich Danke Dir für Deine Hilfe.

              Comment


              • #8
                Ähhh, und die $abfrage wird irgendwann an die DB geschickt?

                Im Augenblick ist es erstmal nix als eine Variable mit einer Zeichenkette
                Christian

                Comment


                • #9
                  Jetzt kommen wir der Sache schon näher ;-)

                  im Prinzip ist das :
                  Code:
                  		$abfrage = 'SELECT gilde,lev,alf,fen,gla,hel,mid,nam,forn,wat,ruf,tok,kar,abe,sos,vol,cad,ran,gle,pgi,ctp,gesamt,durch FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';
                  		
                  		$gesamt = 0;
                  		$gesamt = $row->alf + $row->fen + $row->gla + $row->hel + $row->mid + $row->nam + $row->forn + $row->wat + $row->ruf + $row->tok + $row->kar + $row->abe + $row->sos + $row->vol + $row->cad + $row->ran + $row->gle + $row->pgi + $row->ctp;
                  		$durch = ($gesamt/19);		  
                  
                  		  db_query("UPDATE prefix_user
                  			SET
                            gesamt = '$gesamt',
                            durch = '$durch'			   
                  		  	WHERE id = ".$_SESSION['authid']
                        );
                  alles um was es geht.

                  Korrigiere mich wenn ich was falsches schreibe.

                  Ich sehe das so:

                  Ich frage die Daten aus der DB ab
                  $abfrage = ...

                  setze $gesamt auf 0

                  und will die Daten aus der Abfrage in $gesamt addieren
                  $durch = $gesamt duch eine Zahl (19) teilen

                  und dann beides in die DB schreiben.

                  Alle Werte sind in der DB auf INT gesetzt, ausser durch ist Double 4,2

                  Comment


                  • #10
                    Nein, bloß weil du Variablen mit entsprechenden SQL-Statements zusammenbaust, erfolgt noch keine Interaktion mit der DB

                    http://www.php.net/manual/en/book.mysql.php

                    http://www.php.net/manual/en/function.mysql-query.php

                    Edit:

                    Hier scheinst du doch sowas zu tun??

                    db_query("UPDATE
                    Zuletzt editiert von Christian Marquardt; 13.05.2010, 12:11.
                    Christian

                    Comment


                    • #11
                      Also, habe noch mal weiter getestet.

                      Habe die Zeile $gesamt = alf + fen + ... mal rausgenommen und
                      $gesamt = 25
                      gemacht

                      Es wird dann tatsächlich die 25 in der DB gespeichert und $durch auf 1,32.

                      Soweit scheint ja alles richtig zu sein !!!

                      Nur die Berechnung von $gesamt = ... ist wohl falsch

                      Wie kann ich diese Daten sonst addieren ?
                      Und bitte nicht immer auf die PHP Seiten verlinken.
                      Habe da schon etliche Stunden gelesen um das hinzubekommen.

                      Keine Idee wie ich die Daten addiert bekomme ?

                      Comment


                      • #12
                        Siehe Beitrag 10

                        Klar wird geschrieben:

                        db_query("UPDATE prefix_user
                        SET


                        Keine Idee wie ich die Daten addiert bekomme ?
                        Du hast keine Daten zum berechnen

                        Dir fehlt die Query mit der Abfrage die deine Abfrage zur DB sendet
                        Christian

                        Comment


                        • #13
                          Hallo Christian

                          vielen Dank für Alles ...

                          Leider komme ich mit einem solchen Beitrag kein Stück weiter.
                          Das irgendwas nicht geht und ein Fehler in der Sache steckt weiss ich selber.

                          Ich bin der Meinung wenn jemand um Hilfe bittet, helfe ich bis es geht oder ich melde mich erst gar nicht.

                          Aber ich werde das schon rausfinden...

                          MfG Tommy67

                          Bye

                          Comment


                          • #14
                            Ich bin der Meinung wenn jemand um Hilfe bittet, helfe ich bis es geht oder ich melde mich erst gar nicht.
                            Du bist nicht in der Lage zu verstehen, dass es nicht genügt, eine Variable zusammen zu setzen um eine DB-Abfrage zu machen und meckerst jetzt rum??

                            Das irgendwas nicht geht und ein Fehler in der Sache steckt weiss ich selber.
                            Der Fehler ist ganz klar zu erkennen

                            $ergebnis = mysql_query("SELECT * FROM tabelle");


                            und nicht

                            $abfrage="SELECT * FROM tabelle";

                            Ich bin der Meinung, wenn

                            - jemand keine Tutorials per Link lesen und verstehen kann
                            - jemand einfache Vergleiche nicht verstehen kann

                            sollte er lieber keine Computer benutzen und schon gar nicht programmieren wollen
                            Zuletzt editiert von Christian Marquardt; 13.05.2010, 12:57. Reason: Rot & Fett
                            Christian

                            Comment


                            • #15
                              helfe ich bis es geht oder ich melde mich erst gar nicht.
                              Wüsste nicht, dass du hier für Hilfe bezahlst oder sonst eine Dienstleistung erbringst.

                              Hier wird freiwillig und solange man kann oder will geholfen.

                              Deine Ansprüche sind unverständlich
                              Christian

                              Comment

                              Working...
                              X