0

データベースフィールドを使用してフォームフィールドに動的にデータを入力する方法を理解しようとすると問題が発生します。私が使用しているコードは次のとおりです。

<form id="notes" name="notes" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
<table width="700" border="0.5" align="center">
  <tr>
    <td colspan="6" style="text-align:center">
        <select name="noteselect" id="noteselect" onchange="<?php ?>">
            <option value="new">
                Add new...
            </option>
            <?php
                if(isset($_COOKIE['deceasedID']))
                {
                    $SqlStatement = "SELECT PK_Notes, Note_Title, Date_Entered FROM Notes WHERE FK_Deceased = '".$_COOKIE['deceasedID']."'";

                    $res = ExecuteSQL($SqlStatement, true);
                    while($row = mysqli_fetch_array($res))
                    {
                        echo "<option value='".$row['PK_Notes']."'>".$row['Note_Title']." - ".$row['Date_Entered']."</option>";
                    }
                    $error = " ";
                }

このスニペットでは、ExecuteSQL関数がmysqli_connect / query / close関数を実行してから、結果セットを返します。

私がやりたいのは、selectタグのonchangeイベントを使用して、フィールドにデータを入力するmysqli関数を実行するphpスクリプトを実行することです。結果セットのデータを使用してフィールドのinnerHTMLを動的に編集するには、JavaScriptを使用する必要があると思いますが、JavaScriptをphp関数に埋め込むにはどうすればよいですか?私は次のことを試みましたが、$ SqlStatement変数にはsqlステートメントが含まれており、ステートメントは機能します。データベースで直接実行すると、機能します。

$res = ExecuteSQL($SqlStatement, true)
$row = mysqli_fetch_array($res)
<script type="text/javascript">document.getElementById(*fieldname*).value = $row['db_row_name']</script>

しかし、これは何もしないので、ここで何が悪いのかわかりません。php関数を使用してjavascriptを実行し、フィールドを動的に更新することはできませんか?または、100%javascriptを使用してこれを実行し、javascriptに埋め込まれたphpを介してSQLを実行する方がよいでしょうか?どんな助けでもいただければ幸いです。

4

1 に答える 1

0

この種の問題を解決するために、ここにサンプルを提供しようとしました。

これにより、AJAXを使用してPHPから動的コンテンツを取り込む方法がわかります。

**HTMLファイル**$(document).ready(function(){$('#select1')。change(function(){

                    //Get current item's value
                    var select1 = $(this).val();

                    $.ajax({
                        url : "getOptions.php?select1=" + select1,
                        success : function(data) {
                            var result, opts = "";

                            //We get comma separated data
                            result = data.split(',');
                            //Prepare options
                            for(var i = 0; i < result.length; i++) {
                                opts += "<option value='" + result[i] + "'>" + result[i] + "</option>";
                            }
                            //Populate second select
                            $('#select2').html(opts);
                        },
                        error : function() {
                            alert("Error");
                        }
                    });
                });

                //By default populate options for currently selected item
                $('#select1').trigger('change');
            });
        </script>
    </head>
    <body>
        <form>
            <p>
                Select 1
                <select id='select1'>
                    <option  value="1">1</option>
                    <option  value="2">2</option>
                    <option  value="3">3</option>
                    <option  value="4">4</option>
                </select>
            </p>
            <p>
                Select 2
                <select id='select2'>
                </select>
            </p>
        </form>
    </body>
</html>

** PHPファイル(getOptions.php)**

<?php
    $select1 = $_GET['select1'];
    $result = "";

    /*
        Here fetch data and return to front-end
    */

    //following is used to generate some dummy code.

    for ($i=1; $i<=5; $i++) {
        if($result != "") $result .= ",";
        $result .= $select1.$i;
    }
    echo $result;
?>

バックエンドからカンマ区切りの値を送信しているだけです。JSONを試すことができます。

また、バックエンドからダミーコードを送信しています。DBを使用して、結果をフェッチし、フロントエンドに送信できます。

于 2013-03-19T06:42:46.690 に答える