2017-01-15 8 views
1

私は小規模な学校プロジェクトのために少しのPHPを学んできました。プロジェクトはほぼ完了したばかりです.1つは欠けています。私は検索したものをCSV/Excelに出力する方法が必要です。 私は現在使用しているスクリプトを見つけました。それは美しく動作します私はそれのための検索フォームを作成する方法を把握できません。PHPを使ったCSV/ExcelへのMySQL出力

<?php 
$DB_Server = "localhost"; //MySQL Server  
$DB_Username = "root"; //MySQL Username  
$DB_Password = "";    //MySQL Password  
$DB_DBName = "database";   //MySQL Database Name 
$DB_TBLName = "table"; //MySQL Table Name 
$filename = "search";   //File Name 
//create MySQL connection 
$sql = "Select column1, column2 , ... from $DB_TBLName"; 
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
//select database 
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
//execute query 
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());  
$file_ending = "xls"; 
//header info for browser 
header("Content-Type: application/xls");  
header("Content-Disposition: attachment; filename=$filename.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
/*******Start of Formatting for Excel*******/ 
//define separator (defines columns in excel & tabs in word) 
$sep = "\t"; //tabbed character 
//start of printing column names as names of MySQL fields 
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
echo mysql_field_name($result,$i) . "\t"; 
} 
print("\n");  
//end of printing column names 
//start while loop to get data 
while($row = mysql_fetch_row($result)) 
{ 
    $schema_insert = ""; 
    for($j=0; $j<mysql_num_fields($result);$j++) 
    { 
     if(!isset($row[$j])) 
      $schema_insert .= "NULL".$sep; 
     elseif ($row[$j] != "") 
      $schema_insert .= "$row[$j]".$sep; 
     else 
      $schema_insert .= "".$sep; 
    } 
    $schema_insert = str_replace($sep."$", "", $schema_insert); 
    $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
    $schema_insert .= "\t"; 
    print(trim($schema_insert)); 
    print "\n"; 
} 
?> 

私が望むすべての列を出力しました。私はちょうど はコードを調整し、HTMLフォームでそれに値を解析しようとしました..私はそれのための検索フォームを作成する方法を見つけ出すことはできません - その

<form action="index.php" method="GET"> 
    Search : 
    <input type="text" name="query" /> 
    <input type="submit" value="Search!" /> 
    </form> 

答えて

0

ようにあなたが追加したいと思いますクエリは$sqlになります。

$sql = 'SELECT * FROM `my_table`; 
if (isset($_REQUEST['query'])) 
{ 
    $sql .= 'WHERE `my_column` = \'' . mysql_real_escape_string($_REQUEST['query']) . '\''; 
} 

また、それはあなたがプリペアドステートメントを使用できるようになりますようmysqli_の代わりに、mysql_mysqlが推奨されません)を検討する必要があります。 fputcsvも使用し、印刷する代わりに実際のファイルに書き込む必要があります。そうすれば、改行やタブを自分で管理する必要がなくなります。

+0

既にありがとうございます。私はコードを少し変更してフォームを作成しました。今度はエラーが表示されます: "クエリを実行できませんでした: SQL構文にエラーがあります。正しい構文がMariaDBサーバーのバージョンに対応するマニュアルをチェックして、 'LIKE'ポート8" 1 1064 "コードは次のようになります:http://pastebin.com/W1fcJjKyあなたの助けに感謝します! – Exelion

関連する問題