채택완료

php 날짜 관련해서 질문좀 드리겠습니다.

2018-02-04 (일) 23:22:35 3,638

일단 어제 날짜 오늘 날짜 내일 날짜를 갱신할려고 합니다.

날짜를 구하는 방법을 여쭤보는 것이 아닙니다 ...

그 방법은 이미 다 구현이 된 상태인데, 제가 원하는게 ...

단순히 예를 들어 

전날       2018.02.04   다음날    이렇게 해서

데이터 쭈우우우우우우욱 나오고

전날을 누른다고 가정했을때

전날    2018.02.03  다음날 이렇개 해서

또 데이터 쭈우우욱 나오게 할려고 합니다.

역시나 이방법을 여쭤볼려고 하는것이 아닙니다. 이것도 구현한 상태로 잘 작동합니다.

즉, 전날 누르면 위처럼 잘 나오고 데이터도 잘 나옵니다.

다만 전날을 누르면, 새로 페이지가 갱신되는 현상이 있어서 .... 

(현재 스크롤이 있는 페이지라, 위로 올라갔다가 다시 내려오는 현상)


전날 누르면 그 즉시 데이터를 변경할 수 있는 방법을 모색하던중 ajax 를 이용하면 된다고 해서 약 5시간 가량 검색해봐도 제대로 된 내용을 확인할 수 없었고,

마지막으로 확인한 답변에서는 불가능하다는 답변을 얻었습니다.

대표적으로 iframe 을 이용해서 target 을 주는 방법도 해봤고, 
자바스크립트에 프리이벤트디폴트를 주는 방법도 해봤고,
다양한 방법을 해봤습니다..ㅠ만 아쉽게도 모두 안되더라구요....

혹시 좋은방법이나, 관련 소스 혹은 예제 사이트가 있다면 도움 좀 받을 수 있을까? 합니다..ㅠㅠ
후...오늘 하루 종일 이것 때문에..고생입니다..

답변 좀 부탁드리겠습니다.

제가 원하는건, 그 자리에서 데이터가 변경되는 ....방법이 궁금합니다. 

아래는 위 내용을 구현한 소스입니다

Copy
<?php
$TargetDate = $_POST["TargetDate"];
if($TargetDate == "")
{
    $TargetDate = date("Y-m-d");
}

$PreDay = date("Y-m-d", strtotime($TargetDate . " -1 day"));
$NextDay = date("Y-m-d", strtotime($TargetDate . " 1 day"));
?>


<form method="POST" id="PreDateForm">                    
<input type="hidden" name="TargetDate" id="TargetDate" value="<?php echo $PreDay;?>" />
<?php
        $PreCompare = date("Y-m-d", strtotime(date("Y-m-d") . " -3 day"));
        if($TargetDate > $PreCompare)
        {
echo "<a href=\"#\" onclick=\"document.getElementById('PreDateForm').submit(); return false;\">전날</a>";
}
else
{
echo "<a style=\"cursor:pointer;\" onclick=\"javascript:alert('3일 이전의 데이터는 확인이 불가능합니다.'); return false;\">전날</a>";
}
?>
</form>

<?php echo $TargetDate;?>
|

답변 3개 / 댓글 1개

채택된 답변
+20 포인트
2018-02-05 (월) 07:05:22

1. 페이지 전환없이 내용의 변경이 필요하다면 ajax 혹은 iframe 이 방법이겠죠.

2. iframe을 이용해도 iframe 영역은 화면깜박임(새로고침)이 될수 있습니다.

3. ajax를 이용할 경우 현재 날짜및 데이터 이외에도 첫 로딩시 여분으로 데이터를 로딩해놓는 방식으로 구현현할 수 있습니다. 흔히 무한스크롤이라 부르며 리스트를 정해진 갯수만큼 뿌려주고 더보기등을 통해 다시 뿌리는 형식이죠.

4. 단순히 어제 오늘 내일 데이터만을 갱신하는 것이 목적이라면 다른 것을 연구할 필요도 없이 애초에 3가지를 다 뿌려놓고 눈에 보이는 가시적인 부분만 오늘로 맞춰놓으시면 됩니다.

즉, 정해진 날짜(오늘)이 주어지면 어제데이터와 내일데이터(?)를 구해와 뿌려놓고 전날버튼, 다음날버튼을 클릭하면 해당 날짜에 해당하는 데이터를 보여주는 식이죠. 간단히 탭형식을 생각해보시면 간단한 구조입니다. 

음 제가 질문의 요지를 잘 이해 못했을 수도 있습니다만.

예를 드신것 처럼 전날을 누르면 기존 데이터가 사라졌다가 전날의 데이터가 나오면 되는 것 아닌가요???

만일 맞다면 ajax로 충분할 듯 보입니다.

질문자님의 글을 검색해봤습니다.

https://sir.kr/qa/228228?sfl=mb_id%2C1&lstx=pnj312

불가능 하다는 답변은 없는것 같은데요.

답변 달아주신 분 방법대로 하면 될것 같구요

추가적으로 jQuery Ajax 를 사용하는 간단한 예제입니다.

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_ajax

비동기로 읽어들이는 파일은 소스에 나와있듯이

https://www.w3schools.com/jquery/demo_test.txt

입니다.

답변에 대한 댓글 1개

제 질문에 대한 답이 불가능하다는건 아닙니다. 질문하기전 계속 검색하니..

어디였는지 기억이 안나지만, ajax 값을 php 변수에 대응해야 하는데 그게 안된다는 답변이였습니다.

아직은 초보수준이라 그런지 ajax 데이터를 받아와서 ... 석세스 부분에서 html 을 갱신하면 되는데

다시 전날을 누르면 다시 그전날로 넘어가야 하는데 (2번 눌렀으니 -2일) 그게 안되더라구요

한번만 넘어가서 ㅠㅠㅠㅠㅠ

더불어 제이쿼리를 이용한 ajax 는 보기는 봤습니다만, 위 질문을 해결할수는 없더라구요...

답변을 작성하려면 로그인이 필요합니다.