2013-03-19 75 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。

另外我從後端發送一些虛擬代碼。您可以使用您的數據庫獲取結果併發送到前端。

相關問題