2011-07-01 3 views
0

基本的にこれは私がやっていることです: 私はフラッシュ/ ajaxファイルアップローダを持っています。ユーザーはx個の写真を選択してアップロードし、外部PHPスクリプト。Javascriptの後にPHPコードを実行する問題

、それらをデータベースに挿入された後、私は私がどのように「ライブアップデート」を見つけ出すことはできません、

しかしなど、ページ上に表示し、ユーザーがタグ、キャプションを編集できるようにしたいと思います正しいデータを表示するページ

例: アップロードが完了するとshowFields()が実行されます。私はgetIDsは、まさにそのような「テスト」

として静的な値を返しますが、私はそれがこれを行う持っていた場合があれば動作します

function showFields() { 

    var jsvar = '<?php echo getIDs(); ?>'; 

    document.getElementById('picndata').innerHTML += jsvar;  
} 

function getIDs() { 

    $SQL = "SELECT * FROM `slides` ORDER BY `sid` DESC"; 
    $results = mysql_query($SQL); 
    $row = mysql_fetch_assoc($results); 
    $slide = $row['sid']; 

    $SQL = "SELECT * FROM `slides` WHERE `sid` = $slide"; 

    $results = mysql_query($SQL); 
    $str; 

    while ($row = mysql_fetch_array($results)) { 
     $str .= $row['size'] . "\r\n"; 
    } 

    return $str; 
} 

を(ずさん私が知っています)

の場合は、PHPが最初に実行され、画像がまだアップロードされていないため結果が見つからないため動作しません。

アイデア?

答えて

0

このライン:

$str .= $row['size'] . "\r\n"; 

リテラル終端されていない文字列を持つあなたのJavaScriptになります。

変更:

var jsvar = '<?php echo getIDs(); ?>'; 

へ:

var jsvar = '<?php echo str_replace("\r\n", "\\\r\n", trim(getIDs()) ?>'; 

JavaScriptが有効であるので、これは適切な場所にスラッシュを配置します。あるいは、バックスラッシュを追加する代わりに、改行をスペースやコンマなどで置き換えることもできます。

+0

これは問題ではありません...ページが読み込まれた後に別のPHPスクリプトでアップロードが行われるため、getIDs()は最新のIDを置き換えず、ページの読み込み時に最新のものを置き換えます – Mike

0

ajaxを使用して画像にタイムスタンプを付けます。
私は個人的には、setTimeout()を使ってタイムリーに呼び出される 'refresh'関数を持っています。

現在のイメージの初期読み込み時に、最新のイメージのタイムスタンプを決定します。 あなたのAJAXでは、タイムスタンプ>前の「最新の」タイムスタンプを持つ画像を照会します。結果が得られたらページを更新し、新しい '最新の' varをリセットします。
アップロード機能から返品を受けて、Ajaxをトリガーすることができれば、新しい画像が表示されるのを遅らせることができます。

セッション変数にタイムスタンプを保存して、クエリのユーザー入力に頼らないようにすることもお勧めします。

他のユーザーが同じエリアにアップロードできる並行性も処理します。

関連する問題