Jump to content
Sign in to follow this  
tommy67

Daten aus DB addieren und in DB speichern

Recommended Posts

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.


Auszug aus der php Datei:

  # 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.

Share this post


Link to post
Share on other sites

Mal ganz einfach gesagt ohne speziell auf dein Problem einzugehen.


Erkläre mal was in den beiden Feldern drin steht und was da errechnet werden soll.

Share this post


Link to post
Share on other sites

Hi Powie,


Also im Prinzip geht es nur um folgenden Bereich des Codes

        $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']
     );

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


Für eine andere Idee wie ich $gesamt Berechnen und speichern kann bin ich dankbar,

da das so wie ich es versucht habe scheinbar nicht geht.

Share this post


Link to post
Share on other sites

`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 ?


Keine Idee wie ich die Daten addiert bekomme ?

Share this post


Link to post
Share on other sites

Wenn die Spalten in der DB als INT definiert sind dann hast du keine Kommastellen, nur Ganzzahlen. Du musst die Definition der Felder in Double ändern.


P.S. Du kannst genauso die Datenbank rechnen lassen!!!


Bsp: select ( feld1 * feld2 ) as ergebnis From .......

Share this post


Link to post
Share on other sites

Hi Powie,


Also in allen Feldern ausser im feld durch werden nur ganzzahlen eingetragen ...


nur durch ist mit Kommastellen und das Habe ich als DOUBLE 4,2


Kannst du mir das mit der Datenbank rechnen lassen genauer erklären ?

Vllt. sogar den ganzen Code dafür schreiben, also nur für die Berechnung $gesamt


Ich wäre Dir zuwas von Dankbar.

Share this post


Link to post
Share on other sites

vergiss doch einfach mal alles andere an Code und stell Dir folgendes vor :


ich möchte aus einer DB einige Zellen auslesen (oder auch direkt berechnen)


DB

user | spalte1 | spalte2 | spalte3 | ... | spalte20 | spalte21 |

Test | 10 | 20 | 30 | .... | $gesamt | $durch |


$gesamt = spalte1 + spalte2 + spalte3 ...

$durch = $gesamt / 19


wie berechne ich $gesamt, bzw. wie kann ich die Daten aus der DB holen und dann addieren ?

Share this post


Link to post
Share on other sites

Also du möchtest das haben:


Select user,

(spalte1 + spalte2 + spalte3) as gesamt,

( (spalte1 + spalte2 + spalte3 ) / 19 ) as durch

From tabelle.....

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×