Сумма часов в столбик из формуляра

 
0
 
PHP
ava
NikaVita | 23.09.2013, 16:15
Здраствуйте. Я новенькая и еще толком ничего не знаю. Вот начала с формуляра. У меня не получается вырешивать часы в столбике. Тоесть я пишу под неделями (KW35....KW53) инициалы (допустим БМ-Боря М. он отработал в 35 недели 4 часа а КБ-Коля. Б. отработал 7) я записываю это так БМ:4;КБ:7 и тд..  у меня получилось вырешать сколько кто отработал за один проект.. но я не могу вырешать кто сколько отработал за одну неделю.. тоесть в столбиках под KW35.. и тд.

Буду очень благодарна.


<?php
function buildrow($count,$id, $projektname="", $projektBeteiligte="", $woche="", $geplanteZeit="", $vergebeneZeit=""){
    $summe = "";
    if(is_array($woche)){
        $summe = array_sum($woche);
    }    
    
    $t = "";
    $t .= "<tr>";
    $t .= "<td><input name=\"projektname[$id]\" type=\"text\"/ value=\"$projektname\"></td>";
    $t .= "<td><input name=\"projektBeteiligte[$id]\" type=\"text\"/ value=\"$projektBeteiligte\"></td>";
    $t .= "<td><input name=\"geplanteZeit[$id]\" type=\"text\"/value=\"$geplanteZeit\"></td>";
    $t .= "<td><input name=\"vergebeneZeit[$id]\" type=\"text\"/value=\"$summe\"></td>";
    if (is_array($woche)&&(count($woche)>=19)){
        for ($i=35; $i<=$count;$i++){
            $t .="<td><input name=\"woche[$id][$i]\" type=\"text\" value=\"$woche[$i]\"/></td>";
        }
    }else{
        for ($i=35; $i<=$count;$i++){
            $t .="<td><input name=\"woche[$id][$i]\" type=\"text\" value=\"$woche\"/></td>";
        }
    }
    $t .= "</tr>";
    return $t;
}
function buildtable($weekcount,$projektcount){
    $text = "";
    $text .= "<table>";
    $text .= tablehead($weekcount);
    for ($i=0; $i<$projektcount;$i++){
        if (isset ($_REQUEST['submit'])){
            $text .= buildrow($weekcount,$i, $_REQUEST['projektname'][$i], $_REQUEST['projektBeteiligte'][$i],$_REQUEST['woche'][$i],$_REQUEST['geplanteZeit'][$i],$_REQUEST['vergebeneZeit'][$i]);
        }else{
            $text .= buildrow($weekcount,$i);
        }
    }
    $text .= "</table>";
    return $text;
}

function tablehead($weekcount){
    $th= "";
    $th .="<tr>";
    $th .="<th>Projektname</th>";
    $th .="<th>Projektbeteiligte</th>";
    $th .="<th>Geplante Zeit</th>";
    $th .="<th>Vergebene Zeit</th>";
    for ($i=35;$i<=$weekcount;$i++){
        $th .="<th>KW $i</th>";
    }
    return $th;
}
function forWeekWorkProject($weekproject){
    $onewpReturn = array();
    $mitarbeiterzeit = explode(";", $weekproject);
        foreach ($mitarbeiterzeit as $onewp){
            if(!strpos($onewp, ":")===false){
                $mz = explode(":", $onewp);
                $onewpReturn[$mz[0]] = $mz[1];
            }
        }
    return $onewpReturn;
}


function forAllWeekWorkProject($allweekproject){
    $onewp = array();
    foreach ($allweekproject as $weekproject){
        $weekoneproject = forWeekWorkProject($weekproject);
        foreach ($weekoneproject as $key => $value){
            if(array_key_exists($key, $onewp)){
                $onewp[$key] += $value;                
            }else{
                $onewp[$key] = $value;
            }
        }
    }
    return $onewp;
}

function AllWeekWorkProject($allweekproject){
    foreach($allweekproject as $oneproject){
        return forAllWeekWorkProject($oneproject);
    }    
}

$test=AllWeekWorkProject($_REQUEST["woche"]);
foreach ($test as $ergebniss);
echo "$ergebniss";

$t = buildtable(53,20);
echo $t;
//var_dump ($_REQUEST);
var_dump($test);
?>



<html>
<head>
<link rel="stylesheet" type="text/css" href="index.css">
<title>Projektmanagement</title>
</head>
<body>
<form method="post" action="index.php">
<h2>Projektmanagement</h2>
<?php

    include ("projekt.php");

?>

<input class="submit" type="submit" name="submit" value="Eintragen"><input class="submit" type="reset" value="Reset">
</form>
</body>
</html>
Comments (6)
ava
NikaVita | 26.09.2013, 11:08 #

