0

データベースのPHPレコードをテーブルに表示するページがあります。MYSQLセルをクリックして、表のセル内のレコードを編集できるようにしたいと考えています。私が描くプロセスは次のようになります。

1)onclick()テーブル セル トリガーのイベントajaxfunction()
2)ajaxfunction()データベースにクエリを実行し、オプションのドロップダウン リストを表示する php ページにセル データを送信します。
3) ユーザーがドロップダウン リストからオプションを選択する
4)onchange()イベントがフォームをデータベースに送信する
5) テーブル セルまたはページが更新され、現在のテーブル セル データが表示されます。(現在、既存のコードにはありません)

現在、2 つのPHPページac_sched.phpModSched.php.

各ページの構造は次のとおりです。

ac_sched.php:

  • PHPMYSQLレコードを表示するテーブルを作成しました
  • ajaxfunction利用可能なセル オプションをデータベースに問い合わせる

ModSched.php:

  • PHPデータベースから使用可能なセル オプションを選択し、ドロップダウンを作成するコード。
  • PHPドロップダウンから選択したオプションでデータベースを更新するコード。

各ページのコードの関連セクションは次のとおりです。

ac_sched.php:

<script>
function ACSchedQuery(reg)
    {
    if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
        }
    xmlhttp.onreadystatechange=function()
        {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById(reg).innerHTML=xmlhttp.responseText;
            }
        }
    xmlhttp.open("GET","../process/ModSched.php?ModSched_Reg="+reg,true);
    xmlhttp.send();
    }
</script>

<table>

<tr>
<td id="ABC-Day-3" onclick="ACSchedQuery(this.id)"></td>
</tr>

......rest of table here......
</table>


ModSched.php:

// This is to request the options from the database  
if(isset($_GET['ModSched_Reg']))
    {
    $ModSched_Array = explode("-",$_GET["ModSched_Reg"]);
    $ModSched_Reg = $ModSched_Array[0];
    $ModSched_Day = $ModSched_Array[1];
    $ModSched_ID = $ModSched_Array[2];

    $sql4 = ("SELECT * FROM aircraft_sched_options WHERE SchedOpt_ID != 0");

    if(!$result_sql4 = $mysqli->query($sql4))
        {
        echo QueryCheck("getting the schedule options ","from the aircraft sched options",$mysqli);
        }
    ?>
    <form action="../process/ModSched.php" method="post">// I did try: action=""
        <table cellpadding="0" cellspacing="0" border="0">

        <tr>
        <td>
    <?php
    echo "<select name=\"ModSched_ID\">";

    while($SchedOpt = $result_sql4->fetch_assoc())
        {
        echo "<option value=\"" . $ModSched_Reg . "-" . $ModSched_Day .  "-" . $SchedOpt['SchedOpt_ID'] . "\" onchange=\"formSubmit(this.form)\"";
        if($SchedOpt['SchedOpt_ID'] == $ModSched_ID)
            {
            echo " selected=\"selected\"";
            }
        echo ">" . $SchedOpt['SchedOpt_Name'] . "</option>";
        }

    echo "</select>";
    ?>
        </td>
        </tr>

        </table>
    </form>
    <?php
    }  

// This is to submit the selected option to the database
if(isset($_POST['ModSched_ID']))
    {
    $ModSched_Array = explode("-",$_POST["ModSched_ID"]);
    $ModSched_Reg = $ModSched_Array[0];
    $ModSched_Day = $ModSched_Array[1];
    $ModSched_ID = $ModSched_Array[1];

    $sql4 = ("UPDATE aircraft_status SET $ModSched_Day = $ModSched_ID WHERE AC_Reg = $ModSched_Reg");

    if(!$result_sql4 = $mysqli->query($sql4))
        {
        echo QueryCheck("updating the aircraft schedule ","into the aircraft sched",$mysqli);
        }

    }

大量のコードであることは承知していますが、ストーリー全体を示すためにはすべてが必要だと思います。
誰かが私が持っているコード構造を見るだけで、私が正しい軌道に乗っているかどうかがわかると思います。それは大きな助けになるでしょう。私のコードに関する質問は次のとおりです。

1) 変更を送信するためのフォームは適切な場所にありますか? - 以前はajaxfunction()、選択したオプションをフォーム送信ページに送信するのに時間がかかりました。これは機能しませんでしたが、構造自体ではなく、私のコードであった可能性があります。

2)フォーム送信コードを独自のページに配置する必要がありますか?

AJAX私は今週使い始めたばかりなので、ここでマークから外れている可能性があります. どんな助けでも大歓迎です。

4

1 に答える 1

0

Cakephpsymphonyなどのフレームワークを実装できます。このフレームワークは、この言語と優れた実践方法を学ぶ過程で役立ちます。

于 2013-04-18T06:26:59.033 に答える