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 函数,然后返回一个结果集

我想做的是使用选择标记的 onchange 事件来运行一个 php 脚本,该脚本运行一个 mysqli 函数,该函数用数据填充字段。我想我必须使用 javascript 使用结果集中的数据动态编辑字段的 innerHTML,但是如何将 javascript 嵌入到 php 函数中?我尝试过执行以下操作,请记住,$SqlStatement 变量包含 sql 语句,并且该语句确实有效,我直接在 db 上运行它并且它有效:

$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。

我还从后端发送了一些虚拟代码。您可以使用您的数据库来获取结果并发送到前端。

于 2013-03-19T06:42:46.690 回答