Zeitfassungssystem (komplizierter)

War mal wieder zu schnell.

Hab es selber gerade bemerkt und im Beitrag oben den Fehler behoben.
Also einfach nochmal kopieren dann klappt es.
 
So das Zeiterfassung sieht fast perfekt aus.. :)
In der letzten Zeile habe ich das Total eingefügt. Jedoch kann ich das Gesamttotal der einzelen Mitarbeiter zusammenfügen, da ich ja nicht SUM(stunden) * SUM(zeit) nehmen kann, weil jeder Mitarbeiter eine andere Stundenansatz hat..
Ist das irgendwie möglich?


PHP:
<?  
// Erstellt Connect zu Datenbank her 
    $host = "localhost";  
$user = "root";  
$pass = "xxx"; 
$daba = "zeiterfassung";  
    $db = @mysql_connect($host, $user, $pass) or die ("Konnte keine Verbindung zur Datenbank herstellen");  
    mysql_select_db($daba, $db);  
// zuerst alle Mitarbeiter ermitteln  

   $sql_mitarbeiter = "SELECT DISTINCTROW mitarbeiter, 
objekt FROM rapport WHERE objekt = " .$_POST["objekt"] ." AND jahr = " .$_POST["jahr"] ." 
OR objekt = " .$_POST["objekt"] ." AND jahr = " .($_POST["jahr"] - 1); 
$rs_mitarbeiter = mysql_query($sql_mitarbeiter, $db); 
?>  
<?  { ?> 

<tr><td><b>Total</b></td> 
                   
<? 
$sql_zeit = "SELECT monat, SUM(rapport.zeit) as zeiten, stundenansatz.stunden as satzung FROM rapport LEFT JOIN stundenansatz ON rapport.objekt = stundenansatz.objekt"; 
$sql_zeit = $sql_zeit ." AND rapport.mitarbeiter = stundenansatz.mitarbeiter 
WHERE stundenansatz.objekt =  '" .mysql_real_escape_string($_POST['objekt']); 
$sql_zeit = $sql_zeit ."' AND rapport.jahr = '" .mysql_real_escape_string($_POST['jahr']). "'";
$sql_zeit = $sql_zeit ." GROUP BY monat"; 
 
// Abfrage für Vorjahr 
$sql_zeit_vorjahr = "SELECT SUM(rapport.zeit) as zeiten_vorjahr FROM rapport WHERE objekt =  '" .mysql_real_escape_string($_POST['objekt']); 
$sql_zeit_vorjahr = $sql_zeit_vorjahr ."' AND jahr = '" .(mysql_real_escape_string($_POST['jahr']) - 1). "'"; 

$rs_zeit_vorjahr = @mysql_query($sql_zeit_vorjahr, $db); 

$rs_zeit = @mysql_query ($sql_zeit, $db); 
unset($zeit); 
for ($b = 0; $b<= mysql_num_rows($rs_zeit); $b++) { 
$zeit[@mysql_result($rs_zeit, $b, "monat")] = @mysql_result($rs_zeit, $b, "zeiten"); 
} 
?>  
                    <td align="right"><b><? echo (@mysql_result($rs_zeit_vorjahr, 0, "zeiten_vorjahr"));?></td>               
                    <td align="right"><b><? echo $zeit[1]; ?></td> 
                    <td align="right"><b><? echo $zeit[2]; ?></td> 
                    <td align="right"><b><? echo $zeit[3]; ?></td> 
                    <td align="right"><b><? echo $zeit[4]; ?></td> 
                    <td align="right"><b><? echo $zeit[5]; ?></td> 
                    <td align="right"><b><? echo $zeit[6]; ?></td> 
                    <td align="right"><b><? echo $zeit[7]; ?></td> 
                    <td align="right"><b><? echo $zeit[8]; ?></td> 
                    <td align="right"><b><? echo $zeit[9]; ?></td> 
                    <td align="right"><b><? echo $zeit[10]; ?></td> 
                    <td align="right"><b><? echo $zeit[11]; ?></td> 
                    <td align="right"><b><? echo $zeit[12]; ?></td> 
                    <td align="right"><b><? echo @mysql_result($rs_zeit_vorjahr, 0, "zeiten_vorjahr") + array_sum($zeit); ?></td>                  
<? } ?> 

<?php   
  include "connect.inc.php"; 
    $sqlab = 'SELECT SUM(stunden)  
FROM 
stundenansatz 
WHERE  
objekt =  "'.mysql_real_escape_string($_POST['objekt']).'" 
GROUP BY  
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"><b>'.  $arr['SUM(stunden)'] .  '&nbsp;'  . '</td>'; 
echo '</a>';
$arr = mysql_fetch_array($res);
    }
?>
 

Anhänge

  • Bild2.jpg
    Bild2.jpg
    44,8 KB · Aufrufe: 15
Nimm doch einfach eine Variable als Hilfsmittel.

Immer wenn Du die Gesamtstunden pro Mitarbeiter berechnest, übergibst du diesen Wert an die Variable xyz.

PHP:
$xyz = $xyz + $NeuerWert;

Diesen Wert gibst du dann einfach aus.
 
Die Mitarbeiter werden ja automatisch angezeigt, je nachdem ob sie im gewählten Objekt Stunden im Vorjahr oder dieses Jahr haben.. Wie soll ich denn da den Total an einer Variable übergeben?


PHP:
<? echo (array_sum($zeit) * @mysql_result($rs_zeit, 0, "satzung"));?>
 
PHP:
<?
$tmp = $tmp + (array_sum($zeit) * @mysql_result($rs_zeit, 0, "satzung"));
echo (array_sum($zeit) * @mysql_result($rs_zeit, 0, "satzung"));
?>

