CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |

23.10.2009, 21:50:52
|
Anfänger
|
|
Registriert seit: Oct 2009
Alter: 33
Beiträge: 5
|
|
AW: Script funktioniert nicht, weiß jemand wieso?
Die Punkte vor und nach den Variablen, aber daran scheinnt es nicht nur zu liegen, der weiß Bildschirm bleibt trotzdem.
|

24.10.2009, 07:43:51
|
 |
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Script funktioniert nicht, weiß jemand wieso?
So ich hab mir mal erlaubt die meisten Fehler zu entfernen. Ob die Datensaätze in die DB geschrieben werden hab ich nicht getestet. Zumindest wird der Insert korrekt geschrieben und deine Ausgaben sowie Datumsformatierungen stimmen jetzt.
PHP-Code:
<?php $fvorname=$_REQUEST['vorname']; $fname=$_REQUEST['name']; $feinsatz=$_REQUEST['einsatz']; $fATT=$_REQUEST['ATT']; $fAMM=$_REQUEST['AMM']; $fAJJJJ=$_REQUEST['AJJJJ']; $fETT=$_REQUEST['ETT']; $fEMM=$_REQUEST['EMM']; $fEJJJJ=$_REQUEST['EJJJJ']; $ftage=$_REQUEST['tage']; $fdauer=$_REQUEST['dauer']; if(($fATT==$fETT)and($fAMM==$fEMM)and($fAJJJJ==$fEJJJJ)){ $fdatum=($fAJJJJ.'-'.$fAMM.'-'.$fATT); $sql_eintrag = "INSERT INTO statistik_einsatz(lfd_nr,vorname,name,einsatz,datum,dauer) VALUES ('','".$fvorname."','".$fname."','".$feinsatz."','".$fdatum."','".$fdauer."')"; $eintrag=mysql_query($sql_eintrag,$verbindung); $sql="SELECT * FROM statistik_einsatz"; $ergebnis=mysql_query($sql,$verbindung); mysql_free_result($ergebnis); mysql_close($verbindung); echo "<p>Der Datensatz wurde erfolgreich Angelegt!</p>\n"; }else{ for($i=0;$i<$ftage;$i++){ $fdatum=($fAJJJJ.'-'.$fAMM.'-'.($fATT+$i)); $sql_eintrag = "INSERT INTO statistik_einsatz(lfd_nr,vorname,name,einsatz,datum,dauer) VALUES ('','".$fvorname."','".$fname."','".$feinsatz."','".$fdatum."','".$fdauer."')"; } mysql_free_result($ergebnis); mysql_close($verbindung); echo "<p>Es wurden ".$i." Datensätze angelegt</p>\n"; }
?> <a href="index.php?doc=einsatz_eintragen">Zurück</a>
Persönlich würde ich allerdings ohne Enddatum arbeiten und meine IF Bedingung an die Anzahl der Einsatztage hängen. Das jeweilige Datum wird ja eh per Hochzählen gesetzt.
EDIT: Deine Datumsberechnung selbst bringt aber nicht immer das korrekte Datum, wenn du es so generierst wie du es hier im Script versuchst.
Ist der Beginn und das Enddatum im selben Monat und Jahr passt alles. Liegt das Enddatum im neuen Monat bzw. Jahr hast du ein Problem. Du solltest dich in diesem Fall mal mit Dartumsfunktionen beschäftigen.
|

24.10.2009, 09:09:56
|
 |
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Script funktioniert nicht, weiß jemand wieso?
Habe oben im FOR die Zeile "$eintrag=mysql_query($sql_eintrag,$verbindung);" vergessen wieder einzutragen. Kann leider den Beitrag selbst nicht mehr korrigieren.
|

