Multiplikationen mit SUM

Venillla

Mitglied
Hallo
Ich brauche dringend Hilfe bei meiner Zeiterfassungssystem..

Ich wähle im Dropdownfeld ein Objekt und Jahr aus. Mit dem Script unten werden die gesamten Stunden der Mitarbeiter im gewählten Jahr angezeigt.
Daneben möchte ich noch ein Feld einfügen, wie viel der Mitarbeiter für die Stunden erhält.
Da die Stunden objektabhängig sind, habe ich für sie eine neue Tabelle erstellt:

Stundenansatz (ID, Mitarbeiter, Objekt, Stunden)


Also diese Tabelle muss SUM(zeit) x Stunden aus Stundenansatz (dieser muss aber auch das gleiche Objekt sein wie im Dropdown ausgewählt.) anzeigen.

Beispiel:

Mitarbeiter A hat im Objekt Sport im Jahr 2009, 10 Stunden gearbeitet -> SUM(zeit) = 10

Mitarbeiter A bekommt pro Stunde bei Objekt Sport 5 Euro.

Also muss in der Tabelle 50 stehen.



Weiss jemand wie man diese machen muss?
Ich wäre unheimlich froh auf ein Lösung..



PHP:
<?php  
  include "connect.inc.php";
    $sqlab = 'SELECT 
              SUM(zeit)
            FROM
              rapport ';
  if($_POST['objekt'] && $_POST['jahr'])
  {
    $sqlab .= 'WHERE 
                 `objekt` = "'.mysql_real_escape_string($_POST['objekt']).'" AND
		 `mitarbeiter` = "Thali" AND
		 `jahr` = "'.mysql_real_escape_string($_POST['jahr']).'"';
  }
else if($_POST['objekt'] && $_POST['jahr'])
  {
    $sqlab .= 'WHERE 
                 `objekt` = "'.mysql_real_escape_string($_POST['objekt']).'" AND
		`mitarbeiter` = "Thali" AND
		 `jahr` = "'.mysql_real_escape_string($_POST['jahr']).'"';
}
  else if($_POST['jahr'])
  {
    $sqlab .= 'WHERE
		`mitarbeiter` = "Thali" AND
                 `jahr` = "'.mysql_real_escape_string($_POST['jahr']).'"';
  }
    else if($_POST['objekt'])
  {
    $sqlab .= 'WHERE
		`mitarbeiter` = "Thali" AND
                 `objekt` = "'.mysql_real_escape_string($_POST['objekt']).'"';
  }
  $res = mysql_query($sqlab);
  $num = mysql_num_rows($res);
  $arr = mysql_fetch_array($res);
  //echo "<table border align='center'>";
  while ($arr) 
{ 

echo '<td align="right">';
echo '<b>'.  $arr['SUM(zeit)'] .  '&nbsp;'  . '</b>'; 
echo '</td>';


echo '</a>';
$arr = mysql_fetch_array($res);

    }
?>
 
Nur nochmal zum besseren Verständniss.

Du hast die Tabelle rapport, welche die Spalten jahr, objekt, mitarbeiter und zeit enthält.

Und nun hast du noch eine weitere Tabelle namens Stundenansatz, die im Endeffekt die selben Daten enthält, nur ohne dem Jahr? :confused:

Mir ist bis jetzt noch unklar, wo der Wert für den jeweiligen Stundensatz her kommt, sprich in deinem Beispiel die 5 Euro/Stunde.
 
Also ich habe 2 Tabellen.

Tabelle 1:

Rapport (id, tag, monat, jahr, objekt, mitarbeiter, zeit)
Hier fügt der Mitarbeiter jeden Tag die gearbeiteten Stunden im betreffenden Objekt ein. Mit dem Script oben werden die Stunden pro Jahr aus dem im Dropdown gewählten Objekt zusammengezählt und angezeit, das wäre mit SUM(zeit).


Tabelle 2:

Stundenansatz (id, mitarbeiter, objekt, stunden)

Hier wird eingetragen wie viel der Mitarbeiter in der Stunde für die einzelnen Objekte erhält. Zum Beispiel ein Projektleiter erhält für das gleiche Objekt 50.- mehr als die Angestellten.



Ich möchte das Script oben weiterfassen, dass SUM(zeit) mit den stunden im Stundenansatz multipliziert werden kann. Problem ist, weil ich ja durch Dropdownfelder das Objekt auswähle, weiss ich nicht wo ich die Multiplikation setzen soll…
Kann jemand mir bitte helfen?
 
Hi,

also wenn ich das richtig verstanden habe.

Code:
MySQL:

SELECT 
*,
SUM(rapport.zeit) as zeiten,
stundenansatz .stundenansatz  as satzung
FROM
rapport
LEFT JOIN
stundenansatz
ON
rapport.objekt =  stundenansatz .objekt
WHERE 
rapport.objekt =  "'.mysql_real_escape_string($_POST['objekt']).'" AND stundenansatz.mitarbeiter = "Thali"
GROUP BY 
stundenansatz.mitarbeiter


