COUNT() 함수 관련 문의 채택완료
주문서를 엑셀로 출력하는 기능을 사용하고 있습니다.
선택한 주문건에 대해 엑셀로 출력을 하려고 하는데요.
PHP Warning: count(): Parameter must be an array or an object that implements Countable in
이런 오류를 내고 있어서 확인해보니 카운트로는 어레이 이거나 셀 수 있는 변수여야 한다는데
특별한 문제가 없어 보이는데도 오류가 나더라구요.
for ($i=0; $i<count($_POST['chk']); $i++)
{
// 실제 번호를 넘김
$k = $_POST['chk'][$i];</p>
<p> </p>
<p>
이런 코드가 있는데
</p>
<p>if($_POST['chk'] && count($_POST['chk']) > 0) {
$cnt = count($_POST['chk']);
} else {
$cnt = 0;
}</p>
<p>for ($i=0; $i<$cnt; $i++)
{
// 실제 번호를 넘김
$k = $_POST['chk'][$i];</p>
<p>
이렇게 했더니 주문서가 하나씩만 다운이 되고 있습니다.
혹시 좋은 처리 방법이 있을까요?
답변 2개
일단 처리 페이지에서 chk 값이 제대로 넘어오는지
print_r($_POST); 해보세요
chk값이 배열로 넘어오는지 체크해보세요.
조건문에 is_array 를 이용해 보세요.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
문제가 두가지네요
첫번째는 항상 주문서가 하나만 다운로드 된다.
두번째는 $_POST['chk'] 이 null 이어서 에러가 나는경우
보통 이런경우는 첫번째만 해결하면 두번째는 자동으로 해결될겁니다.
고로 count 함수에러는 신경쓰지 마시고 주문서가 두개 이상 다운로드 되게 해보세요
답변에 대한 댓글 1개
그냥 워닝을 없애보고 싶은데 잘 안되서 문의 드려봤습니다. ^^
답변 달아주셔서 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
[code]
if(is_array($_POST['chk']) && count($_POST['chk']) > 0) {
[/code]
로 해도 한개씩만 다운이 되더라구요. ^^
일단 실제 서비스하고 있는 상태라서 내일 아침에 다시 확인해봐야 할 것 같네요.
찍어보니 제대로 array 로 표시도 잘 되고 잘 넘어오고 있습니다.
제 예상에는 $_POST['chk']의 값이 0이 어서 그런게 아닌가 추측하고 있습니다.
답변 달아주셔서 감사합니다.