<?php
function buildrow($count,$id, $projektname="", $projektBeteiligte="", $woche="", $geplanteZeit="", $vergebeneZeit=""){
    $summe = "";
    if(is_array($woche)){
        $summe = array_sum($woche);
    }    
    
    $t = "";
    $t .= "<tr>";
    $t .= "<td><input name=\"projektname[$id]\" type=\"text\"/ value=\"$projektname\"></td>";
    $t .= "<td><input name=\"projektBeteiligte[$id]\" type=\"text\"/ value=\"$projektBeteiligte\"></td>";
    $t .= "<td><input name=\"geplanteZeit[$id]\" type=\"text\"/value=\"$geplanteZeit\"></td>";
    $t .= "<td><input name=\"vergebeneZeit[$id]\" type=\"text\"/value=\"$summe\"></td>";
    if (is_array($woche)&&(count($woche)>=19)){
        for ($i=35; $i<=$count;$i++){
            $t .="<td><input name=\"woche[$id][$i]\" type=\"text\" value=\"$woche[$i]\"/></td>";
        }
    }else{
        for ($i=35; $i<=$count;$i++){
            $t .="<td><input name=\"woche[$id][$i]\" type=\"text\" value=\"$woche\"/></td>";
        }
    }
    $t .= "</tr>";
    return $t;
}

function buildtable($weekcount,$projektcount){
    $text = "";
    $text .= "<table>";
    $text .= tablehead($weekcount);
    for ($i=0; $i<$projektcount;$i++){
        if (isset ($_REQUEST['submit'])){
            $text .= buildrow($weekcount,$i, $_REQUEST['projektname'][$i], $_REQUEST['projektBeteiligte'][$i],$_REQUEST['woche'][$i],$_REQUEST['geplanteZeit'][$i],$_REQUEST['vergebeneZeit'][$i]);
        }else{
            $text .= buildrow($weekcount,$i);
        }
    }
    $text .= "</table>";
    return $text;
}

function tablehead($weekcount){
    $th= "";
    $th .="<tr>";
    $th .="<th>Projektname</th>";
    $th .="<th>Projektbeteiligte</th>";
    $th .="<th>Geplante Zeit</th>";
    $th .="<th>Vergebene Zeit</th>";
    for ($i=35;$i<=$weekcount;$i++){
        $th .="<th>KW $i</th>";
    }
    return $th;
}

function forWeekWorkProject($weekproject){
    $onewpReturn = array();
    $mitarbeiterzeit = explode(";", $weekproject);
        foreach ($mitarbeiterzeit as $onewp){
            if(!strpos($onewp, ":")===false){
                $mz = explode(":", $onewp);
                $onewpReturn[$mz[0]] = $mz[1];
            }
        }
    return $onewpReturn;
}


function forAllWeekWorkProject($allweekproject){
    $onewp = array();
    foreach ($allweekproject as $weekproject){
        $weekoneproject = forWeekWorkProject($weekproject);
        foreach ($weekoneproject as $key => $value){
            if(array_key_exists($key, $onewp)){
                $onewp[$key] += $value;                
            }else{
                $onewp[$key] = $value;
            }
        }
    }
    return $onewp;
}

function AllWeekWorkProject($allweekproject){
    $temp = array();
    foreach($allweekproject as $oneproject){
        $temp[] =  forAllWeekWorkProject($oneproject);
    }
    return $temp;
}



function OneWeekWorkAllProject($weekallproject){
    $i = 0;
    $sumweek[$i]= array();
    foreach($weekallproject as $weekproject){
        $week = forWeekWorkProject($weekproject);
        foreach ($week as $key => $value){
            if(array_key_exists($key, $sumweek)){
                $sumweek[$key] += $value;                
            }else{
                $sumweek[$key] = $value;
            }
        }
        foreach($week as $project){
            foreach ($project as $key => $value){
                if(array_key_exists($key, $sumweek)){
                    $sumweek[$key] += $value;                
                }else{
                    $sumweek[$key] = $value;
                }
            }
            foreach($project as $mitarbeiterzeit){
                foreach ($mitarbeiterzeit as $key => $value){
                    if(array_key_exists($key, $sumweek)){
                        $sumweek[$key] += $value;                
                    }else{
                        $sumweek[$key] = $value;
                    }
                }
            }
        }
    }
    return $sumweek;
    $i++;
}

function AllWeekWorkProjects($weekallproject){
    $temp = array();
    foreach($weekallproject as $oneproject){
        $temp[] =  OneWeekWorkAllProject($oneproject);
    }
    return $temp;
}
$tests=AllWeekWorkProjects($_REQUEST["woche"]);