PHP:
$result = mysql_query($query);

while($row = mysql_fetch_assoc($result){
echo '<td align="right">';
echo '<b>'.  $row['zeiten']*$row[' satzung'] .  '&nbsp;'  . '</b>'; 
echo '</td>';

}
 
Zuletzt bearbeitet:
Das sieht gut aus, aber ich habe eine Fehlermeldung erhalten..

syntax error, unexpected T_STRING
im
PHP:
echo '<td align="right">';



PHP:
<?php  
  include "connect.inc.php";
    $sqlab = 'SELECT 
*,
SUM(rapport.zeit) as zeiten,
stundenansatz .stundenansatz  as satzung
FROM
rapport
LEFT JOIN
stundenansatz
ON
rapport.objekt =  stundenansatz .objekt
WHERE 
rapport.objekt =  "'.mysql_real_escape_string($_POST['objekt']).'" AND stundenansatz.mitarbeiter = "Thali"
GROUP BY 
stundenansatz.mitarbeiter
$result = mysql_query($query); 

while($row = mysql_fetch_assoc($result){ 
echo '<td align="right">'; 
echo '<b>'.  $row['zeiten']*$row['satzung'] .  '&nbsp;'  . '</b>';  
echo '</td>'; 

}

?>
 
Hi,

das sieht man doch schon am Syntaxhighlighting, dass der String nicht abgeschlossen wurde:

PHP:
<?php 
    $sqlab = 'SELECT 
...
rapport.objekt =  "'.mysql_real_escape_string($_POST['objekt']).'" AND stundenansatz.mitarbeiter = "Thali"
GROUP BY 
stundenansatz.mitarbeiter';
$result = mysql_query($query); 

while($row = mysql_fetch_assoc($result){ 
echo '<td align="right">'; 
echo '<b>'.  $row['zeiten']*$row['satzung'] .  '&nbsp;'  . '</b>';  
echo '</td>'; 

}

?>

LG
 
Hi,

wie ich sehe hast du nicht wirklich Ahnung von PHP, nicht böse gemeint.

Mein SQL Statement war eher ein Denkansotoß, du solltest es nicht 1 zu 1 kopieren

PHP:
<?php  
  include "connect.inc.php";
    $sqlab = 'SELECT 
*,
SUM(rapport.zeit) as zeiten,
stundenansatz.stundenansatz  as satzung
FROM
rapport
LEFT JOIN
stundenansatz
ON
rapport.objekt =  stundenansatz.objekt
WHERE 
rapport.objekt =  "'.mysql_real_escape_string($_POST['objekt']).'" AND stundenansatz.mitarbeiter = "Thali"
GROUP BY 
stundenansatz.mitarbeiter';

$result = mysql_query($query); 

while($row = mysql_fetch_assoc($result){ 
echo '<td align="right">'; 
echo '<b>'.  $row['zeiten']*$row['satzung'] .  '&nbsp;'  . '</b>';  
echo '</td>; 

}

?>
 
Bin noch eine Anfängerin...

Also das Script funktioniert immer noch nicht :(

Wo liegt der Fehler?

PHP:
<?php  
  include "connect.inc.php";
    $sqlab = 'SELECT 
*,
SUM(rapport.zeit) as zeiten,
stundenansatz.stunden  as satzung
FROM
rapport
LEFT JOIN
stundenansatz
ON
rapport.objekt =  stundenansatz.objekt
WHERE 
rapport.objekt =  "'.mysql_real_escape_string($_POST['objekt']).'" 
AND rapport.mitarbeiter = "Schmid"
GROUP BY 
rapport.mitarbeiter';

$result = mysql_query($query); 

while($row = mysql_fetch_assoc($result){ 
echo '<td align="right">'; 
echo '<b>'.  $row['zeiten']*$row['satzung'] .  '&nbsp;'  . '</b>';  
echo </td>; 

}

?>
 
Zuletzt bearbeitet:
Hallo

Mit der Hoffnung dass mir jemand helfen kann füge ich wieder mein Script rein. Irgendeine Klammer oder ein Gänsefüsschen ist bei mir zu wenig, aber ich kann nichts finden. Weiss nicht ober der Fehler sonst irgendwo liegt.
:confused:


PHP:
<?php   
  include "connect.inc.php"; 
    $sqlab = 'SELECT *, 

SUM(rapport.zeit) as zeiten, 
stundenansatz .stunden as satzung 

FROM 
rapport 

LEFT JOIN 
stundenansatz 

ON 
rapport.objekt =  stundenansatz .objekt 

WHERE  
rapport.objekt =  "'.mysql_real_escape_string($_POST['objekt']).'" 
AND stundenansatz.mitarbeiter = "Schmid" 

GROUP BY  
stundenansatz.mitarbeiter '; 

$result = mysql_query($query) ;  

while($row = mysql_fetch_assoc($result))
{  
echo '<td align="right">';  
echo '<b>'.  $row['zeiten']*$row['satzung'] .  '&nbsp;'  . '</b>';   
echo '</td>;  

} 

?>
 
Zurück