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개
예제 코드입니다.
해당 날짜값에 대한 시간별 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>";
}
}
}
댓글을 작성하려면 로그인이 필요합니다.
$currdate 를 예를 들어 '2017-10-17'이라고 했을 때,
g5_write_counsel2 에서 wr_1 = '2017-10-17' 의 데이터틀 가져옵니다.
wr_3 에는 '1' 또는 '2' 값이 있는데, '1' 인 경우에는 "예약가능", '2'는 "예약불가" 의 의미입니다.
wr_3 은 해당 날짜에 대한 '1'값 또는 '2' 값이기 때문에, 시간부분과 매칭되지는 않습니다.
이 부분에 대한 설명이 더 있어야 될 듯 합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
코드가 이해가 안가지만 현재 작성하신 코드에 주석을 달아봅니다.
<?phpecho $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
}
?>
답변에 대한 댓글 2개
ex)201710261 이런식으로 날짜의 끝에 붙습니다.
15번째줄에 대한 답변은 y로 됩니다.
프로세스는 이러합니다.
달력에서 날짜를 선택하면 오른쪽에 해당 날짜에 시간(예약가능)이 표시됩니다.
시간을 선택하고 완료하면
wr_1에는 날짜가 wr_2에는 시간이 wr_3에는 예약 여부가 선택됩니다.(1,2,3)
13번째 줄처럼 1 또는 2가 포함된다면 예약 불가가 되었으면 하는 바입니다.
g5_write_counsel2테이블에서 wr_3와 wr_2에 값이 있다면 $time_array의 배열들과 비교해서
예약 불가가 되려고 하는건데
db와 본문의 배열이 연결이 되는지가 ㅠㅠ 궁금합니다.
// 그외에는 reservation_yn 에 무엇이 들어갈까요?
라고 적은건..
그자리에 값이 필요해서 적은겁니다.
제가 주석을 넣으자리에
$reservation_yn = 'Y';
라고 하면 정상작동할겁니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그럼 매칭이 될까요? 아무리 머리를 굴려도 답이안나와서용..
each이거로 매칭해야할까용? ㅠㅠ