0

各セルに名前が含まれる通常の html テーブルがあります。これらの各セルに関数を追加しました。これにより、セルの背景色が白の場合は緑になり、逆の場合は緑になります。ただし、セルがクリックされたときにmySqlデータベースも更新したいのですが、ページをリロードしないと(やりたくない)、またはjavascriptを使用しないと、これを行う良い方法がわからないようですサーバーに接続します (これは非常に悪い習慣のようです)。この時点で、ページはすでに読み込まれています。誰か良い提案はありますか?

<script type="text/javascript">
var tbl = document.getElementById("table");
        if (tbl != null) {
            for (var i = 1; i < tbl.rows.length; i++) {
                for (var j = 0; j < tbl.rows[i].cells.length; j++)
                    tbl.rows[i].cells[j].onclick = function () { getval(this); };
            }
        }

        function getval(cel) {
            if(cel.style.backgroundColor == "green")
            {
                 cel.style.backgroundColor = "white";

                 // Here I would like to update my datebase with mySql
                 // query(UPDATE team SET attended=0 WHERE name = cel.innterText)
                 // (name associated with the cell)

            }
            else
            {
                cel.style.backgroundColor = "green";
                 // Here I would like to update my datebase with mySql
                 // query(UPDATE team SET attended=1 WHERE name = cel.innterText)
                 // (name associated with the cell)
            }
        }   
</script>
4

2 に答える 2

2

大まかに言うと、アプリケーションの一部をサービスに変換し、ページからの非同期 HTTP リクエストによってそれを呼び出す必要があります (これは「AJAX」の名称に該当します)。

そのサービスは、サーバー上で追加の PHP スクリプトとして記述できます。これは必ずしも HTML ドキュメントを返すとは限りませんが、XML または JSON (最近ではおそらく後者の方が一般的です) を返す可能性があり、ブラウザーの JavaScript スクリプトによって処理されます。必要に応じてさらにアクションを実行します (たとえば、このリクエストが成功した場合にのみ背景を白にします)。

SQL クエリを処理するのは、この PHP スクリプトです。

一般的なガイドラインとして、クライアント側 (JavaScript スクリプト内) で SQL を準備したり処理したりしないでください。SQL クエリを実行するときは、必ず準備済みステートメントを使用してください。(私が言っているのは、あなたが明らかにこれに慣れておらず、ここまたはさまざまなブログで、クエリ文字列の変数を使用して変数を SQL ステートメントに入れるだけのコードのスニペットを必然的に見つけるからです。これは非常に悪い習慣です。)

編集

SQL インジェクションに対して脆弱な MySQL クエリの悪い例を得るために、実際に W3Schoolsより先に進む必要はありません(問題は にあります$sql="SELECT * FROM user WHERE id = '".$q."'";)。この例は使用しないでください。W3Schools は避けたいと思います。http: //www.w3fools.com/ を参照してください。

于 2013-08-22T11:52:11.580 に答える
1

SQL はクライアント側ではなくサーバー側です。サーバーにデータを送信するには AJAX を使用する必要があり、サーバーは SQL を使用して保存します。

于 2013-08-22T11:42:25.313 に答える