2011-08-16 2 views
0

위해 공급 잘못된 인수는, phpMyAdmin에의 출력은 정확하지만 난 점점 오전 오류 :PHP 테이블 경고 : 나는 아래의 쿼리를 기반으로 출력에 5 열 테이블을 원하는 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

그럴 필요는 없습니다 - 어디에서 sessionWho.user_id = $ id ");? – udjamaflip

관련 문제