0

基本上,我有一个数据列表,它通过数据库中表的 foreach 语句显示。我想要一个下拉列表旁边的每个下拉列表,其中包含一些需要保存到表中的字段的值,但是我想在下拉列表中的值更改后立即将值自动保存到字段中。谁能指点我一个教程或可能有帮助的东西?

我正在使用 php 和 mysql 来创建系统,但如果需要,我会很乐意使用 JavaScript

我看过这个:动态驱动器自动保存http://www.dynamicdrive.com/dynamicindex16/autosaveform.htm这与我想要的类似,但是我需要它将数据实际存储在我的数据库中,而不是临时存储。

任何指导表示赞赏,

伊恩


大编辑

所以,谢谢你的回复,但我对ajax调用一无所知......我发现了这个:如何在没有提交按钮的情况下将ComboBox中的选择自动保存到PHP中的MYSQL中?.

我可以让它工作吗?

<script>
$(document).ready(function(){
$('select').live('change',function () {
        var statusVal = $(this).val();
        alert(statusVal);
        $.ajax({
                 type: "POST",
                 url: "saveStatus.php",
                 data: {statusType : statusVal },
                 success: function(msg) {
                     $('#autosavenotify').text(msg);
                 }
      })
  });
});
</script>


<?php foreach ( $results['jobs'] as $job ) { ?>

          <td width="25%"><?php echo $job->job_id</td> 
          <td>
          <select name="status" id="status">
                  <option value=''>--Select--</option>
                  <option value='0'>Approve</option>
                  <option value='1'>Reject</option>
                  <option value='2'>Pending</option>
          </select>
          <div id="autosavenotify"></div>
          </td>
        </tr>
    <?php } ?>

在页面 saveStatus.php 上:

<?php
if (isset($_POST['statusType'])) {

$con=mysql_connect("localhost","username","mypass","rocketdb3");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("jobs", $con);

$st=$_POST['statusType'];
    $query = "UPDATE jobs SET status=$st WHERE job_id=$id";
    $resource = mysql_query($query) 
        or die (mysql_error());

}
?>
4

3 回答 3

1

saveStatus.php中的$id在哪里?

您需要通过 AJAX 传递 statusType 和 job_id 才能在 saveStatus.php 中正确更新。

例如:

<script>
$(document).ready(function(){
$('select').on('change',function () {
        var statusVal = $(this).val();
        var job_id = $(this).id;
        alert(statusVal);
        $.ajax({
                 type: "POST",
                 url: "saveStatus.php",
                 data: {statusType : statusVal, job_id: job_id },
                 success: function(msg) {
                     $('#autosavenotify').text(msg);
                 }
      })
  });
});
</script>


<?php foreach ( $results['jobs'] as $job ) { ?>

      <td width="25%"><?php echo $job->job_id; ?></td> 
      <td>
      <select name="status" id="<?php echo $job->job_id; ?>">
              <option value=''>--Select--</option>
              <option value='0'>Approve</option>
              <option value='1'>Reject</option>
              <option value='2'>Pending</option>
      </select>
      <div id="autosavenotify"></div>
      </td>
    </tr>
<?php } ?>

*注意:.live()已弃用,请.on()改用。

和 saveStatus.php

$st = (int)$_POST['statusType'];
$id = (int)$_POST['job_id'];
$query = "UPDATE jobs SET status=$st WHERE job_id=$id";
于 2013-08-09T13:58:51.853 回答
0

您将需要使用 JavaScript(+ jQuery 以便于工作)来实现这一点。使用 JavaScript 捕获值的“更改”并触发对 PHP 脚本的 AJAX 调用,该脚本将值保存到 MySQL db。

于 2013-08-09T11:39:13.633 回答
0

使用 jQuery!在下拉 onchange 事件中执行 ajax 调用并更新数据库中的记录。这是jQuery Ajax方法的链接。

于 2013-08-09T11:41:37.337 回答