I have 2 tables as follows:
Table 1 (TRIPLE_COGNAC)
TRIPLE_ID,PDB_ID,FIRST_RESIDUE,FIRST_CHAIN,SECOND_RESIDUE,SECOND_CHAIN,THIRD_RESIDUE,THIRD_CHAIN,SEQUENCE
TCOG_98084,3oww,A64,B,G7,A,C82,A,AGC
TCOG_98085,3oww,G84,B,A41,A,G62,A,GAG
TCOG_98086,3oww,G7,B,A64,A,C39,A,GAC
TCOG_98087,3oww,U69,A,C70,A,G35,A,UCG
TCOG_98088,3oww,G32,A,A71,A,A34,A,GAA
TCOG_98089,3oww,A11,A,G73,A,C30,A,AGC
TCOG_98090,3oww,A41,B,G84,A,C5,A,AGC
TCOG_98091,3oww,C82,B,G7,B,A64,A,CGA
...
...
...
Table 2 (QUAD1_COGNAC)
QUAD1_39435,3oww,C39,B,A64,B,G7,A,C82,A,CAGC
QUAD1_39436,3oww,C5,B,G84,B,A41,A,G62,A,CGAG
QUAD1_39437,3oww,C82,B,G7,B,A64,A,C39,A,CGAC
QUAD1_39438,3oww,G62,B,A41,B,G84,A,C5,A,GAGC
...
...
...
I want to download rows in Table 1 and Table 2 where PDB_ID = 3oww
as a csv file using PHP. I was able to do this but the output page is not quite what I wanted The current output is:
TRIPLE_ID,PDB_ID,FIRST_RESIDUE,FIRST_CHAIN,SECOND_RESIDUE,SECOND_CHAIN,THIRD_RESIDUE,THIRD_CHAIN,SEQUENCE
TCOG_98084,3oww,A64,B,G7,A,C82,A,AGC
TCOG_98085,3oww,G84,B,A41,A,G62,A,GAG
TCOG_98086,3oww,G7,B,A64,A,C39,A,GAC
TCOG_98087,3oww,U69,A,C70,A,G35,A,UCG
TCOG_98088,3oww,G32,A,A71,A,A34,A,GAA
TCOG_98089,3oww,A11,A,G73,A,C30,A,AGC
TCOG_98090,3oww,A41,B,G84,A,C5,A,AGC
TCOG_98091,3oww,C82,B,G7,B,A64,A,CGA
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /Applications/XAMPP/xamppfiles/htdocs/interrna/download- test.php:48) in <b>/Applications/XAMPP/xamppfiles/htdocs/interrna/download- test.php</b> on line <b>46</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /Applications/XAMPP/xamppfiles/htdocs/interrna/download-test.php:48) in <b>/Applications/XAMPP/xamppfiles/htdocs/interrna/download-test.php</b> on line <b>47</b><br />
TRIPLE_ID,PDB_ID,FIRST_RESIDUE,FIRST_CHAIN,SECOND_RESIDUE,SECOND_CHAIN,THIRD_RESIDUE,THIRD_CHAIN,SEQUENCE,QUAD1_ID,PDB_ID,FIRST_RESIDUE,FIRST_CHAIN,SECOND_RESIDUE,SECOND_CHAIN,THIRD_RESIDUE,THIRD_CHAIN,FOURTH_RESIDUE,FOURTH_CHAIN,SEQUENCE
QUAD1_39435,3oww,C39,B,A64,B,G7,A,C82,A,CAGC
QUAD1_39436,3oww,C5,B,G84,B,A41,A,G62,A,CGAG
QUAD1_39437,3oww,C82,B,G7,B,A64,A,C39,A,CGAC
QUAD1_39438,3oww,G62,B,A41,B,G84,A,C5,A,GAGC
I want to be able to download these as separate files according to the $names
array. So file1 will be triple_cognac.csv
containing the rows from Table1 while quad1_cognac.csv
will contain rows from Table2. Can someone please help to correct the code?
My code:
<?php
// Make a MySQL Connection
$conn = mysql_connect("localhost","root","");
mysql_select_db("2RNA",$conn);
$pdbid = $_GET['var'];
//print $pdbid;
$names = array(
"triple_cognac" => "TRIPLE_COGNAC",
"quad1_cognac" => "QUAD1_COGNAC",
);
foreach($names as $x => $x_value) {
$file = $x;
$tablename = $x_value;
$sql1 = mysql_query("SELECT * from ". $tablename. " where PDB_ID like '$pdbid'");
if(mysql_num_rows($sql1) == 0)
{
echo "";
}
else
{
//print $file ." ". $tablename;
//print "</br>";
$filename = $file.".csv";
$fp = fopen('php://output', 'w');
$query = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='2RNA' AND TABLE_NAME= '$tablename'";
$result = mysql_query($query);
while ($row = mysql_fetch_row($result)) {
$header[] = $row[0];
}
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename='.$filename);
fputcsv($fp, $header);
$num_column = count($header);
$query2= "SELECT * from ". $tablename. " where PDB_ID like '$pdbid'";
$result2 = mysql_query($query2);
while($row = mysql_fetch_row($result2)) {
fputcsv($fp, $row);
}
}
}
//exit;
?>