2013-03-19 42 views
0

我有问题试图找出如何使用数据库字段动态填充表单字段。我正在使用的代码如下:使用MySQL数据库中的表数据动态编辑HTML字段

<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 /查询/关闭功能,然后返回一个结果集

我希望做的是使用select标签的onchange事件来运行一个php脚本,该脚本运行一个mysqli函数,该函数用数据填充字段。我想我必须使用JavaScript来动态编辑字段的innerHTML与结果集中的数据,但是如何将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来做到这一点,并通过嵌入式PHP在JavaScript中运行任何SQL?任何帮助,将不胜感激。

+0

PHP脚本在服务器上执行。 Javascript在客户端执行。他们不是在同一时刻执行的。如果你想在select中选择一个值之后做一些事情,你必须使用AJAX调用。当用户选择一个选项时,Javascript向你的服务器发送一个AJAX调用(到一个新的脚本),然后当脚本生成JSON响应时(在示例中),在客户端,JS正在处理响应并修改UI 。 – MatRt 2013-03-19 05:16:33

回答

0

我试图在这里提供一个示例来解决这类问题。

这将给出如何使用AJAX来填充来自PHP的动态内容的想法。

** HTML文件** $(文件)。就绪(函数(){ $( '#选择1')。改变(函数(){

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

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

相关问题