0

すべての MySQL コーディングが行われるスクリプト ( insertvalues.php ) があります (クエリや、PHP を使用したデータベースへの値の挿入など)。

また、PHP を使用してファイルをアップロードしたいと考えています。

私が知りたいのは、ファイルのアップロードを行うPHPコードを、フォームがAJAXを使用してナビゲートしているinsertvalues.phpと同じページに保存する方が良いですか、それともファイルアップロードコードを配置する方が良いですか別のPHPページで?

以下は、insertvalues.phpにあるスクリプトです。

<?php

session_start();

$username="xxx";
$password="xxx";
$database="xxx";

mysql_connect('localhost',$username,$password);

mysql_select_db($database) or die( "Unable to select database");


$insertquestion = array();

    $imagequery = "SELECT ImageId FROM Image WHERE (ImageFile = '". mysql_real_escape_string($_POST['imageFile[]'])."')";
    $imagers = mysql_query($imagequery);
    $imagerecord = mysql_fetch_array($imagers);
    $imageid = $imagerecord['ImageId']; 

        $insertquestion[] = "'".
                    mysql_real_escape_string( $imageid ) ."'";

 $questionsql = "INSERT INTO Question (ImageId) 
    VALUES (" . implode('), (', $insertquestion) . ")";

    mysql_query($questionsql);

mysql_close()

?>

以下は、insertvalues.phpへの投稿を正常に行う AJAXです。

     function submitform()
{
    var fieldvalue = $("#QandA").val();
    $.post("insertvalues.php", $("#QandA").serialize() ,function(data){
        var QandAO = document.getElementById("QandA");
        QandAO.submit();
    });  
    alert("Your Details for this Session has been submitted"); 
}
4

2 に答える 2

0

Ohlala... 私の意見ではどちらでもありません。どちらの方法もひどいように見えますが、2番目の(分離)はおそらくそれほどひどいものではありません. アプリケーションの構造と設計、つまり MVC パターンを調べることを強くお勧めします。

于 2012-04-06T13:53:56.050 に答える
0

経験が浅いときは、そのページの操作に属するコードのビットをたどる方が簡単だと思ったので、すべてをまとめていました。それ以来、それが物事をまとめているのは事実ですが、ページのコンテンツが大きくなるにつれて(常にそうです)、すぐに読めなくなることを学びました.

さらに、同じ可能性があるメソッドの複数のコピーを何度も管理するのは面倒であることがよくありました。つまり、コードが別の php ファイルに配置されて再利用され、他のコードは再利用されないことがありました。時間が経つにつれて、出現しつつあるパターンがすべてをモジュール化するものであることがすぐに明らかになりました。現在、レイアウトを決定する単一のファイルを使用する傾向があります。個々のコンポーネントは、フォルダー include 内の他の php ファイルからインクルードされます。これらのサブコンポーネントをモジュール化する必要がある場合は、インクルード フォルダー内にそのコンポーネントの名前でフォルダーを作成します。そして、それは続きます。面倒くさいようですが、本当に命の恩人です。

コードの再利用は、フォルダーを移動するのと同じくらい簡単になります。

于 2012-04-06T14:16:38.997 に答える