1

好吧,所以这一直困扰着我一段时间。我正在尝试创建一个跟踪积分的系统。页面上首先出现的是一个下拉菜单,您可以从中选择一个组。该组匹配可以在数据库中找到的组。选择其中一个组后,组成员将显示在表格中。该表有几列,每列(除了名称列)都包含一个复选框。单击其中一个(或多个)复选框并提交表单后,我希望将与这些复选框相对应的点添加到数据库中,并且出现同一组人(因此应清除所有复选框,并且下拉菜单应该仍然具有相同的值)。

Ajax 可能是处理这个问题的最好方法,但不幸的是,我没有任何使用 Ajax 的经验,所以我只是使用 php 和一些 javascript。我将尝试发布尽可能少的编码。

这将创建下拉菜单:

echo "<form method=\"post\" action=\"page.php">";
echo "</br><select name=\"squad\" id=\"squad\" onchange=\"changeSquad(this.value)\">";
while($row = mysql_fetch_array($result))
  {
  echo "<option value='". $row['squad_id'] . "'>" . $row['name'] . "</option>";   
  }
echo "</select>";

函数 changeSquad() 然后打开请求数据并创建表的文件:

if($query_run = mysql_query($query)){
    $length=0;    
     echo "<table id='form'><tr>
     <td>Member</td>
     <td>1st box</td>
     </tr>";
require 'nextfile.php';
}

这个“nextfile.php”包含大部分复选框处理、设置点、将数据添加到数据库等。它所做的最重要的事情是:

echo "</form><tr><td><input type='submit' name='submit' id='submit' value='Submit' /></td></tr>";
if(isset($_POST['submit'])){
-- Do all updates --
echo "<script> alert('Points have been updated!'); </script>";
}

我已经尝试在提交按钮之后添加它:

echo "<input type=\"hidden\" name=\"submitted\" id=\"submitted\" value=\"true\" />";

这确实最终提交了分数(显然在对其他文件进行了一些调整之后),但不会让下拉菜单中的其他组出现,并且只会删除复选框应该在的整个表格。(全部出现的是带有先前选择的组、成员名称和大量复选框的下拉菜单)

谁能帮帮我?我已经尝试了 20 多个小时的解决方案,所以我希望有人能提出解决这个问题的好建议。

4

1 回答 1

0

我拿了你的脚本: 1st Output a values from DB

<select name="squa" id="squad">
while($row = mysql_fetch_array($result))
  {
  echo '<option value="'.$row['squad_id'].'">'.$row['name'].'</option>';   
  }
</select>

使用Ajax并不复杂://当改变调用Ajax请求时

 $( "#squad" ).change(function() {
        var string = 'value='+$(this).val();  //value=to value of selected
        $.ajax({
       type: 'POST',
       data: string, //our value
       url:url, //where to make request
       beforeSend: function() { $('#somediv').html('Loading...'); },
       success:function(data){
          $('#somediv').html('').hide(); 
          $('#somediv').html(data); 
       },complete: function() {;
          $('#somediv').show();
        },error: function(){

    }
    });
});

在 Url(Php 文件)中制作表格:

下一个文件

$value = $_POST['value']; //GET THe value that has been choosen in select
// do whatever you want to do with this value in php and the result just

echo $result;

如果要重新运行数组

In Jquery $.ajax specify it dataTYpe:'json',
In php:
$result = array(
   'st'=>$value,
   'mp'=>$value
);
echo json_encode($result);

要在 Jquery 中运行完整的数组,请使用

 $('#somediv').html(data.mp+' - '+data.st);

它会自动显示在#somediv中的页面上...

我给了一个想法,尝试在谷歌上搜索更多关于 jquery 的信息,当你理解它时很容易。

于 2013-08-29T08:21:55.467 回答