$EXCEL_FILE = " <table border='1'> <tr> <td>이름</td> <td>지점</td> <td>상담건수</td> <td>성공건수</td> <td>성공률</td> </tr> "; $conn = mysqli_connect("localhost","**","**","**"); if (mysqli_connect_error($conn)){ echo "페이지에 접속할 수 없습니다.<br><br>"; } mysqli_query($conn, "set names utf8"); $sql = "select * FROM placecode"; $result = mysqli_query($conn, $sql); while ($row= mysqli_fetch_array($result)){ $name = $row['name']; $place = $row['place']; $EXCEL_FILE .= " <tr> <td>".$name."</td> "; $conn2 = mysqli_connect("**","**","**","**"); if (mysqli_connect_error($conn)){ echo "페이지에 접속할 수 없습니다.<br><br>"; } mysqli_query($conn2, "set names utf8"); $sql4 = "SELECT place, item, success, COUNT(*) AS cnt FROM report WHERE item IN ('$menusearch') AND name='$name' AND $date2 GROUP BY place, item, success;"; $result4 = mysqli_query($conn2, $sql4) ; $bigitem = 0; while ($row4= mysqli_fetch_array($result4)){ $cnt = $row4['cnt']; $bigitem = $bigitem+$cnt;} mysqli_query($conn2, "set names utf8"); $sql5 = "SELECT place, item, success, COUNT(*) AS cnt FROM report WHERE success IN ('O') AND item IN ('$menusearch') AND $date2 AND name='$name' GROUP BY place, item, success;"; $result5 = mysqli_query($conn2, $sql5); $bigitemok = 0; while ($row5= mysqli_fetch_array($result5)){ $cnt = $row5['cnt']; $bigitemok = $bigitemok+$cnt; } if($bigitemok > 0){ $bigavg = round(($bigitemok/$bigitem)*100, 1); }else($bigavg = 0); $EXCEL_FILE .= " <td>".$place."</td> <td>".$bigitem."</td> <td>".$bigitemok."</td> <td>".$bigavg."</td> </tr> "; } $EXCEL_FILE .= "</table>";
A테이블에 상담원들의 이름과 소속 리스트가있습니다.
while로 이름명단을 쭉 나열해서 그안에 상담건수와 성공건수를 출력하여 엑셀저장을 하려고합니다..
그런데 실행시 39초 후에 다운로드가 되네요.
저런식으로 while 안에 while 반복문을 사용하고 sql 검색범위가 넓은? 경우에는 어쩔수없는걸까요??
sql , php에 대한 개념이 부족하다보니 코드자체도 엉망이고.. 민망하네요
더욱 효과적으로 sql을 불러올 방법은 없을까요??
읽어주셔서 감사드리며, 활기찬 한주 보내세요 !
엑셀라이브러리 넣는것 자체가 원래 좀 시간이 걸리니.. 필요하다면 http으로 요청하지말고 터미널에서 PHP파일을 실행하도록 하여 안전하게 데이터를 옮기시는게 낫습니다.