2012-05-30 72 views
3

我試圖在我們的系統上顯示徽章,徽章是獎勵/成就給用戶。他們在他們的個人資料中顯示,圖像/徽章顯示的作品是有效的,但徽章原因沒有。徽章原因錯誤

我試圖做這樣

<? 
    $badgesql = mysql_query("select * from usr_badge where user = '$user'"); 
    $user2 = mysql_query("select * from usr_users where username = '$user'"); 
    $usr2 = mysql_fetch_array($user2); 
    $vipsql = mysql_query("select * from usr_vip where userid = '$usr2[id]'"); 
    $vipcheck = mysql_num_rows($vipsql); 
    $badgecheck = mysql_num_rows($badgesql); 
    $checkit = $badgecheck + $vipcheck; 
    if($checkit==0) 
    echo("This user does not have any badges"); 
    else 
    if($badgecheck!=0) 
    { 
    while($badge = mysql_fetch_array($badgesql)) 
    { 
    echo('<a onclick="TINY.box.show({html:'Reason: '.$badge[reason].',animate:false,close:false,mask:false,boxid:'success',autohide:2,top:-14,left:-17})"><img src="'.$badge[badge].'" </a>'); 
    } 
    } 
    //Display VIP Badges 
    if($vipcheck!=0) 
    { 
    $vipbadge = mysql_fetch_array($vipsql); 
    $vip1 = mysql_query("select * from usr_vipdb where id = '$vipbadge[vipid]'"); 
    $vip2 = mysql_fetch_array($vip1); 
     echo('<img src="'.$vip2[url].'" alt="This user is a VIP!" />'); 
    } 
    ?> 

但上面的代碼不起作用。它給了我一個錯誤,當我嘗試查看網頁「解析錯誤:行167語法錯誤,意想不到的T_STRING在/ home/* * /public_html/memb.php」

是否有人可以告訴我我做錯了什麼或指向正確的方向?提前

感謝

+2

因此,這行是第167? –

+2

我也猜測你的開啓和關閉引號不對齊。簡單地通過代碼塊中的語法高亮來判斷 –

+0

還發現了一個打開的'img'標記,我剛剛在我的回答中更正了 –

回答

2

那長線開始echo可能出現錯誤 - 語法高亮這裏與它壞了,這表明你可能已經不匹配了報價或類似的東西。 (除了打破它做出自己的行每個小節您不會錯過接錯。)

這是你當前的代碼壞,因爲我相信解釋器將對其進行分析:

echo('<a onclick="TINY.box.show({html:' 
Reason: '.$badge[reason].' 
,animate:false,close:false,mask:false,boxid: 
'success' 
,autohide:2,top:-14,left:-17}) 
"><img src=" 
'.$badge[badge].' 
" </a>'); 

注該行以裸詞Reason:開頭。既然這不是你得到的錯誤,也許我猜錯了,但毫無疑問,你現在的代碼太混亂了。

我希望你消毒的輸入($user$usr2[id])和代碼,這裏沒有證明,以防止cross-site scripting vulnerabilitiesSQL injection vulnerabilities存儲的數據($badge[reason])。

+0

@John:感謝您的修正! – sarnold

+0

我試過這個,它仍然給我錯誤。 – NickkN

+0

@HilraJannar:它不打算作爲一個修復。這只是想指出你的字符串是非常複雜的。凱爾在他的回答中得到了最終解決方案。 – sarnold

1

試試這個(固定的開/關的報價...我認爲)

<? 
    $badgesql = mysql_query("select * from usr_badge where user = '$user'"); 
    $user2 = mysql_query("select * from usr_users where username = '$user'"); 
    $usr2 = mysql_fetch_array($user2); 
    $vipsql = mysql_query("select * from usr_vip where userid = '$usr2[id]'"); 
    $vipcheck = mysql_num_rows($vipsql); 
    $badgecheck = mysql_num_rows($badgesql); 
    $checkit = $badgecheck + $vipcheck; 
    if($checkit==0) { 
     echo("This user does not have any badges"); 

    } else { 
     if($badgecheck!=0) 
     { 
      while($badge = mysql_fetch_array($badgesql)) 
      { 
       echo('<a onclick="TINY.box.show({html: "Reason: '.$badge[reason].'",animate:false,close:false,mask:false,boxid:"success",autohide:2,top:-14,left:-17})"><img src="'.$badge[badge].'" /></a>'); 
      } 
     } 
     //Display VIP Badges 
     if($vipcheck!=0) 
     { 
      $vipbadge = mysql_fetch_array($vipsql); 
      $vip1 = mysql_query("select * from usr_vipdb where id = '$vipbadge[vipid]'"); 
      $vip2 = mysql_fetch_array($vip1); 
      echo('<img src="'.$vip2[url].'" alt="This user is a VIP!" />'); 
     } 
    } 
?> 
+0

至少在這裏突出顯示是固定的。 :) – sarnold

+0

@sarnold我在一段時間內沒有完成PHP ......這對於heredoc來說會是一個糟糕的地方嗎?還是不是真的? –

+0

我試過這個,錯誤消失了,可以查看徽章,但是當我點擊圖片彈出原因時,它不會。 – NickkN