사용 시간 계산하여 출력하고 입력
본문
안녕하세요.
사용 시작 시각 입력하고 사용 끝나는 시각을 입력하고 확인 버튼을 누르면
다음 확인 페이지에서 사용한 시간이 " 00시간 00분" 형식으로 출력되게 하고 완료 버는을 누르면
mysql '00분' 형식으로 변환되어 하나의 숫자로 입력되게 할려고 합니다.
그런데 확인페이지까지는 잘 나타나는데 계산된 db 값은 mysql db에 저장이 안되네요.
product_start 과 product_end 값은 정상적으로 입력이 되는데 계산된 total_used_minutes 값은 입력이 안되네요.
어떻게 하면 될까요?
고수님들의 감사한 조언 부탁드립니다.
pused_history.html 파일
<head>
<title>시간 계산</title>
</head>
<body>
<form action="pused_result.php" method="post">
<label for="product_start">사용 시작 시각:</label>
<input type="time" id="product_start" name="product_start" required>
<br>
<label for="product_end">사용 끝낸 시각:</label>
<input type="time" id="product_end" name="product_end" required>
<br>
<input type="submit" value="입력">
</form>
</body>
pused_result.php 파일은
<form action="pused_update.php" method="post">
<input type="hidden" name="product_start" value="<?php echo $_POST['product_start']; ?>">
<input type="hidden" name="product_end" value="<?php echo $_POST['product_end']; ?>">
<input type="hidden" name="total_used_minutes" value="<?php echo $_POST['total_used_minutes']; ?>">
중간생략
<td class="hdrf-a02">• 사용 시간</td>
<td class="hdrf-a02"><?php
$start_time = $_POST['product_start'];
$end_time = $_POST['product_end'];
$start_datetime = new DateTime($product_start);
$end_datetime = new DateTime($product_end);
if ($start_datetime > $end_datetime) {
$end_datetime->modify('+1 day');
}
$interval = $start_datetime->diff($end_datetime);
// 결과를 출력한다.
$used_hours_minutes = $interval->format('%h시 %i분');
$total_used_minutes = $interval->days * 24 * 60 + $interval->h * 60 + $interval->i;
echo "사용 시간 : " . $used_hours_minutes . "<br>";
echo "또는 " . $total_used_minutes . "분";
?>
</td>
중간생략
그래서 심지어 '분' 형식으로 된것을 표시까지 했는데도 안되네요.
사용시작시각, 사용끝낸시각인 product_start, product_end 의 값은 정상적으로 입력이 되는데
사용한 시간인 total_used_minutes 의 값은 mysql 에 입력이 안되네요.
pused_update.php 파일은
<?php
include_once('./_common.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
include_once(G5_LIB_PATH.'/register.lib.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
$product_start = $_POST['product_start'];
$product_end = $_POST['product_end'];
$total_used_minutes = $_POST['total_used_minutes'];
$sql = "insert into g5_member_prodcut
(product_start, product_end, total_used_minutes)
values ('$product_start', '$product_end', '$total_used_minutes'
)";
생략
고수님들의 감사한 조언 부탁드립니다. 꾸벅
!-->!-->!-->
답변 4
pused_update.php 에서 $product_start, $product_end 값을 제대로 읽을수 있다면
$total_used_minutes 를 다시 계산해보는것도 방법일것 같고
그와 별개로 g5_member_prodcut 테이블 각 필드 타입 정보가 확인되어야
db 정보 저장 문제 해결에 도움이 될것 같습니다.
int형식이면 unixtime으로 변환해서 넣어보세요.
$product_start = strtotime($_POST['product_start']);
// 날짜 시분초
date('Y-m-d H:i:s',$product_start);
// 날짜
date('Y-m-d',$product_start);
// +1 day한 다음날짜
date('Y-m-d',$product_start+86399);
아직 해결안되었으면 참조하세요 화이팅!
pused_history.html
<input type="hidden" name="total_used_minutes" value="<?php echo $total_used_minutes; ?>">
pused_result.php
$start_datetime = new DateTime($start_time);
$end_datetime = new DateTime($end_time);
pused_result 에서는 total_used_minutes 변수를 대신 사용
echo "또는 " . $total_used_minutes . "분";
used_update.php
이건 그냥그대로