Bla, Bla, Bla, ein bisschen HTML und/oder PHP

<?
echo "Ich bin die Gesamtsumme: " .$tmp;
?>

Vor der ersten Verwendung der Variablen $tmp muss sie natürlich mit 0 belegt werden, da sonst ein Fehler erzeugt wird.
 
Hilfeee..

Die Daten werden nur angezeigt wenn das Objekt ein Zahl ist..... wenn noch Buchstaben im Objekt stehen, kommt gar nix...

z.B. bei Objekt 1000 funktioniert alles.. aber 1000KO01 geht nicht :(



Hilfeeeeeeeee!
 
Zuletzt bearbeitet:
Folgend die Befehle (nicht vollständig kopiert)
Ich denke da irgendwo liegt eine Buchstabe oder eine Zahl die verhindert, dass aus dem Dropdownfeld Objekt nur Zahlen ausgewertet werden und keine Buchstaben..

Bitte um Hilfe!
Fast alle Objekte haben irgendeine Buchstabe..wenn es nicht geht kann ich alles fortwerfen :( :( :(


PHP:
<?  
// Erstellt Connect zu Datenbank her 
    $host = "localhost";  
$user = "root";  
$pass = "xxx"; 
$daba = "zeiterfassung";  
    $db = @mysql_connect($host, $user, $pass) or die ("Konnte keine Verbindung zur Datenbank herstellen");  
    mysql_select_db($daba, $db);  
// zuerst alle Mitarbeiter ermitteln  

   $sql_mitarbeiter = "SELECT DISTINCTROW mitarbeiter, 
objekt FROM rapport WHERE objekt = " .$_POST["objekt"] ." AND jahr = " .$_POST["jahr"] ." 
OR objekt = " .$_POST["objekt"] ." AND jahr = " .($_POST["jahr"] - 1); 
$rs_mitarbeiter = mysql_query($sql_mitarbeiter, $db); 
?>  
<? for ($a = 0; $a <= mysql_num_rows($rs_mitarbeiter) - 1; $a++) { ?> 

<tr><td><? echo mysql_result($rs_mitarbeiter, $a, "mitarbeiter"); ?></td> 
                   
<? 
$sql_zeit = "SELECT monat, SUM(rapport.zeit) as zeiten, stundenansatz.stunden as satzung FROM rapport LEFT JOIN stundenansatz ON rapport.objekt = stundenansatz.objekt"; 
$sql_zeit = $sql_zeit ." AND rapport.mitarbeiter = stundenansatz.mitarbeiter 
WHERE stundenansatz.objekt =  '" .mysql_real_escape_string($_POST['objekt']); 
$sql_zeit = $sql_zeit ."' AND rapport.jahr = '" .mysql_real_escape_string($_POST['jahr']). "' 
AND stundenansatz.mitarbeiter = '" .mysql_result($rs_mitarbeiter, $a, "mitarbeiter") ."'";
$sql_zeit = $sql_zeit ." GROUP BY monat"; 
 
// Abfrage für Vorjahr 
$sql_zeit_vorjahr = "SELECT SUM(rapport.zeit) as zeiten_vorjahr FROM rapport WHERE objekt =  '" .mysql_real_escape_string($_POST['objekt']); 
$sql_zeit_vorjahr = $sql_zeit_vorjahr ."' AND jahr = '" .(mysql_real_escape_string($_POST['jahr']) - 1). "' AND mitarbeiter = '" .mysql_result($rs_mitarbeiter, $a, "mitarbeiter") ."'"; 

$rs_zeit_vorjahr = @mysql_query($sql_zeit_vorjahr, $db); 

$rs_zeit = @mysql_query ($sql_zeit, $db); 
unset($zeit); 
for ($b = 0; $b<= mysql_num_rows($rs_zeit); $b++) { 
$zeit[@mysql_result($rs_zeit, $b, "monat")] = @mysql_result($rs_zeit, $b, "zeiten"); 
} 
?>  
                    <td align="right"><? echo (@mysql_result($rs_zeit_vorjahr, 0, "zeiten_vorjahr"));?></td>               
                    <td align="right"><? echo $zeit[1]; ?></td> 
                    <td align="right"><? echo $zeit[2]; ?></td> 
                    <td align="right"><? echo $zeit[3]; ?></td> 
                    <td align="right"><? echo $zeit[4]; ?></td> 
                    <td align="right"><? echo $zeit[5]; ?></td> 
                    <td align="right"><? echo $zeit[6]; ?></td> 
                    <td align="right"><? echo $zeit[7]; ?></td> 
                    <td align="right"><? echo $zeit[8]; ?></td> 
                    <td align="right"><? echo $zeit[9]; ?></td> 
                    <td align="right"><? echo $zeit[10]; ?></td> 
                    <td align="right"><? echo $zeit[11]; ?></td> 
                    <td align="right"><? echo $zeit[12]; ?></td> 
                    <td align="right"><? echo @mysql_result($rs_zeit_vorjahr, 0, "zeiten_vorjahr") + array_sum($zeit); ?></td>
 
Hi,

nicht gleich verzweifeln das Forum hilft (früher oder später) immer ;)

Ich denke das das Problem an der SQL-Anweisung liegt. Im Moment steht da:

... WHERE objekt = " .$_POST["objekt"] ." AND jahr = " ...

Somit wird der Parameter der an objekt übergeben wird als Zahl erwartet.

Ändere es einfach in:

... WHERE objekt = '" .$_POST["objekt"] ."' AND jahr = " ...

um. Dann geht es!

Gruß Thomas
 
Zurück