From 23875830f84c2bab257018b27f02ad108cdbd47e Mon Sep 17 00:00:00 2001 From: James Richards Date: Mon, 17 Mar 2003 14:58:42 +0000 Subject: [PATCH] Column names are now specified in the database INSERT. Had to enclose column names with backticks (`) because answer table has a column named "default" which is a reserved word in MySQL. Created function BuildOutput($Query) that all table dumps use. Cleaned up HTML. git-svn-id: file:///Users/Shitiz/Downloads/lssvn/trunk/unstable@54 b72ed6b6-b9f8-46b5-92b4-906544132732 --- admin/dumpsurvey.php | 100 +++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 65 deletions(-) diff --git a/admin/dumpsurvey.php b/admin/dumpsurvey.php index d42487526f0..9024a11e3af 100644 --- a/admin/dumpsurvey.php +++ b/admin/dumpsurvey.php @@ -47,87 +47,55 @@ //echo $htmlheader; if (!$sid) { - echo "
$setfont
You must have a Survey ID number to export."; + echo "
$setfont
You must have a Survey ID number to export.
\n"; exit; } - -$dumphead="# SURVEYOR SURVEY DUMP\n"; +$dumphead = "# SURVEYOR SURVEY DUMP\n"; $dumphead .= "#\n# This is a dumped survey from the Surveyor Script\n"; $dumphead .= "# Written by Jason Cleeland\n#\n\n"; - -//1: Surveys table -$squery="SELECT * FROM surveys WHERE sid=$sid"; -$sresult=mysql_query($squery); -$sfields=mysql_num_fields($sresult); -$sdump = "\n# NEW TABLE\n# SURVEY TABLE\n#\n"; -while ($srow=mysql_fetch_row($sresult)) +function BuildOutput($Query) { - $sdump.="INSERT INTO surveys VALUES ("; - for ($i=0; $i<$sfields; $i++) + $QueryResult = mysql_query($Query); + preg_match('/FROM (\w+)( |,)/i', $Query, $MatchResults); + $TableName = $MatchResults[1]; + $Output = "\n#\n# " . strtoupper($TableName) . " TABLE\n#\n"; + while ($Row = mysql_fetch_assoc($QueryResult)) { - $sdump .= "'".addcslashes(str_replace("\r\n", "
", $srow[$i]), "',\",")."'"; - if ($i!=$sfields-1) {$sdump .= ", ";} + $ColumnNames = ""; + $ColumnValues = ""; + foreach ($Row as $Key=>$Value) + { + $ColumnNames .= "`" . $Key . "`, "; //Add all the column names together + $ColumnValues .= "'" . addcslashes(str_replace("\r\n", "
", $Value), "',\",") . "', "; + } + $ColumnNames = substr($ColumnNames, 0, -2); //strip off last comma space + $ColumnValues = substr($ColumnValues, 0, -2); //strip off last comma space + + $Output .= "INSERT INTO $TableName ($ColumnNames) VALUES\n ($ColumnValues);\n"; } - $sdump .= ");\n"; + return $Output; } -//echo str_replace("\n", "
", $sdump); -//echo "
"; + +//1: Surveys table +$squery = "SELECT * FROM surveys WHERE sid=$sid"; +$sdump = BuildOutput($squery); //2: Groups Table -$gquery="SELECT * FROM groups WHERE sid=$sid"; -$gresult=mysql_query($gquery); -$gfields=mysql_num_fields($gresult); -$gdump="\n# NEW TABLE\n# GROUP TABLE\n#\n"; -while ($grow=mysql_fetch_row($gresult)) - { - $gdump.="INSERT INTO groups VALUES ("; - for ($i=0; $i<$gfields; $i++) - { - $gdump .= "'".addcslashes(str_replace("\r\n", "
", $grow[$i]), "',\",")."'"; - if ($i!=$gfields-1) {$gdump .= ", ";} - } - $gdump .= ");\n"; - } -//echo str_replace("\n", "
", $gdump); -//echo "
"; +$gquery = "SELECT * FROM groups WHERE sid=$sid"; +$gdump = BuildOutput($gquery); //3: Questions Table -$qquery="SELECT * FROM questions WHERE sid=$sid"; -$qresult=mysql_query($qquery); -$qfields=mysql_num_fields($qresult); -$qdump = "\n# NEW TABLE\n# QUESTIONS TABLE\n#\n"; -while ($qrow=mysql_fetch_row($qresult)) - { - $qdump.="INSERT INTO questions VALUES ("; - for ($i=0; $i<$qfields; $i++) - { - $qdump .= "'".addcslashes(str_replace("\r\n","
",$qrow[$i]), "',\",")."'"; - if ($i != $qfields-1) {$qdump .= ", ";} - } - $qdump .= ");\n"; - } -//echo str_replace("\n", "
", $qdump); -//echo "
"; +$qquery = "SELECT * FROM questions WHERE sid=$sid"; +$qdump = BuildOutput($qquery); //4: Answers table -$aquery="SELECT answers.* FROM answers, questions WHERE answers.qid=questions.qid AND questions.sid=$sid"; -$aresult=mysql_query($aquery); -$afields=mysql_num_fields($aresult); -$adump = "\n# NEW TABLE\n# ANSWERS TABLE\n#\n"; -while ($arow=mysql_fetch_row($aresult)) - { - $adump.="INSERT INTO answers VALUES ("; - for ($i=0; $i<$afields; $i++) - { - $adump .= "'".addcslashes(str_replace("\r\n","
",$arow[$i]), "',\",")."'"; - if ($i != $afields-1) {$adump .= ", ";} - } - $adump .= ");\n"; - } -//echo str_replace("\n", "
", $adump); -$fn="survey_$sid.sql"; +$aquery = "SELECT answers.* FROM answers, questions WHERE answers.qid=questions.qid AND questions.sid=$sid"; +$adump = BuildOutput($aquery); + +$fn = "survey_$sid.sql"; + //header("Content-Type: application/msword"); //EXPORT INTO MSWORD header("Content-Disposition: attachment; filename=$fn"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past @@ -135,6 +103,8 @@ // always modified header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // HTTP/1.0 +echo "#
\n";
 echo $dumphead, $sdump, $gdump, $qdump, $adump;
+echo "#
\n"; ?> \ No newline at end of file