$test=AllWeekWorkProject($_REQUEST["woche"]);
$sums = array();
foreach ($test as $ergebniss){
    foreach($ergebniss as $key=>$value){
        if(!array_key_exists($key, $sums)){
            $sums[$key] = 0;
        }
        $sums[$key] += $value;
    }
}
var_dump($tests);

$t = buildtable(53,20);
echo $t;

//var_dump ($_REQUEST);

var_dump($test);
echo "<br>";
var_dump($sums);
echo "<br>";
?>



Прошла немного дальше...  функция OneWeekWorkAllProject($weekallproject) должна проходить через все недели, все проекты и рабочих и выдовать инфо о часах в неделю. вылазиет ошибка сейчас Warning: Invalid argument supplied for foreach() в строчках:foreach ($project as $key => $value){ иforeach($project as $mitarbeiterzeit){ smile 
не пойму что я не правильно сделала
ava
baldina | 26.09.2013, 11:24 #
а что в $_REQUEST["woche"]?
ava
NikaVita | 26.09.2013, 11:45 #
Цитата (baldina @ 26.9.2013,  11:24)
а что в $_REQUEST["woche"]?

Там изначально пусто до тех пор пока туда не внесут информацию. тоесть это часть из таблицы с формуляром. на рисунке под KW35, KW36 и тд.. это[woche]
user posted image


и там где жирные точки хочу сложить часы чтоб внизу таблицы было показано кто сколько в общем за неделю отработал

ошибку Warning: Invalid argument supplied for foreach()   исправила на пустой array()


function OneWeekWorkAllProject($weekallproject){
    $i = 0;
    $sumweek[$i]= array();
    foreach($weekallproject as $week){
        $week = array();
        foreach ($week as $key => $value){
            if(array_key_exists($key, $sumweek)){
                $sumweek[$key] += $value;                
            }else{
                $sumweek[$key] = $value;
            }
        }
        foreach($week as $project){
            $project = array();
            foreach ($project as $key => $value){
                if(array_key_exists($key, $sumweek)){
                    $sumweek[$key] += $value;                
                }else{
                    $sumweek[$key] = $value;
                }
            }
            foreach($project as $mitarbeiterzeit){
                $mitarbeiterzeit = array();
                foreach ($mitarbeiterzeit as $key => $value){
                    if(array_key_exists($key, $sumweek)){
                        $sumweek[$key] += $value;                
                    }else{
                        $sumweek[$key] = $value;
                    }
                }
            }
        }
    }
    return $sumweek;
    $i++;
}

function AllWeekWorkProjects($weekallproject){
    $temp = array();
    foreach($weekallproject as $oneproject){
        $temp[] =  OneWeekWorkAllProject($oneproject);
    }
    return $temp;
}
$weektest=AllWeekWorkProjects($_REQUEST["woche"]);


только к чему это прицепить теперь не знаю.. 
ava
NikaVita | 26.09.2013, 16:13 #

function OneWeekWorkAllProject($weekallproject){
    $i = 0;
    foreach($weekallproject as $weekproject){
        $week = forWeekWorkProject($weekproject);
        $sumweek[$i]= array();
        foreach ($week as $key => $value){
            if(array_key_exists($key, $sumweek)){
                $sumweek[$key] += $value;                
            }else{
                $sumweek[$key] = $value;
            }
        }
        foreach($week as $project){
            $project = array();
            foreach ($project as $key => $value){
                if(array_key_exists($key, $sumweek)){
                    $sumweek[$key] += $value;                
                }else{
                    $sumweek[$key] = $value;
                }
            }
            foreach($project as $mitarbeiter){
                $mitarbeiter = array();
                foreach ($mitarbeiter as $key => $value){
                    if(array_key_exists($key, $sumweek)){
                        $sumweek[$key] += $value;                
                    }else{
                        $sumweek[$key] = $value;
                    }
                }
            }
        }
    return $sumweek;
    }
    $i++;
}

function AllWeekWorkProjects($weekallproject){
    $temp = array();
    foreach($weekallproject as $oneproject){
        $temp[] =  OneWeekWorkAllProject($oneproject);
    }
    return $temp;
}

$tests=AllWeekWorkProjects($_REQUEST["woche"]);


Помогите доконца довести.. по моему осталось только сложить результаты.. smile
ava
Fortop | 26.09.2013, 17:37 #
Брр. Еще раз суть проблемы и пока пожалуйста без кода.
ava
NikaVita | 26.09.2013, 18:41 #
Цитата (Fortop @ 26.9.2013,  17:37)
Брр. Еще раз суть проблемы и пока пожалуйста без кода.

Проблему решила уже. Я хотела вырешать при помощи функции кто сколько за неделю отработал часов, кто сколько за проект ну и общая ссума каждого рабочего. 
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit