사용 시간 계산하여 출력하고 mysql db값 입력
본문
안녕하세요.
몇일동안 해결을 못하고 씨름하고 있지만...
해결이 안되네요.
고수님들의 감사한 조언 부탁드립니다.
pused_history.html 파일에
'사용 시작 시각' 입력하고 '사용 끝나는 시각'을 입력한 후 확인 버튼을 누르면
다음 확인 페이지인 pused_result.php 에서
'사용 시작 시각 : 시 분'
'사용 끝낸 시각: 시 분'
'사용한 시간: " 00시간 00분" 분형식 " 분" '
이렇게 출력되게 하고 완료 버는을 누르면
다음 페이지인 pused_update.php 에서
mysql '00분' 형식으로 입력되게 할려고 합니다.
그런데 pused_result.php 에서는 보여지는 '사용한 시간: " 00시간 00분" 분형식 " 분" ' 의 값이
mysql db에 저장이 안되네요.
그래서 중간에 pused_result1.php 페이지를 만들어서
'사용한 시간: " 00시간 00분" 분형식 " 분" ' 의 값 을 가져오나 테스트 해봤는데 못가져오더라구요.
다 똑같이 했는데 왜 안되는 걸까요.
감사한 조언 부탁드립니다.
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_result01.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']; ?>">
중간생략
<tr>
<td class="hdrf-a02">• 사용 시작 시각</td>
<td class="hdrf-a02"><?php if (isset($_POST['product_start'])) {
$inputValue = $_POST['product_start'];
echo htmlspecialchars($inputValue) . "";
}
?>
</td>
</tr>
<tr>
<td class="hdrf-a02">• '사용 끝낸 시각</td>
<td class="hdrf-a02"><?php if (isset($_POST['product_end'])) {
$inputValue = $_POST['product_end'];
echo htmlspecialchars($inputValue) . "";
}
?>
</td>
</tr>
<tr>
<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>
</tr>
중간생략
그래서 pused_result01.php 파일을 만들어
"total_used_minutes" 값을 가져오나 확인해 봤더니 못가져 오더라구요. ㅠㅠ
<tr>
<td class="hdrf-a02">• 사용 시간</td>
<td class="hdrf-a02"><?php if (isset($_POST['total_used_minutes'])) {
$inputValue = $_POST['total_used_minutes'];
echo htmlspecialchars($inputValue) . " 분";
}
?>
</td>
</tr>
</tbody>
</table>
<?php
echo "'사용 시간: " . $total_used_minutes . "분";
?>
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'
)";
생략
이렇게 만들어 product_start, product_end 값은 정상적으로 입력이 됩니다.
무엇이 잘못되었을까요?
고수님의 감사한 조언 부탁드립니다.
!-->!-->!-->!-->
답변 2
<input type="hidden" name="total_used_minutes"
value="<?php echo $_POST['total_used_minutes']; ?>">
여기를
계산식 밑으로 옮기세요
소스보다는 먼저 데이타베이스 스키마형식 값을 저장하는 컬럼의 데이터 형식이 MySQL에서 지원하는 시간 관련 데이터 형식과 정확히 일치하는지 확인해 주셔야합니다.
이것때문에 필요없는 코딩수정에 시간낭비가 많습니다.
스트레스도 이만저만 이아닙니다.
그래서 꼭 확인 또확인이 필요합니다.
보통 시간 관련 데이터를 저장할 때는 TIME, DATETIME, TIMESTAMP 등의 데이터 형식을 사용합니다.
데이터 형식이 일치하지 않으면 저장에 문제가 발생할 수 있습니다.
사용한 시간 값을 어떤 형태로 MySQL에 저장하려고 하는지 확인하시고, 또한 시간 값을 정상적인 형식에 맞춰서 저장 해야합니다.
예를 들어, '00시간 00분' 형태의 문자열로 저장하려면 필요한 변환이나 포맷팅 작업을 해야 한다는 거죠.
소스는별문제 없어보이니 먼저 이부분을 확인해보시고 다음소스부분에 접근하시면될것 같습니다.