[MySQL] Zahlen addieren

Erks

Erfahrenes Mitglied
Ich habe in einer Tabelle eine Spalte, wo Zahlen drinstehen. Diese Spalten könnte ich dann mit dem Code...

PHP:
require ('mysql.php');
	
$sqlselectstufe1= "SELECT * FROM  ---------- WHERE -----------";	
	if(!$res_id = mysql_query($sqlselectstufe1)){
	die(mysql_error());
	}
	while($admin=mysql_fetch_array($res_id)){
	echo $admin['zahl'];
	
}

aufrufen lassen, aber wie addiere ich die ausgegebenen Werte?
 
Eine Lösung wäre z.B.: diese
PHP:
$sqlselectstufe1= "SELECT * FROM  ---------- WHERE -----------";    
$gesamt=0;//beginnt bei null 
    if(!$res_id = mysql_query($sqlselectstufe1)){
    die(mysql_error());
    }
    while($admin=mysql_fetch_array($res_id)){
   $gesamt=+$admin['zahl'];   // Addiert die zahlen zusammen
  echo ($admin['zahl']);
    
}  
echo("Gesamt: $gesamt");
 
Wenn du die Datensätze nicht weiter benötigst, kannst du auch mit MySQL die Werte summieren:
Code:
SELECT SUM(`zahl`) AS `summe` FROM …
 
Sorry...ich bins nochmal ;)

Da ist doch noch eine Frage offen...

Dieser Code (s.o.) bezieht sich auf alles besser gesagt, wie ich es haben wollte.

Danke

Aber jetzt hab verschiedene User, denen vers. Punkte zugeordnet werden. Wie kann ich das dann auf vers. User begrenzen. Ich hab es schoneinmal versucht erstmal die Tabelle der einzelnen User aufzurufen und per "echo" ausgegeben.

User Code:
PHP:
$sqlselect= "SELECT * FROM user";	
	if(!$res_id = mysql_query($sqlselect)){
	die(mysql_error());
	}
	while($admin=mysql_fetch_array($res_id)){
	$nameuser=$admin['nachname'].', '.$admin['vorname'];
	$userid=$admin['ID'];


Punkte Code:
PHP:
$sqlpunkteges= "SELECT SUM(`punkte`) AS `summe` FROM allg_punkte WHERE `ID`='$userid'";    
    if(!$res_id = mysql_query($sqlpunkteges)){
    die(mysql_error());
    }
    while($punkte=mysql_fetch_array($res_id)){
    $gesamtuser=$punkte['summe'];
		  }

Wenn ich jetzt nur den User Code "laufen lasse", dann klappt alles einwandfrei, aber wenn ich dann noch den Punkte Code dazu laufen lasse und er dann pro User seine Gesamtpunktezahl angeben soll, klappt das nicht. Der zeigt mir dann nicht alles.

Wo liegt mein Denkfehler?
 
Mal so ne blöde Frage, warum machst du es dir nicht einfacher?

Füge ne neue Zeile bei deiner Usertabelle ein, die einfach heißt UserPoints als INT '11'

Wenn er jetzt irgendwo in deinem Script Punkte bekommt, dann hol dir einfach die aktuelle Punktzahl aus der Datenbank und setzte die alte Punktzahl+den neuen und Update die Zeile UserPoints. Ist doch viel einfacherer und kostet auch weniger Rechenleistung. ;)

Hier mal en gleines Beispiel, wie man das bei Foren machen kann:

PHP:
function useraddpoint($userid,$userrangid,$oldposts,$userrang){
	global $DB_Name;
	$posts=$oldposts+1;
	mysql_db_query($DB_Name, "UPDATE ecms_members SET posts='$posts' WHERE id='$userid'");
	if(!$userrangid):
		$sql=mysql_db_query($DB_Name, "SELECT * FROM ecms_ranks WHERE needposts<='$posts'");
		if($out=mysql_fetch_array()):
			if($out['ranktitle']!=$userrang):
				mysql_db_query($DB_Name, "UPDATE ecms_members SET userrang='".$out['ranktitle']."' WHERE id='$userid'");
			endif;
		endif;
	endif;
}

Hier ist so gar gleich dabei, welchen Userrang der User nach den neuen Punkten erhalten wird. :)
 
Zur vorigen Frage probieres vielleicht mal mit GROUP BY

Vielleicht so:
PHP:
$sqlpunkteges= "SELECT SUM(`punkte`) AS `summe` FROM allg_punkte WHERE `ID`='$userid' GROUP BY ID";    
    if(!$res_id = mysql_query($sqlpunkteges)){
    die(mysql_error());
    }
    while($punkte=mysql_fetch_array($res_id)){
    $gesamtuser=$punkte['summe'];
          }
 
@FreakDad
Das Zusammenzählen der Punkte ist schön und gut, doch werden hier nicht nur Punkte addiert, sondern es gibt immer eine Bestimmte Punktanzahl für ein Ereignis. Wenn sich nun ein User was neues "dazu verdient" wir das gespeichert und deshalb gibt es unterschiedliche Werte. Deshalb kann man auch nicht einfach drauf addieren.

@hmmNaGut
das "GROUP BY" funktioniert, aber jetzt zeigt der mir den Namen von der Person nicht mehr an. :(
Der Name der Person ist immer in der selben Zeile wie die Punkte. Warum der Name? Damit man es dem jeweiligen User zuordnen kann ;)
 
Hi,

mal'n bischen mitdenken und nicht nur kopieren...

In der SQL-Abfrage wird ja nur die Summe ausgewählt. Nimm den Namen dazu und alles wird gut. ;)

LG
 
Kann sein das ich das jetzt falslch verstehe...
PHP:
$sqlpunkteges= "SELECT SUM(`punkte`)AS `summe`, username FROM allg_punkte WHERE `ID`='$userid' GROUP BY ID";    
    if(!$res_id = mysql_query($sqlpunkteges)){
    die(mysql_error());
    }
    while($punkte=mysql_fetch_array($res_id)){
    $gesamtuser=$punkte['summe'];
          }
 
Zurück