테스트 사이트 - 개발 중인 베타 버전입니다

php 버튼 클릭 시 변수값 가지고 페이지 이동 채택완료

dhdl52 3년 전 조회 1,938

안녕하세요. 제가 현재 PHP 페이지에서 버튼을 클릭 하면 변수값을 들고 페이지를 이동하면서 들고온 변수값을 이용해 엑셀을 다운로드 받는 코드를 작성중입니다.

 

코드는 다음과 같습니다.

 

index_day.php

</p>

<p><?php

if(!empty($_POST)){

    $output = '';</p>

<p>    $DB_IP = "";

    $DB_ID = "";

    $DB_PWD = "";

    $DB_NAME = "";

    $DB_ConnectInfo = array("UID"=>$DB_ID, "PWD"=>$DB_PWD, "Database"=>$DB_NAME, "CharacterSet" => "UTF-8");</p>

<p>    date_default_timezone_set('Asia/Seoul');

    

    $connect = sqlsrv_connect($DB_IP, $DB_ConnectInfo);</p>

<p>    $StartDate = $_POST['startDate'];

    $EndDate = $_POST['endDate'];</p>

<p>    $time = " 23:59:59:999";

    $query = "SELECT U.UserId, H.UserName, H.CommuteType, CommuteDateTime, UserPosition, UserResponsibilities, UserDepartment 

                FROM tblCommuteHistory H JOIN tblUser U ON H.UserId = U.UserId

                WHERE CommuteDateTime BETWEEN '".$StartDate."' AND '".$EndDate.$time."'

                ORDER BY CommuteDateTime DESC";</p>

<p>

    $text = "해당 기간 내역 엑셀로 변환";

    if (sqlsrv_query($connect, $query)) {

        $output .= '<button type="button" data-toggle="modal" onclick="document.location.href= `index_day_excel.php`" class="btn btn-link">'.$text.'</button>';

        $result = sqlsrv_query($connect, $query);</p>

<p> </p>

<p>        // 하단에는 다른 코드 존재

    }

    echo $output;

}</p>

<p>

 

DB연결과 잘 됐고, 이전 페이지에서 AJAX로 startDate값과 endDate값을 index_day.php로 넘겨서 받은 $StartDate, $EndDate값도 잘 들어온걸 확인했습니다.

 

if문 내 button클릭 시 index_day_excel.php로 넘어가게끔 onclick을 넣어줬는데,

혹시 넘어갈 때 $StartDate값과 $EndDate값을 들고 넘어가는 방법이 있을까요?

(index_day_excel.php은 url로 변수를 들고 넘어가기만 하면 바로 엑셀 파일이 다운로드 되도록 하는 코드가 있습니다.)

감사합니다.

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

답변 3개

채택된 답변
+20 포인트

1. 아래처럼 버튼 부분을 바꿉니다.

</p>

<p>$output .= '<button type="button" data-toggle="modal" onclick="document.location.href= `index_day_excel.php?StartDate=".$StartDate."&EndDate=".$EndDate."`" class="btn btn-link">'.$text.'</button>';</p>

<p>

 

2. index_day_excel.php 의 가장 상단에

</p>

<p>$StartDate = $_GET['StartDate'];

$EndDate = $_GET['EndDate'];</p>

<p>

 

3. 만일 index_day_excel.php 에 $StartDate 와 $EndDate 의 디폴트값이 있다면...

</p>

<p>$StartDate = $_GET['StartDate'] ? $_GET['StartDate'] : $StartDate;

$EndDate = $_GET['EndDate'] ? $_GET['EndDate'] : $EndDate;</p>

<p>

 

이건 겟변수로 넘기는 방식인데 포스트방식으로 넘기려면

index_day_excel.php 를 액션문서로 처리하면서 양쪽 문서에 폼전송 로직을 첨가해 주어야 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

비타주리
3년 전
에고 제가 쌍따옴표 외따옴표를 잠시 착각했네요.
처음 코드를 아래처럼 사용하시구요.
[code]
$output .= "<button type=button data-toggle=modal onclick=location.href='index_day_excel.php?StartDate=".$StartDate."&EndDate=".$EndDate." class='btn btn-link'>".$text."</button>";
[/code]
----------
포스트 방식으로 하시려면 전체코드를 아래처럼 해야겠지요.
[code]
$output .= "<form action=index_day_excel.php method=post><input type=hidden name=start_date value='".$StartDate."'><input type=hidden name=end_date value='".$EndDate."'><button data-toggle=modal class='btn btn-link'>".$text."</button></form>";
[/code]
[code]
$StartDate = $_POST['start_date'] ? $_POST['start_date'] : $StartDate;
$EndDate = $_POST['end_date'] ? $_POST['end_date'] : $EndDate;
[/code]
d
dhdl52
3년 전
와! 정말 감사합니다...ㅠㅠ 3일간 고민한건데 덕분에 해결됐습니다!!!!! 감사합니다!

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

쌍따옴표 외따옴표 문제는 늘 잔실수가 많이 나와서...

직접 코드 결과물 보면서 하는 것이 가장 좋은데...

 

겟변수의 경우 아래처럼 한번 해 보세요.

따로 링크부분만 변수로 만들었습니다.

 

</p>

<p>&link = "index_day_excel.php?StartDate=".$StartDate."&EndDate=".$EndDate;

$output .= "<button type=button data-toggle=modal onclick=location.href='".$link."' class='btn btn-link'>".$text."</button>";</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

d
dhdl52
3년 전
맞아요... 정말 여러번 확인하는데도 따옴표 부분은 실수를 많이 하더라구요...
도와주셔서 너무 감사합니다. 알려주신 GET방식으로도 하면서 많이 연습하겠습니다!

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

하틴
3년 전

그누보드 내에서 작업하시는거면 저렇게 디비를 연결하기보다 common을 include 해오시면 기존에 그누에서 쓰던 방식으로 디비작업이 가능하십니다.

onclick="document.location.href= `index_day_excel.php?StartData={$StartData}`" 

이런식으로 get으로 넘기실 수 있을거에용

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

d
dhdl52
3년 전
도와주셔서 감사합니다! 말씀해주신대로 하니까 onclick함수가 (홑따옴표를 포함한) '<button>' 함수 내부에 있는거다 보니 $StartDate값이 넘어가는게 아니라 $StartDate 문자열이 넘어가네요ㅠㅠ
d
dhdl52
3년 전
해결했습니다!ㅎㅎ 도와주셔서 정말 감사합니다!!

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

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

로그인