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 을 돌리는게 맞습니다.