2017-02-10 9 views
0

をダウンロードCSV時(エントリをログ)テーブルのレコードを挿入する:私はPHPにかなり新たなんだ、これが私の初めてのstackoverflowの質問です

私はデータが変更されたときに、それは簡単に知ることのために作りたいです彼らは私が構築しているアプリケーションからCSVファイルを最後にダウンロードしてからです。 CSVエクスポートが機能し、タイムスタンプがエクスポートログテーブルに保存されたタイムスタンプの後にある行があるかどうかを判断できます。私の問題は、私はログテーブルにタイムスタンプを保存する方法を見つけることができないということです。ユーザーがリンクをクリックしてファイルをエクスポートすると、以下のコードが実行されてファイルが生成されます。最後の4行はログエントリを作成しようとした私の試みです。 $ conは有効で、動作し、私のメソッドは通常のPHPページで動作しますが、CSVダウンロードページで動作させる方法を理解できませんし、ユーザの入力時に他の方法を知らないクリックしてダウンロードする。私はこれを行うための最善の方法についてのアイデアを公開しています。

私は本当にありがとうございます - 事前に感謝!

<?php 
header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=speakers.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

require_once("../scripts/dbcon.inc.php"); 
require_once("../scripts/presentersessions.inc.php"); 

$query = "SELECT DISTINCT sp.person_id, CONCAT(p.person_display_name, ' ', p.person_last_name) person_name, '' session_titles, p.person_bio FROM person p INNER JOIN presenters sp ON p.person_id = sp.person_id ORDER BY p.person_last_name, p.person_display_name"; 
$result = mysqli_query($con, $query) or die('failed query: '.$query); 
$num_rows = mysqli_num_rows($result); 
$output = fopen("php://output", "w"); 

fputcsv($output, array("Item ID (Optional)","Name","Sub-Title (i.e. Location, Table/Booth, or Title/Sponsorship Level)","Description (Optional)","Location/Room")); 

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
    #echo '"","'.htmlspecialchars($row['person_display_name']).' '.htmlspecialchars($row['person_last_name']).'","'.htmlspecialchars($row['session_title']).'","'.htmlspecialchars($row['person_bio']).'"\n"'; 
    $person_id = $row['person_id']; 
    $row['person_name'] = $row['person_name']; 
    $row['session_titles'] = presenter_sessions($conference_id, $person_id); 
    $row['person_id'] = ''; 
    fputcsv($output, $row); 
} 

date_default_timezone_set('US/Eastern'); 
$export_timestamp = date("Y-m-d H:i:s"); 
$query_insert_log_entry = "INSERT INTO export_log (export_type, export_timestamp, person_id) VALUES ('$export_type', '$export_timestamp', {$_SESSION['valid_accbo_person_id']})"; 
$result_insert_log_entry = mysqli_query($con, $query_insert_log_entry); 

答えて

0

[ 'valid_accbo_person_id']あなたがこのvaiableの$ export_typeと$ _SESSIONの設定を確認して、このページ上でアクセス可能です。

私はこの問題は、この行であると思います -

$query_insert_log_entry = "INSERT INTO export_log (export_type, export_timestamp, person_id) VALUES ('$export_type', '$export_timestamp', {$_SESSION['valid_accbo_person_id']})"; 

以下のような変数から、これらの単一引用符削除 -

$query_insert_log_entry = "INSERT INTO export_log (export_type, export_timestamp, person_id) VALUES ('{$export_type}', '{$export_timestamp}', '{$_SESSION['valid_accbo_person_id']}')"; 
+0

おかげで、セリムを。 2つの変数は有効です。これは通常のWebページでテストするとうまくいきます。単一引用符は、データベースに挿入される文字列値であるため、SQL文で必要です。しかし、私はそれを試してみましたが、それでも動作しませんでした。再度、感謝します! – pigparent

+0

これはどうですか?$ query_insert_log_entry = "INSERT INTO export_log(export_type、export_timestamp、person_id)VALUES( '{$ export_type}'、 '{$ export_timestamp}'、 '{$ _SESSION [' valid_accbo_person_id ']}')"; –

+0

Selim、私は問題を発見しました、そして今働いています。あなたは$ _SESSION ['valid_accbo_person_id']が有効かどうかを確認するように私に尋ねました。さて、私は同じブラウザタブでテストしていました。新しいブラウザタブを起動すると有効ではないので、URLの値を渡して$ _REQUEST経由で読み込み、すべて動作しています。本当にありがとう! – pigparent

関連する問題