24.10.2009, 11:14:28
|
 |
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Script funktioniert nicht, weiß jemand wieso?
So da ich gerade Lust hatte hab ich mich noch mit dem Datum und der Anzahl Tage beschäftigt.
Der Beginn und das Ende stehen ja fest. Die Anzahl Tage müsste bei dir der Benutzer selbst nachzählen und eintippen. Geht ein solcher Einsatz über mehrere Tage kann man sich schnell verzählen, wenn man keinen Kalender hat. Gerade bei Monats und/oder auch Jahres übergreifenden Zeiträumen können schnell Fehler auftreten.
Verzählen, das der Monat nur 30 Tage hatte oder auch Schaltjahre sind ja gern gesehene Fehlerquellen. PHP selbst hat genug Möglichkeiten um solche Berechnungen schneller und sicher durchführen zu können als es ein Mensch machen kann.
Zusätzlich würde bei mehreren Tagen kein Datenbankeintrag entstehen, wenn der Benutzer die Anzahl an Tagen nicht vergisst einzutragen bzw. einen Minuswert erfasst.
EDIT: 2008 war ein Schaltjahr!
So hier mal das gleiche Script entsprechend angepasst.
Eintragung in die DB ist weiterhin ungeprüft und Fehler durch Eingabe falscher Werte werden nicht abgefangen.
PHP-Code:
<?php $dformat="Y-m-d"; //wird für das Datumsformat zum Eintragen in der DB benötigt $fvorname=$_REQUEST['vorname']; $fname=$_REQUEST['name']; $feinsatz=$_REQUEST['einsatz']; $fATT=$_REQUEST['ATT']; $fAMM=$_REQUEST['AMM']; $fAJJJJ=$_REQUEST['AJJJJ']; $fETT=$_REQUEST['ETT']; $fEMM=$_REQUEST['EMM']; $fEJJJJ=$_REQUEST['EJJJJ']; $fdauer=$_REQUEST['dauer']; $aDate = date(mktime(0,0,0,$fAMM,$fATT,$fAJJJJ)); //Startdatum als Timestamp $eDate = date(mktime(0,0,0,$fEMM,$fETT,$fEJJJJ)); //Enddatum als Timestamp $ftage = ($eDate-$aDate)/60/60/24+1; //Berechnung der Einsatztage if($ftage===1){ //soll ja nur ausgeführt werden, wenn es nur ein Tag ist $fdatum=($fAJJJJ.'-'.$fAMM.'-'.$fATT); $sql_eintrag = "INSERT INTO statistik_einsatz(lfd_nr,vorname,name,einsatz,datum,dauer) VALUES ('','".$fvorname."','".$fname."','".$feinsatz."','".$fdatum."','".$fdauer."')"; $eintrag=mysql_query($sql_eintrag,$verbindung); $sql="SELECT * FROM statistik_einsatz"; $ergebnis=mysql_query($sql,$verbindung); mysql_free_result($ergebnis); mysql_close($verbindung); echo "<p>Der Datensatz wurde erfolgreich Angelegt!</p>\n"; }else{ for($i=0;$i<$ftage;$i++){ $fdatum=date($dformat,mktime(0,0,0,$fAMM,$fATT+$i,$fAJJJJ)); $sql_eintrag = "INSERT INTO statistik_einsatz(lfd_nr,vorname,name,einsatz,datum,dauer) VALUES ('','".$fvorname."','".$fname."','".$feinsatz."','".$fdatum."','".$fdauer."')"; echo $fdatum.'<br>'; $eintrag=mysql_query($sql_eintrag,$verbindung); } mysql_free_result($ergebnis); mysql_close($verbindung); echo "<p>Es wurden ".$i." Datensätze angelegt</p>\n"; }
?>
Anmerkung: Es wird die effektive Gesamtdauer in Stunden erfasst und pro Tag in die DB geschrieben. Hat man 3 Tage wird dieser Wert auch 3x erfasst. Sollte es hier zu statistischen Erhebungen kommen oder die Gesamtdauer anderweitig genutzt wird ein falscher Wert ausgegeben.
Abhilfe würde man erhalten, wenn man die Gesamtzeit durch die Anzahl der Tage rechnen würde und somit zumindest den Durschnitt pro Tag erfasst. Bei einer Umsetzung müsste man allerdings beachten, daß es hier zu Kommastellen kommen wird, die ggf. gerundet werden müssen und ggf. entsprechend der Datentyp für die Spalte in der DB angepasst werden.
Anmerkung 2: Zur Zeit werden überhaupt keine Fehler abgefangen, was grundsätzlich geändert werden sollte.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:15:45 Uhr.
|