채택완료

sql문 질문

안녕하세요..

sql문 질문 드립니다.

for문을 이용하여 1~20까지 출력했습니다.

Copy
for ($i=1; $i<=20; $i++) {
    echo $i;
}

988758466_1512121001.6657.jpg

그런데 문제는 

sql문을써서 

988758466_1512121106.8716.jpg

이렇게 만들고 싶은데

먼저

select * from $tender_table where wr_id = '$wr_id' order by td_tender_point limit $from_record, $rows

이렇게 select를 해서 

td_tender_point라는 필드의 값을 가지고  저렇게 빨갛게 효과를 주고 싶은데 어떻게 해야되나요?ㅠ

for문으로

1

2

3

4 

출력하다가

td_tender_point에 값이 만약에 2이면 2부분이 빨갛게 변하는...

988758466_1512121345.7183.png

제가한거는...

Copy
<?php
$qry = sql_query(" select * from $tender_table where wr_id = '$wr_id' order by td_tender_point ");
while ($row = sql_fetch_array($qry)) {

for ($i=1; $i<=100; $i++) {
  $tmp_class=($i==$row[td_tender_point])?"num":"";
    echo "<li class='$tmp_class'>$i</li>".PHP_EOL;
}
} ?>

이런데,

이러면 만약에 td_tender_point가 1,2,3,5,7  총5개가 있다 하면

class가 정상적으로 적용이 되긴 하는데.

1~100까지 5번 출력되면서

첫번재 1~100에는 1에 class적용

두번째 1~100에는 2에 class 적용

세번째 1~100에는 3에 class 적용

네번째 1~100에는 5에 class 적용

다섯번째 1~100에는 7에 class 적용

이렇게 되있네요 ㅠ

|

답변 1개 / 댓글 2개

채택된 답변
+20 포인트

이렇게 해보세요

Copy
<?php

$qry = sql_query(" select * from $tender_table where wr_id = '$wr_id' order by td_tender_point ");

 

$td_tender_points = array();

while ($row = sql_fetch_array($qry)) {

  $td_tender_points[$row['td_tender_point']] =  true;

}

while ($row = sql_fetch_array($qry)) {

for ($i=1; $i<=100; $i++) {  

  $tmp_class=($td_tender_point[$i])?"num":"";    

  echo "<li class='$tmp_class'>$i</li>".PHP_EOL;

}

}

 

 

?>

답변에 대한 댓글 2개

08번째랑 13 번째 줄은 지워야 되겠네요 ^^
<?php
$qry = sql_query(" select * from $tender_table where wr_id = '$wr_id' order by td_tender_point ");

$td_tender_points = array();
while ($row = sql_fetch_array($qry)) {
$td_tender_points[$row['td_tender_point']] = true;
}
for ($i=1; $i<=100; $i++) {
if($td_tender_points[$i]){ $tmp_class="dd"; }else{ $tmp_class="yy";}
echo "<li class='$tmp_class'>$i</li>".PHP_EOL;
}
?>

요렇게 해결했네요 ㅎ

답변을 작성하려면 로그인이 필요합니다.