2016-09-08 1 views
0

Ich habe zwei Felder von Daten mit Namen von und zu. Was ich will, ist ihre Unterschiede in der nächsten Textbox (mit dem Namen diff) zu berechnen. Ich bin nicht in der Lage, Datumswerte in PHP zu holen, wer auch immer verwende ich unten erwähnten statischen Wert für Datum, es zeigt mir genaue Ergebnisse.Datum Unterschied Berechnung in PHP

Hier ist mein Code:

<body> 
From : <input type="date" name="from"> 
To : <input type="date" name="from"> 

<?php 
    $datetime1 = new DateTime('2016-09-3'); 
    $datetime2 = new DateTime('2016-09-5'); 
    $interval = $datetime1->diff($datetime2); 
?> 

Diff : <input type="Text" name="diff" id="diff" value="<?php echo $interval->format('%R%a')+1;?>"> 
</body> 
+1

Haben Sie dynamische Ergebnis müssen (wenn der Benutzer ein Datum ändern, die Diff Textfeld wird automatisch aktualisiert), Sie benötigen also Javascript? –

+1

Es funktioniert nicht so. PHP läuft auf dem Server. Wenn Sie PHP-Befehle verwenden möchten, ohne die Seite zu verlassen, müssen Sie Daten mit AJAX an den Server senden und dann das Ergebnis anzeigen. –

+0

Danke für Ihre Hilfe, mein Lieber. Ich werde versuchen und von jedem Problem ich werde zu Ihnen zurückkommen. – A1Nasir

Antwort

0

Sie müssen diese Eingaben in das Formularelement wickeln, so dass Ihre HTML Willen wie folgt aussieht:

<form action="" method="post"> 
    From : <input type="date" name="from"> 
    To : <input type="date" name="to"> 
    <input type="submit" value="Calculate"> 
</form> 

dann in PHP tun gerade dies:

Nun, ich weiß, ich habe keine Sicherheit über leere Eingänge oder ungültige Daten, aber ich hoffe, dass Sie dazu führen werden dein Ziel.

-2
$seconds = strtotime($_POST['date2']) - strtotime($_POST['date1']); 

auf diese Weise Sie Zeit in Sekunden und dann berechnen, wie Sie

$year = floor($seconds /31556926); 
$months = floor($seconds /2629743); 
$week=floor($seconds /604800); 
$day = floor($seconds /86400); 
$hours = floor($seconds/3600); 
$mins = floor(($seconds - ($hours*3600))/60); 
$secs = floor($seconds % 60); 
+0

Ich glaube, die Frage ist, die eingegebenen Werte nach PHP zu bekommen, nicht die Besonderheiten der Datumsberechnung. –

+0

aber Sie haben zwei eingereicht und gleichen Namen von, wie man berechnet? Ich aktualisiere meine Antwort –

+1

Das OP versucht PHP zu verwenden, nachdem die Seite geladen wurde und der Benutzer die Daten eingegeben hat. Es funktioniert jedoch nicht so, das Formular muss zuerst gesendet werden (oder AJAX). Das ist der Kern hier. –

0

Arbeits Code wollen:

<form> 
From: <input type="date" name="from"> 
To: <input type="date" name="to"> 
<input type="submit" name="calc"> 
</form> 

<?php 

if (isset($_GET['calc'])) { 

    $from = filter_input(INPUT_GET, "from"); 
    $to = filter_input(INPUT_GET, "to"); 

    $datetime1 = new DateTime($from); 
    $datetime2 = new DateTime($to); 
    $interval = $datetime1->diff($datetime2); 

    echo "Diff: " . ($interval->format('%R%a') + 1); 
} 
?> 
+0

Chris G ... danke für deine Hilfe, mein Schatz, es funktioniert und ich bin mir sicher, dass dies nach meiner Anforderung funktionieren wird. Danke noch einmal. – A1Nasir