2016-07-09 2 views
0
<img id="post_like_btn_<?php echo $post_info['id']; ?>" class="post_like_btn" 
<?php $like_result = data_like($dbc, $user_info['id']); 
    while($like_info = mysqli_fetch_assoc($like_result)){ 
    if($post_info['id'] == $like_info['post_id']) 
     { echo 'src="img/like/like_active.png"'; 
     } else{echo 'src="img/like/like_dark.png"'}?>> 

좋아요 테이블에 게시물 ID가있을 때 버튼에 아이콘 이미지를 변경하려면이 코드를 사용하지만 테이블에 값이 없으면 else 문이 작동하지 않으며 이미지가 표시되지 않습니다. 나는 '& &! == null'을 조건에 추가하려고 시도했지만 작동하지 않습니다.if 문 PHP 및 HTML의 문 오류

+0

조건이 거짓 일 때 'else'부분을 표시하겠습니까? –

답변

0

사용자의 likes 테이블에 데이터가없는 경우 while 루프는 반복 할 항목이 없습니다. 즉, if 조건은 실제로 실행되지 않습니다.

또 다른 문제는 주목할만한 가치입니다. 모든 게시물의 모든 결과에 대해 while 루프가 반복됩니다. 사용자가 다른 게시물 (표시된 태그 외에)을 좋아한다면 else 절이 여러 번 실행되어 img 태그에 복수의 src 속성 (대부분 또는 모두가 like_dark.png을 나타냄)을 제공합니다.

당신이해야 할 일은 표시되는 게시물의 ID에 대한 사용자의 좋아하는 것에 대해서만 데이터베이스 쿼리를 검색하는 것입니다. 그렇게하면 while 루프가 전혀 필요하지 않습니다. 결과가 있는지 확인하기 만하면됩니다. 그렇다면 like_active.png을 출력하고 그렇지 않으면 like_dark.png을 출력하십시오.

어떤 이유로 쿼리를 수정할 수 없거나 페이지에 여러 개의 게시물을 표시 할 때 여러 개의 쿼리를 피하려면 루프가 각 레코드를 거치고 불 변수를 설정해야합니다 현재 게시물 ID와 일치하는 것으로 보이는 경우 true으로 변경하십시오. while 루프 이후에 if 조건의 부울 변수를 검사하고 src 특성 만 출력하십시오. 이렇게하면 얼마나 많은 레코드를 반복했는지 상관없이 하나의 src 속성 만 출력 할 수 있습니다.

+0

감사합니다. 너는 대단히, 지금 일하고있다 :) –

0

는 while 루프에 브래킷을 닫는없는 다음부터도

while($like_info = mysqli_fetch_assoc($like_result)){ 
    if($post_info['id'] == $like_info['post_id']) 
     { echo ' src="img/like/like_active.png"';} 
    else{echo ' src="img/like/like_dark.png"';} 
}?>> 

하는 것이 일반적입니다 : SRC는 = "IMG가// 추천하기 추천"

당신이 밖으로 그것을 제거 할 수있는 경우 문과 active와 dark.png 상태 사이를 전환하면됩니다.

+0

누락 된 괄호를 추가 할 때 아무 일도 일어나지 않습니다. 배열에 정보가있을 때처럼 잘 작동하기 때문에 조건과 관련이 있다고 생각합니다.하지만 테이블이 비어있을 때 비교할 항목이 없으면 아무 것도 반환하지 않습니다. –