for문 좀 봐주세요 ㅠㅠ

for문 좀 봐주세요 ㅠㅠ

QA

for문 좀 봐주세요 ㅠㅠ

본문

예약상담 프로그램을 만들고 있습니다.
날짜 선택하고 해당 날짜를 SQL문으로 검색하고, 시간을 불러와서
이미 예약된 시간은 안보이게 하고 싶습니다.
문제는 한 날짜에 두개 이상 예약이 잡혀 있는 경우, 제일 마지막 시간만 처리하는거 같습니다 ㅠㅠ
밑에 소스도 11일 선택하면 09, 11시는 안보여야하는데,
11시만 안보여지네요.
뭐가 문제일까요 ㅠㅠ


<DB>
id          dday          dtime
 1      2016-01-11        09
 2      2016-01-11        11


<php>
<?
$SQL2 = "select * from table where dday = '$addtime' order by id asc";
$Rs2 = mysql_db_query($db_name, $SQL2, $DbCon);
$TotalCount2 = mysql_num_rows($Rs2);
    for($z=0;$z<$TotalCount2;$z++) {
    $dtime = mysql_result($Rs2, $z, "dtime");
}
?>

<li <? if ($dtime == "09") { ?>  style="display: none;"  <? } ?>>
    <ul>
    <li>09:00</li><li>예약하기</li>
    </ul>
</li>


<li <? if ($dtime == "10") { ?>  style="display: none;"  <? } ?>>
    <ul>
    <li>10:00</li><li>예약하기</li>
    </ul>
</li>

<li <? if ($dtime == "11") { ?>  style="display: none;"  <? } ?>>
    <ul>
    <li>11:00</li><li>예약하기</li>
    </ul>
</li>

이 질문에 댓글 쓰기 :

답변 2

for 문 안으로 넣어야 될것 같은데요

<? 
$SQL2 = "select * from table where dday = '$addtime' order by id asc"; 
$Rs2 = mysql_db_query($db_name, $SQL2, $DbCon); 
$TotalCount2 = mysql_num_rows($Rs2); 
    for($z=0;$z<$TotalCount2;$z++) { 
    $dtime = mysql_result($Rs2, $z, "dtime");

    if ($dtime == "09" || $dtime=="10" || $dtime=="11"){

$style= "style='display:none;'";

?>

<li > 
    <ul> 
    <li><?=$dtime?>:00</li><li>예약하기</li> 

    </ul> 
</li>  

<?

    }
}
?> 

 

db구조가 어떻게 되어있는지는 잘 모르겠어서 원하시는 쿼리를 써드리긴 힘들지만.. 

위의 소스로는 $dtime = mysql_result($Rs2, $z, "dtime");

이부분 $dtime 부분이 배열로 잡혀있지않아 for 문이 돌때마다 리셋되네요.

 

 

<? 
$SQL2 = "select * from table where dday = '$addtime' order by id asc"; 
$Rs2 = mysql_db_query($db_name, $SQL2, $DbCon); 
$TotalCount2 = mysql_num_rows($Rs2); 
    for($z=0;$z<$TotalCount2;$z++) { 
    $is_time= mysql_result($Rs2, $z, "dtime");

$dtime[$is_time]=$is_time;

}
?> 

<li <? if ($dtime['09'] == "09") { ?>  style="display: none;"  <? } ?>> 
    <ul> 
    <li>09:00</li><li>예약하기</li> 
    </ul> 
</li> 


<li <? if ($dtime['10'] == "10") { ?>  style="display: none;"  <? } ?>> 
    <ul> 
    <li>10:00</li><li>예약하기</li> 
    </ul> 
</li> 

<li <? if ($dtime['11'] == "11") { ?>  style="display: none;"  <? } ?>> 
    <ul> 
    <li>11:00</li><li>예약하기</li> 
    </ul> 
</li> 

 

이렇게 하시면 될듯하지만. 솔직히 말씀드리면

엄청 짧은길을 멀리 돌아가는 코딩을 하셨습니다.


예약시간이 근무가능시간에 딱 정해져있다면 for 괄호안에서 한번에 처리하거나

DB에서 not like 등으로 셀렉트하여 while 을 돌리는게 맞습니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 78
QA 내용 검색
filter #for ×

회원로그인

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