2011-11-27 3 views
0

위해 나는 쿼리가 $userid는 조건 내부 경우는 루프

$loginid = 2; 
$sql = mysql_query('SELECT cc.name, c.fullname, c.userid FROM mdl_course c, mdl_coursecat cc WHERE c.course = cc.id'); 
echo '<table>'; 
while($row = mysql_fetch_array($sql)) 
{ 
    $userid = $row['userid']; 
    echo '<tr><td>'; 
    if($userid == $loginid) 
    { 
    echo '<a href="">go to course</a>'; 
    } 
    else 
    { 
    echo 'you dont have permissions to go'; 
    } 
    echo '</td></tr>'; 
} 
echo '</table>';  

내 문제를 확인해야 함은 else 문 내부 않을거야 것입니다. 누구든지 그 문제가 무엇이겠습니까?

+0

오류보고를 사용합니다. 따옴표도 조금 지저분합니다 ... –

+0

빠른보기에서 2 개의 문제점을 봅니다 :'else' 블록에서 잘못된 인용 부호를 사용하고 mysql_fetch_object를 사용하지 않고 직접 mysql 결과 자원을 반복합니다 (할 수는 없습니다). 구문 강조 표시가있는 편집기를 사용한 경우 견적 문제는 쉽게 발견 될 수 있습니다. – ThiefMaster

+0

코드가 정확하다고 생각합니다. 왜 내 else 문이 작동하지 않습니까? 빈을 표시합니다. – user1067018

답변

2

처음 큰 문제는 $sql을 배열로 사용하지만 mysql_query()은 리소스를 반환한다는 것입니다. 필요한 것은 mysql_fetch_assoc()입니다. 어쨌든 $ss은 배열의 요소가 될 것이므로 배열의 유형 (객체가 아니라)에 따라 사용해야합니다. 두 번째는 당신이 else에 문장 안에 작은 따옴표를 탈출하지 않은 것입니다

while ($ss = mysql_fetch_assoc($sql)) 
{ 
    $userid = $ss['userid']; 

    // Do other stuff 
} 

: 따라서, 당신은 뭔가를해야한다.

+0

제안 이유를 알려주시겠습니까? wotking하지 않는다면 빈 td를 표시합니다 – user1067018

+0

@ user1067018 IF 앞에 var_dump ($ userid)를 입력하면 무엇을 볼 수 있습니까? ? –

+0

사용자 ID가 올바르게 표시됩니다 (예 : 3,6,8 등). – user1067018

1

foreach($sql as $ss)while($ss = mysql_fetch_object($sql))으로 바꿉니다. 그러면 루프가 실제로 작동합니다. mysql 결과 세트를 직접 반복 할 수는 없지만 행을 검색하기 위해 mysql_fetch_* 함수 중 하나를 사용해야한다.

구문 오류를 제거하려면 echo 'you don't have permissions to go';echo 'you don\'t have permissions to go'; 또는 echo "you don't have permissions to go";으로 바꿉니다. 여기

+0

실제로 그게 문제가 아니예요. 출력이 올바르게 출력 될 수 있고, 그 밖에는 작동하지 않습니다. (스택 오버플로의 타이핑 실수) – user1067018

0

: echo 'you don\'t have permissions to go'; 그것은 문자열의 끝으로 don't의 아포스트로피보고와 echo 'you don't have permissions to go'; 가 교체

+0

모든 것을 고치고, 첫 번째 행만 표시하고 나머지 행은 비어 있습니다. 누구든지 나를 도울 수 있었나요? – user1067018

1

나는 문제가 여기에있다라고 말하고 싶지만 : mysql_fetch_array()

while($row = $mysql_fetch_array($sql)) 

함수가 아닌 것입니다 변하기 쉬운.