2012-01-11 15 views
0

私はPHPを使用しています。私はいくつかのデータをmysqlデータベースからxlsファイルにエクスポートしたい。PHP - xlsファイル(mysqlからエクスポート)にデータを正しく表示できません。

iはMySQLデータベースを持っているテーブル回答:

表回答:

Id Registration_id Question_id Answer 
1  Reg01     1   John 
2  Reg01     2   Smith 
3  Reg01     3   [email protected] 
4  Reg02     1   Rachel 
5  Reg02     2   Smith 
6  Reg02     3   [email protected] 

iは、以下のコードから得られる結果は、私が期待された結果ではありません。私はこの結果をしたい...

名前SecondNameメール ジョン・スミス[email protected]レイチェル・スミス[email protected]

をヘッダが正しく表示されますが、答えは同じ行に表示されます。

Name SecondName Email 
John Smith  [email protected] 
Rachel Smith  [email protected] 

どうすればいいですか?

ありがとうございました。

$conn = mysql_connect("localhost","form","pass"); 
$db = mysql_select_db("form",$conn); 


$query = "SELECT DISTINCT wp_events_question.question as qst, wp_events_answer.answer as ans 
FROM wp_events_question, wp_events_answer 
WHERE wp_events_question.id = wp_events_answer.question_id"; 

$query2 = "SELECT wp_events_question.question as qst, wp_events_answer.answer as ans 
FROM wp_events_question, wp_events_answer 
WHERE wp_events_question.id = wp_events_answer.question_id and wp_events_detail.id = wp_events_attendee.event_id AND wp_events_attendee.id = wp_events_answer.attendee_id"; 

$result = mysql_query($query) or die(mysql_error()); //Headers 

$result2 = mysql_query($query2) or die(mysql_error()); //Answers 

    //Headers 
      $tbl= " <table border='1'>"; 

      $tbl= $tbl . "<tr height='50px'>"; 

      while($row = mysql_fetch_array($result)) 
      {  
       $tbl= $tbl . "<td WIDTH='50px' align='center'>".$row['qst']."</td>";     
      } 



    //Answers  
       $tbl = $tbl . "</tr>"; 
       $tbl = $tbl . "<tr>"; 
      while($row2 = mysql_fetch_array($result2)) 
      { 

       $tbl= $tbl . "<td WIDTH='50px' align='center'>".$row2['ans']."</td>"; 

      } 
      $tbl = $tbl . "</tr>"; 
      $tbl = $tbl . "</table>"; 


      header("Cache-Control: no-stor,no-cache,must-revalidate"); 
      header("Cache-Control: post-check=0,pre-check=0", false); 
      header("Cache-control: private"); 
      header("Content-Type: application/force-download"); 
      header("Content-Disposition: inline; attachment;filename=Reservations.xls"); 
      header("Content-Transfer-Encoding: binary"); 
      header("Pragma: no-cache"); 
      header("Expires: 0"); 

      print $tbl; 
+0

'$ tbl = $ tblの代わりに' $ tbl。= 'を使うことができます。 '?残りの部分については、私はこれをテストすることはできませんので、Excelはありませんが、多くのライブラリのうちの1つを使用して適切なxls(x)ファイルを生成すると思われます。失敗した場合、.csvファイルを書くことはExcelでより簡単に理解できます。 HTML。 – Wrikken

+0

XLSと偽ったHTMLがありますが、なぜそれをReservations.htmlという名前にしませんか? Excelは引き続きHTMLファイルをインポートできます。 –

答えて

1

コードスニペットは、あなたの例のデータへのresemblenceを負いません。ここで

コードがあります。

あなたはそれぞれの結果を新しいTDに書いていますが、すべて同じTRに書いてあります。そのため、それらはすべて同じ行にあります。

変更:

 while($row2 = mysql_fetch_array($result2)) 
     { 
      $tbl = $tbl . "<tr>"; 
      $tbl = $tbl . "<td WIDTH='50px' align='center'>".$row2['ans']."</td>"; 
      $tbl = $tbl . "</tr>"; 
     } 

 $tbl = $tbl . "<tr>"; 
     while($row2 = mysql_fetch_array($result2)) 
     { 

      $tbl= $tbl . "<td WIDTH='50px' align='center'>".$row2['ans']."</td>"; 

     } 
     $tbl = $tbl . "</tr>"; 

しかし、私はあなたが二度同じSQLクエリを実行している理由はさっぱりだが...ただ、$で1つのクエリに対して一つのループを実行しますfirstRow = true;ループの前にif($ firstRow){//ヘッダーを表示します。 $ firstRow = false; }ループの最初のアクションとして