Hallo,
erstmal danke an alle die mir geholfen haben. Ich habe das ganze in PHP
gelöst und es funktioniert. An paar stellen gefällt mir der Skript nicht
und ich wollte euch bitten sich das ganze anzuschauen.
Dafür müsste ich das ganze ein wenig genauer erklären was passieren soll.
Es wird ein Bauzeitplan werden. Der nach Eingabe des "Startdatums" die
Zeiten bei einzelnen Posten berechnet. Ich habe eine rein folge und Dauer
der einzelnen Posten. Das soll dann zum Schluss grafisch ausgegeben werden,
sowie Dauer und ein paar Bezeichnungen veränderbar sein.
Hier die Auszüge aus meinem Code
Der Aufruf:
echo ('<form action="Projekt.php" method="post">');
echo ('<p>Bitte Baubeginn festlegen<br></p>');
echo ('<input type="text" class="eingabefeld" name="bauzeitplanbeg" value="" />');
echo ('<input type="button" class="Calendericon" onClick="');
echo ("c1.popup('bauzeitplanbeg');");
echo ('" value=""/>');
echo ('<input type="submit" name="startzeitfest" value="Festlegen" />');
echo ('</form>');
Der ist ja eher uninteressant. JavaScript ist nur eine Hilfe um Datum einzutragen.
Da wird die Berechnung aufgerufen.
echo ('<table>');
if (isset($_POST['startzeitfest']) && !empty($_POST['bauzeitplanbeg']))
{
$bauzeitdatum = mysql_query('SELECT * FROM bauzeitplan WHERE projektnr = "'.$_SESSION[Projekt].'"');
$bauzeitstarttime = $_POST['bauzeitplanbeg'];
$bauzeitstarttime=date_german2mysql($bauzeitstarttime);
if ($t=mysql_num_rows($bauzeitdatum)==NULL)
{
include("../Gemeinsame/array.txt");
for ($i=0; $arr[$i]['gewerbe']!="Ende"; $i++)
{
$s='INSERT INTO bauzeitplan (projektnr, gewerbe, dauer, vorheriger, nachfolgender) VALUES ("'.$_SESSION[Projekt].'", "'.$arr[$i]['gewerbe'].'", '.$arr[$i]['dauer'].', "'.$arr[$i]['vorheriger'].'", "'.$arr[$i]['nachfolgender'].'")';
mysql_query($s);
}
$bauzeitdatum = mysql_query('SELECT * FROM bauzeitplan WHERE projektnr = "'.$_SESSION[Projekt].'"');
datumsberechnung('Tiefbau',$bauzeitstarttime);
}
datumsberechnung('Tiefbau',$bauzeitstarttime);
}
$bauzeitdatum = mysql_query('SELECT * FROM bauzeitplan WHERE projektnr = "'.$_SESSION[Projekt].'"');
if (mysql_num_rows($bauzeitdatum)==NULL)
{
echo ('<tr><td>Keine Startdatum festgelegt</td></tr>');}
else{
while ($bauz=mysql_fetch_assoc($bauzeitdatum))
{
echo ('<tr>');
echo ('<td>Nr.</td><td>'.$bauz[gewerbe].'</td><td> </td><td> </td><td> </td><td> </td><td> </td>');
echo ('</tr>');
echo ('<tr>
<td>2</td>
<td>'.$bauz[gewerbe].'</td>
<td> </td>
<td> </td>
<td>'.$bauz[dauer].'</td>
<td> '.date_mysql2german($bauz[begin]).' </td>
<td> '.date_mysql2german($bauz[ende]).' </td>
</tr>');
}
}
echo ('</table>');
Hier sind die Functionen:
function date_mysql2german($datum) {
list($jahr, $monat, $tag) = explode("-", $datum);
return sprintf("%02d.%02d.%04d", $tag, $monat, $jahr);
}
function date_german2mysql($datum) {
list($tag, $monat, $jahr) = explode(".", $datum);
return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
}
function add_date($givendate,$day=0)
{
$cd = strtotime($givendate);
for ($i=0;$i<=$day;$i++)
{
$newdate = date('Y-m-d', mktime(0,0,0,date('m',$cd), date('d',$cd)+$i, date('Y',$cd)));
if (date('w',mktime(0,0,0,date('m',$cd), date('d',$cd)+$i, date('Y',$cd)))==0 || date('w',mktime(0,0,0,date('m',$cd), date('d',$cd)+$i, date('Y',$cd)))==6)
{$day=$day+1;}
}
return $newdate;
}
function datumsberechnung($was, $start)
{
$sql=mysql_fetch_array(mysql_query('SELECT * FROM bauzeitplan WHERE projektnr = "'.$_SESSION[Projekt].'" AND gewerbe = "'.$was.'"'));
$t=add_date($start,$sql['dauer']);
mysql_query('UPDATE bauzeitplan SET begin="'.$start.'", ende="'.$t.'" WHERE projektnr = "'.$_SESSION[Projekt].'" AND gewerbe = "'.$was.'"');
usleep(50000);
if($sql['nachfolgender']!='Ende')
{datumsberechnung($sql['nachfolgender'],$t);}
}
und ein Kleiner Auszug aus der array.txt:
<?php
$arr = array();
$arr[0]['gewerbe'] = "Tiefbau" ;
$arr[0]['dauer'] = 5;
$arr[0]['vorheriger'] = "";
$arr[0]['nachfolgender'] = "Rohbau";
$arr[1]['gewerbe'] = "Rohbau";
$arr[1]['dauer'] = 28;
$arr[1]['vorheriger'] = "Tiefbau";
$arr[1]['nachfolgender'] = "Gerüst";
?>
Also wie ich schon sagte, ich würde mich freuen ein paar
Verbesserungsvorschläge.
Toshi