2011-01-03 17 views
0

Ich habe den folgenden Code. Ich versuche, zwei Form-Posts mit auf derselben Seite zu behandeln. Was der Code tut, ist, wenn ein Benutzer auf die Schaltfläche "next14days" klickt, werden die Daten für die nächsten 14 Tage angezeigt. Wenn der Benutzer auf "prev14days" klickt, sollten die Daten der vorherigen 14 Tage angezeigt werden. Das funktioniert für mich nicht.variabler Bereich mit if else Anweisungen in PHP

zum Beispiel sagen wir aktuelles Datum ist 2011/01/03 und ich traf next14days das aktuelle Datum sollte 2011/01/17 sein. Das funktioniert, aber wenn ich prev14days treffe, was mich zum 2011/01/03 zurückbringen sollte, dann wird es am 20.12.2010 so aussehen (2011/01/03 - 14).

Die Seite wird jedes Mal aktualisiert, wenn ein Benutzer eine der Schaltflächen anklickt und alles in der IF-Klausel nicht zugänglich ist.

<?php 

if(($prevFlag == '' || $nextFlag == '')) 
{ 
    $currentDay = date('Y/m/d'); 
    $SQL4 = "Exec EmployeeVac '" . $currentDay . "'"; 
    $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message()); 

} 

if (isset($_POST['next14submit'])) 
{ 

    $nextFlag = 'yes'; 

    if($prevFlag == 'yes') 
    { 
     $next14 = date('Y/m/d', strtotime($prev14 . "+14 days")); 
     $currentDay = $next14; 
     $SQL4 = "Exec EmployeeVac '" . $currentDay . "'"; 
     $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message()); 
    } 
    else 
    { 
     $next14 = date('Y/m/d', strtotime($currentDay . "+14 days")); 
     $currentDay = $next14; 
     $SQL4 = "Exec EmployeeVac '" . $currentDay . "'"; 
     $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message()); 
    } 
} 

if (isset($_POST['prev14submit'])) 
{ 
    $prevFlag = 'yes'; 
    echo $nextFlag; 
    if($nextFlag == 'yes') 
    { 
     $prev14 = date('Y/m/d', strtotime($next14 . "-14 days")); 
     $currentDay = $prev14; 
     $SQL4 = "Exec EmployeeVac '" . $currentDay . "'"; 
     $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message()); 
    } 
    else 
    { 
     $prev14 = date('Y/m/d', strtotime($currentDay . "-14 days")); 
     $currentDay = $prev14; 
     $SQL4 = "Exec EmployeeVac '" . $currentDay . "'"; 
     $result4 = mssql_query($SQL4,$link1) or die('An error occured: ' . mssql_get_last_message()); 
    } 
} 

?> 

Antwort

0

Ihr Bestehen keine Referenz für die "letzten 14 Tage von ...

in Ihrem Skript

Im Wesentlichen berechnet werden Sie die vorangegangenen 14 Tage ab heutigem Datum sind caclulating ..

irgendwie wie auf diesem Abschnitt verloren .. (es sei denn, dies nicht der gesamte Code ist)

if(($prevFlag == '' || $nextFlag == '')) {  $currentDay = date('Y/m/d'); 

im wesentlichen, dass Code wird immer exicute ...

dann verweisen Sie später:

$prev14 = date('Y/m/d', strtotime($currentDay . "-14 days")); 

so sind Sie nur 14 Tage ab heute subtrahieren?

0

Sie müssen hinzufügen, was das aktuelle Datum in Ihrem Formular war, so dass Ihr PHP-Skript weiß, mit welchem ​​Datum Sie anfangen sollen, vorwärts oder zurück zu gehen.

if(isset($_POST['currentDay'])){ 
    $currentDay = strtotime($_POST['currentDay']); 
} else { 
    $currentDay = date('Y/m/d'); 
} 

Sie müssen neu erstellen, dass PHP keine Stateful-Sprache ist. Dein Skript weiß nur, was du passierst. Wenn Sie kein Startdatum übergeben, weiß es nicht, wo Sie 14 Tage hinzufügen oder entfernen müssen.

Viel Glück.