foreach 질문입니다..
본문
echo $currdate = $_GET["currdate"];
$query = "select * from g5_write_counsel2 WHERE wr_1='".$currdate."' ";
$result = sql_query($query);
$mhp = sql_fetch_array($result);
$bb = $mhp['wr_3'];
$time_array[1] = array("10:30","11:00","11:30","12:00","12:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30");
<?php
foreach($time_array[$day_type] as $k=>$v)
{
if ($bb == "1" || $bb == "2"){
$reservation_yn = "N";
}
?>
<li><?php echo $reservation_yn=="Y"?"(예약가능)":"(예약불가)"?></li>
<?php
}
?>
위 코드는 달력에서 날짜를 클릭하면 그날에 예약이 가능한 시간이 나오는 코드입니다.
질문은 이러합니다.
선택한 날짜의 wr_3에 값이 있다면
if ($bb == "1" || $bb == "2"){
$reservation_yn = "N";
}
이게 동작하게 하고 싶은데요, 그래서
쿼리로 wr_3의 값을 가져오기는 하는데 그 값과 $time_array[1] 이곳의 배열과 연결시킬수가 없더라구요,,
불가능한 연결인가요?
db와 본문의 연결,,, 설명이 좀 어렵네용,,
ㅠㅠ 조언부탁드립니다.
!-->!-->답변 3
코드가 이해가 안가지만 현재 작성하신 코드에 주석을 달아봅니다.
<?php
echo $currdate = $_GET["currdate"]; // get parameter 로 currdate 를 받아와서 $currdate에 대입합니다.$query = "select * from g5_write_counsel2 WHERE wr_1='".$currdate."' ";
$result = sql_query($query);
$mhp = sql_fetch_array($result);// g5_write_counsel2 테이블에 wr_1값이 넘겨받은 currdate와 동일하면 // 레코드를 불러와 1개의 Row 만추출후
$bb = $mhp['wr_3'];//위에서 불러온 1개Row의 wr_3값을 $bb에 집어넣습니다.
$time_array[1] = array("10:30","11:00","11:30","12:00","12:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30");
//$time_array[1] 의 위치에// array로 2차원배열을 시간값으로 셋팅합니다.
//foreach로 time_array를 찾아서 $key와 $value를 대입하는데//$day_type은 어디서 온값일까요?
foreach($time_array[$day_type] as $k=>$v)
{
//위에서 대입했던 $bb의 값이 1 또는 2일때
// $reservation_yn = 'N'이고
// 그외에는 reservation_yn 에 무엇이 들어갈까요?
if ($bb == "1" || $bb == "2"){
$reservation_yn = "N";
}
?>
<li><?php echo $reservation_yn=="Y"?"(예약가능)":"(예약불가)"?></li>
<?php
}
?>
$currdate 를 예를 들어 '2017-10-17'이라고 했을 때,
g5_write_counsel2 에서 wr_1 = '2017-10-17' 의 데이터틀 가져옵니다.
wr_3 에는 '1' 또는 '2' 값이 있는데, '1' 인 경우에는 "예약가능", '2'는 "예약불가" 의 의미입니다.
wr_3 은 해당 날짜에 대한 '1'값 또는 '2' 값이기 때문에, 시간부분과 매칭되지는 않습니다.
이 부분에 대한 설명이 더 있어야 될 듯 합니다.
예제 코드입니다.
해당 날짜값에 대한 시간별 wr_3 설정값 유무를 모두 읽어 별도의 배열에 저장한 다음
매칭시키는 방법입니다.
시간이 좀 걸렸습니다.,
해당 사이트에서의 코딩이 아닌, 머릿속에서만 한 코딩이라..
실제 적용시에는 문제가 많을 수 있습니다.
급하게 한 코딩이라, 더 연구하시면 더 나은 코딩이 나올 수 있습니다.
하나씩 이해하신 후, 디버깅 하시면서 적용하시면 될 것 같습니다.
$currdate = $_GET["currdate"];
$query = "
select *
from g5_write_counsel2
WHERE wr_1 = '{$currdate}'
order by wr_2
";
$result = sql_query($query);
$time_array[1] = array("10:30","11:00","11:30","12:00","12:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30");
while ($row = sql_fetch_array($result)) {
$r_yn_time[$row['wr_2']] = $row['wr_3'];
}
foreach($time_array[$day_type] as $k=>$v) {
if (array_key_exists($v, $r_yn_time)) {
if ($r_yn_time[$v] == "1" || $r_yn_time[$v] == "2") {
$reservation_yn = "N";
echo "<li>예약불가</li>";
} else {
echo "<li>예약가능</li>";
}
}
}
답변을 작성하시기 전에 로그인 해주세요.