2011-08-16 61 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