foreach 질문입니다..

foreach 질문입니다..

QA

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
	}
?>	

10번째 줄 day_type는 날짜를 선택할때 포함됩니다. 1~6까지 숫자로 더해집니다.
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';
라고 하면 정상작동할겁니다.

$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>";            
    }
  }        
}
답변을 작성하시기 전에 로그인 해주세요.
전체 728
QA 내용 검색
filter #sql ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT