+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: x-datum plus feste Anzahl Tage = xDatum / php?

  1. #1
    TP-Senior TanjaP. ist auf einem guten Weg
    Registriert seit
    Jul 2009
    Ort
    Wanne-Eickel
    Beiträge
    131

    x-datum plus feste Anzahl Tage = xDatum / php?

    Es gibt ja so Geburtsrechner im Netz, die z.B. nach einer Datumseingabe alles mögliche berechnen. Bisher habe ich das nur mit javascript gefunden.
    Meine Frage ist, ist das auch mit php möglich und wenn ja, wie?
    Datum (frei "wählbar") plus xTage (fester Wert) = Datum

    Tanja

  2. #2
    TP-Moderator maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User Avatar von maxi89
    Registriert seit
    Nov 2004
    Ort
    Mulpe an der Tunke
    Beiträge
    2.538
    Suchst du etwas wie strtotime() ?

  3. #3
    TP-Insider Frangulus ist ein richtiges Arbeitstier - DANKE Frangulus ist ein richtiges Arbeitstier - DANKE Frangulus ist ein richtiges Arbeitstier - DANKE Frangulus ist ein richtiges Arbeitstier - DANKE
    Registriert seit
    Jan 2008
    Ort
    Hessen
    Beiträge
    885
    Ich denke mit
    date_add
    geht das.

  4. #4
    TP-Specialist phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Zitat Zitat von Frangulus Beitrag anzeigen
    Ich denke mit
    date_add
    geht das.
    Das steht erst ab PHP 5.3.x zur Verfügung und das ist bisher nur sehr selten bei Providern anzutreffen. Sollte man also keinen eigenen (v)Server betreiben, wird man vermutlich schlechte Karten haben.

    Wie maxi schon sagte, sind strtotime, date, mktime einen Blick wert.

  5. #5
    TP-Insider Frangulus ist ein richtiges Arbeitstier - DANKE Frangulus ist ein richtiges Arbeitstier - DANKE Frangulus ist ein richtiges Arbeitstier - DANKE Frangulus ist ein richtiges Arbeitstier - DANKE
    Registriert seit
    Jan 2008
    Ort
    Hessen
    Beiträge
    885
    Zitat Zitat von phpBuddy Beitrag anzeigen
    Das steht erst ab PHP 5.3.x zur Verfügung
    Ja stimmt, das hatte ich nicht bedacht.

  6. #6
    TP-Senior TanjaP. ist auf einem guten Weg
    Registriert seit
    Jul 2009
    Ort
    Wanne-Eickel
    Beiträge
    131
    habe versucht mich da durch zu wuscheln, aber irgendwie hatte ich das Gefühl, es geht immer nur vom aktuellen Datum.
    Also weiter gegoogelt, einen englisch-Übersetzer genommen und weiter gesucht.
    Das ist mein Ergebnis:

    Code:
    <?php
    /* This calculator is your for free by Calendarscripts.info. You have no obligations for anything - you can modify, redistribute, sell it or whatever you want to do.
    We will appreciate if you don't remove the link at the bottom, but that's not required. */
    
    /* Feel free to modify the CSS and the texts below. - no problem at all. Just don't touch the PHP code or the specual codes which are surrounded with %% unless you know what you are doing. */
    
    ?>
    <style type="text/css">
    .calculator_table
    {
    	font-size:11px;
    	font-family:verdana, arial, sans-serif;
    	border:2pt solid #4444FF;
    	padding:25px;
    	width:400px;
    	height:200px;
    }
    </style>
    <?php
    if(!empty($_POST['calculator_ok']))
    {
    	//last cycle date
    	$date="$_POST[dateyear]-$_POST[datemonth]-$_POST[dateday]";
    	
    	//convert to time
    	$lasttime=mktime(0,0,0,$_POST[datemonth],$_POST[dateday],$_POST[dateyear]);
    	
    	//first fertile day
    	$firstdaytime=$lasttime + $_POST[days]*24*3600 - 35*24*3600;
    	$firstday=date("d.m.Y",$firstdaytime);
    	
    	//last fertile day
    	$lastdaytime=$lasttime + $_POST[days]*24*3600 - 14*24*3600;
    	$lastday=date("d.m.Y",$lastdaytime);
    	
    	//have to adjust due date?
    	$diff=$_POST[days] - 63;
    	
    	//due date $date + 63 days
    	$duedatetime=$lasttime + 63*24*3600 + $diff*24*3600;
    	$duedate=date("d.m.Y",$duedatetime);
    	
    	?>
    	<div class="calculator_table">
    	Die folgenden Daten sind unverbindlich:<br /><br />
    	Ab dem <?=$firstday?> verfärben sich die Zitzen <br />
    	und ab dem <?=$lastday?> sollten die Kittenbewegungen spürbar sein.<br >
    	Ausgehend von der angegebenen Tragzeit ist der Geburtstermin am <strong><?=$duedate?></strong><br /><br />	
    	<p align="center"><input type="button" value="erneut berechnen!" onclick="javascript:history.back();"></p>
    	</div>
    	<?php
    		
    }
    else
    {
    	//the calculator comes here
    	?>
    	<div class="calculator_table">
    	<form method="post">
    	Der Decktag war:<br /><br />
    	<?=date_chooser("date",date("Y-m-d"))?><br><br>
    	Tragzeit in Tagen: <select name="days">
    	<?php
    	for($i=55;$i<=75;$i++)
    	{
    		if($i==63) $selected='selected';
    		else $selected='';
    		echo "<option $selected value='$i'>$i</option>";
    	}
    	?>
    	</select>
    	<p align="center"><input type="submit" name="calculator_ok" value="berechnen"></p>
    	</form>
    	</div>
    	<?php
    }
    
    
    //to print a date chooser - get name and value in mysql date format
    function date_chooser($name,$value="")
    {
    	$months=array('','Januar','Februar','März','April','Mai','Juni','Juli','August',
    	'September','Oktober','November','Dezember');
    	
    	if(empty($value)) $value=date("Y-m-d");
    	
    	$parts=explode("-",$value);
    	
    	$day=$parts[2]+0;
    	$month=$parts[1]+0;
    	$year=$parts[0];
    	
    	$chooser="";
    	
    	$chooser.="<select name=".$name."month>";
    	for($i=1;$i<=12;$i++)
    	{
    		if($i==$month) $selected='selected';
    		else $selected='';
    		$chooser.="<option $selected value=$i>$months[$i]</option>";
    	}
    	$chooser.="</select> / ";
    	
    	$chooser.="<select name=".$name."day>";
    	for($i=1;$i<=31;$i++)
    	{
    		if($i==$day) $selected='selected';
    		else $selected='';
    		$chooser.="<option $selected>$i</option>";
    	}
    	$chooser.="</select> / ";
    	
    	$chooser.="<select name=".$name."year>";
    	for($i=(date("Y")-1);$i<=2050;$i++)
    	{
    		if($i==$year) $selected='selected';
    		else $selected='';
    		$chooser.="<option $selected>$i</option>";
    	}
    	$chooser.="</select> ";	
    	
    	return $chooser;
    }
    ?>
    Ob das ganze validiert, weiß ich noch nicht, ist erstmal der nackige Rechner. Aber wenigstens ohne Tabellen und ohne js.

    Tanja

  7. #7
    TP-Moderator maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User Avatar von maxi89
    Registriert seit
    Nov 2004
    Ort
    Mulpe an der Tunke
    Beiträge
    2.538
    Ich habe mir jetzt ehrlich gesagt den kompletten Code nicht genau angeguck - hole ich nach

    Aber prinzipiell kannst du strtotime() als zweiten Parameter einen Timestamp des Datums übergeben, von dem aus du rechnen willst.

    Wenn du Beispielsweise 2 Monate, 1 Woche und 4 Tage zum 12.03.2006 hinzurechnen willst, sähe der Code so aus:

    PHP-Code:

    $newdate 
    strtotime('+2 months +1 week +4 days'strtotime('2006-03-12'));

    // ### Wir bekommen einen UNIX-Timestamp zurück,
    // ### es kann also mit date() schöner ausgegeben werden:
    echo date('d.m.Y'$newdate); 

  8. #8
    TP-Senior TanjaP. ist auf einem guten Weg
    Registriert seit
    Jul 2009
    Ort
    Wanne-Eickel
    Beiträge
    131
    geht bestimmt in viel schöner und einfacher, wenn frau es kann. Ich kann´s aber leider (noch) nicht, und weiß nicht, wo wann welche Abfrage hinkommt und wie ich das ganze noch in ein entsprechendes Formular packe. Bin vor kurzem erst von Frontpage und Tabellen "umgesteigen" auf valides xhtml mit css; habe dabei auf alle bisherigen javascripte durch ergoogeltes php ersetzt.

    Tanja

    validieren tut´s auch nicht; Fehlermeldungen, die ich nicht allein lösen kann, sind diese:
    Anführungsstriche fehlen: Attribute müssen in Anführungsstriche eingeschlossen sein.
    Fehlerstelle:

    <select name=datemonth><option value=1>Januar</option><option value=2>Febr ...
    (mehrfach)
    und
    Der Name und der VI Begrenzer können nur dann entfallen, wenn SHORTTAG YES spezifiziert ist
    Fehlerstelle:

    <option >2009</option><option selected>2010</option><option >2011</option><o ...
    auch mehrfach
    Geändert von TanjaP. (28.03.2010 um 17:41 Uhr)

  9. #9
    TP-Moderator maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User maxi89 lebt für das TP und seine User Avatar von maxi89
    Registriert seit
    Nov 2004
    Ort
    Mulpe an der Tunke
    Beiträge
    2.538
    Es müsste heißen:

    <select name="datemonth">....
    und
    <option value="2">....

  10. #10
    TP-Senior TanjaP. ist auf einem guten Weg
    Registriert seit
    Jul 2009
    Ort
    Wanne-Eickel
    Beiträge
    131
    was damit im eigentlichen Sinne gemeint ist, hatte ich schon verstanden (bin nur fast ganz blöd) aber wo finde ich das in meinem Script?

    Tanja

  11. #11
    TP-Member nerdlikeyou macht alles soweit korrekt Avatar von nerdlikeyou
    Registriert seit
    Jun 2009
    Ort
    Augsburg
    Beiträge
    52
    Wenn ich die Frage richtig verstanden habe, kommt recht einfach über timestamp berechnungen hin.

    So in der Art:
    PHP-Code:
    <?php
    # Daten aus dem Formular, natürlich vorher prüfen...
    $user_year 1980#Durch überprüften $_POST ersetzen
    #z.B.  $user_year = (is_numeric($_POST['blubb']) && strlen($_POST['blubb']) == 4) ? $_POST['blubb']:false;
    $user_month 6;
    $user_day 1;
    $pluseintagundeineminute 86460#Der Timestamp rechnet in Sekunden... Also hier ist der Punkt wo du zu deinem Datum einen Festen Wert addieren kanst... musst es nur in Sekunden umrechnen...

    $user_timestamp mktime(000$user_month$user_day$user_year);
    $new_timestamp $user_timestamp $pluseintagundeineminute;

    $newdate date('d.m.Y'$new_timestamp);

    ?>
    Geändert von nerdlikeyou (01.04.2010 um 16:35 Uhr)

  12. #12
    TP-Senior TanjaP. ist auf einem guten Weg
    Registriert seit
    Jul 2009
    Ort
    Wanne-Eickel
    Beiträge
    131
    super, sieht weniger kompliziert aus wie meines. Ich versuch´s mal einzubauen.
    In dem obigen Script haben einige /"... "/ gefehlt, valide ist es jetzt, aber tierisch lang.

    Tanja

  13. #13
    TP-Member nerdlikeyou macht alles soweit korrekt Avatar von nerdlikeyou
    Registriert seit
    Jun 2009
    Ort
    Augsburg
    Beiträge
    52
    Gerne.
    Als Tipp: Pack das ganze in zwei Funktionen.

    1. Funktion: Formular überprüfen

    function ueberpruefen() {

    if (irgendwas ist schief gelaufen oder jemand versucht dein Formular zu missbrauchen) {
    echo "irgendwas ist schief gelaufen";
    return array(false);
    }
    else {
    return array(true, $m, $d, $y)
    }
    }

    $wertaus_ueberpruefen = ueberpruefen();

    2. Funktion

    function datum_berechnen ($wertaus_ueberpruefen) {

    if($wertaus_ueberpruefen[0])
    ... berechne Datum
    }

    else {... nix gibts ...}

    Und ja da fehlt n Haufen, aber du sollst ja auch selber drauf kommen...

  14. #14
    TP-Senior TanjaP. ist auf einem guten Weg
    Registriert seit
    Jul 2009
    Ort
    Wanne-Eickel
    Beiträge
    131
    momentan hab ich so aus dem meinem Script, das der User das Datum nur aussuchen kann. Wäre damit eine Überprüfung nicht hinfällig?
    Momentan sieht mein Code so aus :
    <?=date_chooser("date",date("d-m-Y"))?><br /><br />
    Tragzeit in Tagen: <select name="days">
    <?php
    for($i="55";$i<="75";$i++)
    {
    if($i==63) $selected="selected=\"selected\"";
    else $selected="";
    echo "<option $selected value=\"$i\">$i</option>";
    }
    ?>
    </select></p>
    <p><input type="submit" name="calculator_ok" value="berechnen"></input></p>
    </form>
    </div>
    <?php
    }


    $chooser.="<select name=\"".$name."month\">";




    //to print a date chooser - get name and value in mysql date format
    function date_chooser($name,$value="")
    {
    $months=array("",'Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August',
    'September','Oktober','November','Dezember');

    if(empty($value)) $value=date("d-m-Y");

    $parts=explode("-",$value);

    $day=$parts[2]+0;
    $month=$parts[1]+0;
    $year=$parts[0];

    $chooser="";



    $chooser.="<select name=\"".$name."day\">";
    for($i=1;$i<=31;$i++)
    {
    if($i==$day) $selected="selected=\"selected\"";
    else $selected="";
    $chooser.="<option $selected>$i</option>";
    }
    $chooser.="</select> . ";

    $chooser.="<select name=\"".$name."month\">";
    for($i=1;$i<=12;$i++)
    {
    if($i==$month) $selected="selected=\"selected\"";
    else $selected="";
    $chooser.="<option $selected value=\"$i\">$months[$i]</option>";
    }
    $chooser.="</select> . ";

    $chooser.="<select name=\"".$name."year\">";
    for($i=(date("Y")-1);$i<=2050;$i++)
    {
    if($i==$year) $selected="selected=\"selected\"";
    else $selected="";
    $chooser.="<option $selected>$i</option>";
    }
    $chooser.="</select> ";

    return $chooser;
    }
    ?>
    und für die Berechnung diverser Daten (entsprechend angepasst)
    $duedatetime=$lasttime + 63*24*3600 + $diff*24*3600;
    $duedate=date("d.m.Y",$duedatetime);

    In "Action" ist das Script hier: http://www.undercover-coons.de/time.php

    Ist die von Dir eingesetzte Variante (mit timestamp und so) vorteilhafter, wenn ja, warum?

    Tanja

  15. #15
    TP-Member nerdlikeyou macht alles soweit korrekt Avatar von nerdlikeyou
    Registriert seit
    Jun 2009
    Ort
    Augsburg
    Beiträge
    52
    Wenn er nur aussuchen kann, und damit ein "normaler" User eigentlich nix falsch machen kann, kannst du dir Fehlermeldungen sparen. Überprüfen würd ich die Eingaben trotzdem, da man von jedem x-beliebigen Html-Formular aus Irgendwelche $_POST-Daten schicken kann die dann NICHT durch drop-down-Boxen vordefiniert sind und theoretisch alles mögliche enthalten können.

    Ich könnte z.B. auf meinem Rechner eine html-Datei liegen haben und im <form>-tag das action auf "http://www.undercover-coons.de/time.php" stellen und schon kann ich jeden beliebigen input-typ verwenden - solange ich ihm den richten namen zuweise wird php das so schlucken...

    Ob du jetzt mit string to time oder timestamp arbeitest, ist in deinem Fall ziemlich egal. Ich find auch das PHP unten teilweise ziemlich aufgebläht... Warum sollte man z.B. die Monate dynamisch erzeugen lassen??? Ein Jahr hat immer die selben 12 Monate, sowas könnte man einfach in HTML statisch reinschreiben...

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Ähnliche Themen

  1. 24 Tage oder -693937 Tage
    Von Thomas im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 13.06.2005, 14:54
  2. [PHP] Anzahl der Tage des nächsten Monats ermitteln
    Von Schinny im Forum Traum-Dynamik
    Antworten: 2
    Letzter Beitrag: 14.11.2004, 11:59
  3. datum-selector auf das aktuelle datum setzen
    Von theo im Forum Traum-Dynamik
    Antworten: 5
    Letzter Beitrag: 14.07.2003, 18:52
  4. Tage seit einem Datum errechnen?
    Von Tiny Boom im Forum Traum-Dynamik
    Antworten: 4
    Letzter Beitrag: 26.06.2003, 16:49
  5. Datum mit anderem Datum vergleichen - Differenz?
    Von Boris im Forum Traum-Dynamik
    Antworten: 5
    Letzter Beitrag: 23.12.2001, 20:11

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51