2011-08-16 137 views
0

提供我要輸出一個5列的表基於下面的查詢參數無效,在phpMyAdmin的輸出是正確的,但我得到的錯誤:PHP表警告:爲的foreach

提供的foreach

無效參數()上PHP頁面。任何幫助將不勝感激。由於

代碼:

<?php 

$database =& JFactory::getDBO(); 

//Declare Variables 
$user = JFactory::getUser(); 
$id = $user->get('id'); 
$name = $user->get('name'); 

// Display quizzes 
echo "</br>"; 
echo "Quizzes History for : " ; 
echo "<b>"; 
echo $name; 
echo "</b>"; 


echo "</br>"; 
echo "</br>"; 

$database->setQuery(" SELECT distinct qui.title AS name, 

(SELECT GROUP_CONCAT(profiles.title) 

    FROM jos_jquarks_users_profiles AS users_profiles  
    LEFT JOIN jos_jquarks_profiles AS profiles ON users_profiles.profile_id = profiles.id  
    WHERE users_profiles.user_id = sessionWho.user_id) AS profile,  
    (SELECT sum(score) 
FROM jos_jquarks_quizzes_answersessions  

    WHERE quizsession_id = quizSession.id    AND status <> -1) AS score, 

(SELECT count(distinct question_id)    FROM jos_jquarks_quizzes_answersessions    
    WHERE quizsession_id = quizSession.id) AS maxScore,    
DATE_FORMAT(quizSession.finished_on,'%M %d, %Y') AS FinishedOn 
FROM jos_jquarks_quizsession AS quizSession 

LEFT JOIN jos_jquarks_users_quizzes AS users_quizzes ON users_quizzes.id = quizSession.affected_id  
LEFT JOIN jos_jquarks_quizzes AS qui ON users_quizzes.quiz_id = qui.id  
LEFT JOIN jos_jquarks_quizzes_answersessions AS quizSessAns ON quizSessAns.quizsession_id = quizSession.id 
LEFT JOIN jos_jquarks_sessionwho AS sessionWho ON sessionWho.session_id = quizSession.id   
LEFT JOIN jos_jquarks_users_profiles AS users_profiles ON users_profiles.user_id = sessionWho.user_id 
LEFT JOIN jos_jquarks_profiles AS profiles ON profiles.id = users_profiles.profile_id 
WHERE sessionWho.user_id = ' .$id ") ; 


if (!$database->query()) { //write data and if error occurs alert 
    echo "<script> alert('".$database->getErrorMsg()."'); </script>"; 
} 

//var_dump($database); 
$tableStyle = "padding: 5px;border:1px"; 
$tdStyle = "padding:5px "; 
$thStyle = "padding:7px "; 

echo '<table style="' . $tableStyle . '" cellpadding="7" cellspacing="7">'; 
echo "<tr> <th style=align:center>Quiz Title </th><th style=align:center> Score </th><th>Maximum Score </th><th> Unanswered </th> <th>Finished On </th></tr>"; 

$row = $database->loadRowList(); 
foreach($row as $valuearray) 
{ 
echo '<tr style=" align="center">'; 
foreach($valuearray as $field) 
{ 

echo "<td>$field</td>"; 
} 
echo "</tr>"; 
} 
echo "</table>"; 

?> 
+0

這表明,查詢失敗或產生的結果,你沒有想到的。嘗試在加載結果後添加'vardump($ row);'以確保你看到你期望的結果。 –

+0

作爲一個額外的提示 - 有編寫(X)HTML的規則,你不能以你想要的方式寫它;儘管大多數使用者都非常寬容。例如它是'
'或'
',而不是'
'。 – wonk0

回答

1

這通常意味着有在查詢一個錯誤,它不返回任何結果,所以沒有對象通過的foreach運行。調試這個最簡單的方法是從joomla管理員面板打開調試模式(它在全局設置 - >系統中),然後進入頁面,這個錯誤被拋出,並且它應該顯示SQL錯誤。

不管怎樣,看着查詢唯一的錯誤我能找到(假設所有字段/表是正確的)是,在你到底有:

WHERE sessionWho.user_id = ' .$id ") ; 

這應該是:

WHERE sessionWho.user_id = $id ") ; 

WHERE sessionWho.user_id = ". intval($id) ) ; 
+1

不應該是 - WHERE sessionWho.user_id = $ id「);? – udjamaflip