2014-11-29 3 views
1

현재 프로젝트를 진행하고 있으며 기본적으로 스케줄링 웹 응용 프로그램입니다. 오늘 하루 동안 저장 될 텍스트를 사용자가 입력하는 페이지가 하나 있습니다.PHP에서 "날짜"변수를 증가 및 감소

사용자는 또한 다음날과 전날 또는 캘린더를 사용하여 항목을 만들 수 있습니다.

내 페이지 하단에는 이전 및 다음 두 개의 버튼이 있습니다.

예를 들어 다음 날을 클릭하고 다음 날의 날짜를 페이지 상단에 표시하고자합니다. 그리고 다음날 페이지가 나타나면 다음 날을 다시 클릭하면 다음날로 이동해야합니다 (즉, 2 일간의 헤드). 등등. 전날에도 같은 내용이 적용됩니다.

그래서 버튼을 사용하여 캘린더에서 앞뒤로 계속 이동하는 방법이 필요합니다.

지금까지 나는 다음과 전날에 즉각 갈 수 있지만 계속할 수는 없습니다. 내가 클릭 된 링크를 찾는 방법이있다

<a href="builder.php?day=previous" id="btn_previous_day">Previous day</a>        
<a href="builder.php?day=next" id="btn_next_day">Next day</a> 

:

는 페이지 하단의 링크입니다. ?이 코드는 페이지

<?php 
$_SESSION['prev'] = 0; 
$_SESSION['next'] = 0; 

if(isset($_GET['day'])) 
{ 
    if($_GET['day'] == 'previous') 
    { 
     $_SESSION['prev']--; 

     $currentDay = date('j m o', strtotime(' - ' . $_SESSION['prev'] . ' day')); 
    } 

    if($_GET['day'] == 'next') 
    { 
     $_SESSION['next']++; 
     $currentDay = date('j m o', strtotime(' + ' . $_SESSION['next'] . ' day')); 
    } 

} else { 
    $currentDay = date('j m o'); 

}
>

의 상단에 그리고 여기 어디 출력 현재 날짜 :

<p><input type="text" id="title" style="border: none;" name="title" size="20" value=" WOD <?php echo $currentDay; ?>"/></p> 

감사합니다 !!!!

+0

당신이 [링크]를 수행 할 수 있습니다 (http://stackoverflow.com/questions/660501/simplest-way-to-increment-a-date- in-php) – eMAD

답변

0

이 시도 :

@session_start(); 

if(isset($_GET['day'])) 
{ 
    if($_GET['day'] == 'previous') 
    { 

     $_SESSION['currentDay']=$currentDay = date('j m o', (strtotime($_SESSION['currentDay']) - (3600*24))); 
    } 

    if($_GET['day'] == 'next') 
    { 
     $_SESSION['currentDay']= $currentDay = date('j m o', (strtotime($_SESSION['currentDay']) + (3600*24))); 
    } 

} else { 
    $_SESSION['currentDay']=$currentDay = date('j m o'); 
} 
0

쉽게 예를 들어 URL에 다른 매개 변수를 추가하여이 작업을 수행 할 수 있습니다

같은은 $ _SESSION

및 증가를 유지 간다

$_GET['n'] 

모든 페이지의이 매개 변수

// this will get the prev three days (for example) 
<a href="builder.php?day=previous&n=3" id="btn_previous_day">Previous day</a> 
// this will get the next three days (for example)        
<a href="builder.php?day=next&n=3" id="btn_next_day">Next day</a> 

당신은 다음 버튼이 증가 클릭하고 다음 사일 표시됩니다 그래서

에 당신이 제로에 세션 변수를 설정하는 때문입니다

if(isset($_GET['day'])) 
{ 
    if($_GET['day'] == 'previous') 
    { 

    $currentDay = date('j m o', strtotime(' - ' . $_GET['n'] . ' day')); 
} 

if($_GET['day'] == 'next') 
{ 
    $currentDay = date('j m o', strtotime(' + ' . $_GET['n'] . ' day')); 
} 

} 


echo $currentDay; 
0

을 어떻게 때 페이지가로드 될 때마다

에 한번 교체 다음 줄 :

$_SESSION['prev'] = 0; 
$_SESSION['next'] = 0; 

if(!$_SESSION['prev']){ 
$_SESSION['prev'] = 0; 
} 

if(!$_SESSION['next']){ 
$_SESSION['next'] = 0; 
} 

와 함께 그것은 당신이 다음 및 이전 일 더에 갈 수 있도록해야합니다.

0

코드 상단에 0으로 설정되어있는 것으로 보입니다. 따라서 다음/이전 값을 증가/감소 시키더라도 0으로 재설정됩니다. 따라서 오늘부터 +/- 하루 이상을 얻을 수 없습니다.

물론 모든 코드가 여기에있는 것은 아니지만 세션 당 한 번만 세션 변수를 설정하면됩니다.

또한 다음 번 AND 사전이 필요하지 않습니다. 단 하나의 변수만으로이 작업을 수행 할 수 있습니다. 그래서 당신은 상단에 이런 일을 할 수있는 그런 다음

if (!isset($_SESSION['dayIndex'])) 
    $_SESSION['dayIndex'] = 0; 

:

if($_GET['day'] == 'previous') 
{ 
    $_SESSION['dayIndex']--; 
    $currentDay = date('j m o', strtotime(' - ' . $_SESSION['dayIndex'] . ' day')); 
} 

else if($_GET['day'] == 'next') 
{ 
    $_SESSION['dayIndex']++; 
    $currentDay = date('j m o', strtotime(' + ' . $_SESSION['dayIndex'] . ' day')); 
} 

또한이 작업을 수행 할 수 있습니다뿐만 아니라 URL 매개 변수, 또는 다른 여러 가지 방법을 통해 특정 날짜를 전달하여 .

1

여기에 나온 모든 제안을 토대로 필자가 찾은 해결책을 게시하고 싶습니다. 다들 감사 해요.

질문에 대한 내 솔루션 :

if(!$_SESSION['dayIndex']){ 
$_SESSION['dayIndex'] = 0; 
} 
    if(isset($_GET['day'])){ 
     if($_GET['day'] == 'previous'){ 
      --$_SESSION['dayIndex']; 
      $currentDay = date('j m o', strtotime($_SESSION['dayIndex'] . 'day'));   
     } 
     if($_GET['day'] == 'next'){ 
      ++$_SESSION['dayIndex'];  
      $currentDay = date('j m o', strtotime($_SESSION['dayIndex'] . ' day')); 
     } 
} else { 
    $currentDay = date('j m o'); 
}