2011-08-11 148 views
0

我已經寫了下面的代碼,但不知何故頭不匹配呈現表中生成的列,,有人可以給我一個提示如何改善它?從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 #__jquarks_users_profiles AS users_profiles 
       LEFT JOIN #__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 #__jquarks_quizzes_answersessions 
       WHERE quizsession_id = quizSession.id 
       AND status <> -1) AS score,' . 
     ' (SELECT count(distinct(question_id)) 
       FROM #__jquarks_quizzes_answersessions 
       WHERE quizsession_id = quizSession.id) AS maxScore,' . 

      ' (SELECT count(id) 
       FROM #__jquarks_quizzes_answersessions 
       WHERE status=-1 
       AND quizsession_id = quizSession.id) AS evaluate,' . 
' quizSession.finished_on,sessionWho.email' .  
     ' FROM #__jquarks_quizsession AS quizSession' . 
     ' LEFT JOIN #__jquarks_users_quizzes AS users_quizzes ON users_quizzes.id = quizSession.affected_id' . 
     ' LEFT JOIN #__jquarks_quizzes AS qui ON users_quizzes.quiz_id = qui.id' . 
     ' LEFT JOIN #__jquarks_quizzes_answersessions AS quizSessAns ON quizSessAns.quizsession_id = quizSession.id' . 
     ' LEFT JOIN #__jquarks_sessionwho AS sessionWho ON sessionWho.session_id = quizSession.id' . 
     ' LEFT JOIN #__jquarks_users_profiles AS users_profiles ON users_profiles.user_id = sessionWho.user_id' . 
' LEFT JOIN #__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 "; 

echo '<table style="' . $tableStyle . '" cellpadding="7" cellspacing="7">'; 
echo "<tr> <th> Quiz Title </th><th> 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

研究使用[HEREDOCs](http://php.net/heredoc)來構建這些SQL查詢。它將爲您節省重複字符串連接的麻煩,並允許您使用縮進「很好」地寫出它。 –

+1

不知道它是否對某些東西有影響,但是在這個字符串中「echo」';」你有style =「(雙引號)而不是style =''(兩個單引號)。即這是生成無效的HTML(我確信瀏覽器將修復它) – llamerr

+0

哇,什麼是查詢你有4個子查詢和6個連接,你能告訴我這是什麼性能?只是想知道 – WooDzu

回答

2

您有5 <th>標題,但從表中選擇6列。顯式打印您想要的表格中的字段(您應該),或更改查詢以僅選擇您想要的5。

+0

我需要的6個領域,你可以告訴我如何可以增加我的表到6,並可能分開標題來匹配列,,,? – Tony77

+0

在你想要的表的第一行寫'第六字段'。標題將按您在HTML中編寫的順序顯示。 –

+0

標題現在沒有與輸出內聯,如何可以給生成的HTML給一個靜態測量 – Tony77