사용 시간 계산하여 출력하고 입력
안녕하세요.
사용 시작 시각 입력하고 사용 끝나는 시각을 입력하고 확인 버튼을 누르면
다음 확인 페이지에서 사용한 시간이 " 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개 / 댓글 4개
pused_update.php 에서 $product_start, $product_end 값을 제대로 읽을수 있다면
$total_used_minutes 를 다시 계산해보는것도 방법일것 같고
그와 별개로 g5_member_prodcut 테이블 각 필드 타입 정보가 확인되어야
db 정보 저장 문제 해결에 도움이 될것 같습니다.
답변에 대한 댓글 2개
+ pused_result.php
- 중간부에 있던 코드 대부분을 라인 위쪽으로 이동
- $total_used_minutes 는 POST 값이 아니므로 그에 맞게 표현
[code]
<?php
$start_time = $_POST['product_start'];
$end_time = $_POST['product_end'];
//$start_datetime = new DateTime($product_start);
//$end_datetime = new DateTime($product_end);
$start_datetime = new DateTime($start_time);
$end_datetime = new DateTime($end_time);
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;
?>
<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 $total_used_minutes; ?>">
중간생략
<td class="hdrf-a02">• 사용 시간</td>
<td class="hdrf-a02"><?php
echo "사용 시간 : " . $used_hours_minutes . "<br>";
echo "또는 " . $total_used_minutes . "분";
?>
</td>
중간생략
<input type="submit">
</form>
[/code]
+ pused_update.php
- 마지막 라인에 sql_query($sql); 추가
[code]
<?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'
)";
sql_query($sql);
?>
[/code]
아직 해결안되었으면 참조하세요 화이팅!
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
이건 그냥그대로
$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_result.php 에서 total_used_minutes 는 '시간 분' 형식이나 '분' 형식 둘다 정확하게 계산되어서 출력이 되거든요.
테이블은 이렇게 되어 있습니다.
[code]
CREATE TABLE `g5_member_prodcut` (
`mb_no` INT(11) NOT NULL AUTO_INCREMENT,
`mb_id` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`product_start` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`product_end` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`total_used_minutes` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
PRIMARY KEY (`mb_no`) USING BTREE,
INDEX `mb_id` (`mb_id`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=9
;
[/code]
추가 적인 조언 부탁 드려도 될까요?
정말 감사합니다.