Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在更改时替换html表的单列_Php_Javascript_Xml_Ajax_Html Table - Fatal编程技术网

Php 如何在更改时替换html表的单列

Php 如何在更改时替换html表的单列,php,javascript,xml,ajax,html-table,Php,Javascript,Xml,Ajax,Html Table,我很难找到一种在不重新加载整个表的情况下更新html表中的列的有效方法。该表是一个球员统计数据列表,所有这些数据都存储在我的MYSQL数据库中,并加载到表中,最后一列除外。表的最后一列中的数据来自XML文件。页面上有一个select下拉列表,当用户更改它时,我需要页面对XML数据进行一些计算,并只重新加载表的最后一列,而不必进行AJAX调用并重新加载整个stats表。目前,我重新加载整个表,这是相当缓慢的。这是我生成表格的方式: echo '<table name="currentTabl

我很难找到一种在不重新加载整个表的情况下更新html表中的列的有效方法。该表是一个球员统计数据列表,所有这些数据都存储在我的MYSQL数据库中,并加载到表中,最后一列除外。表的最后一列中的数据来自XML文件。页面上有一个select下拉列表,当用户更改它时,我需要页面对XML数据进行一些计算,并只重新加载表的最后一列,而不必进行AJAX调用并重新加载整个stats表。目前,我重新加载整个表,这是相当缓慢的。这是我生成表格的方式:

echo '<table name="currentTable" id="battersTable">
                <thead>
                    <tr>
                        <th>&nbsp </th>
                        <th>NAME</th>
                        <th>AGE</th>
                        <th>
                            <select class="posSelect" onchange="posSelect(this.value, this.parentNode.parentNode.parentNode.parentNode)">
                                <option value="ALL">POS: ALL</option>
                                <option value="C">POS: C</option>
                                <option value="1B">POS: 1B</option>
                                <option value="2B">POS: 2B</option>
                                <option value="SS">POS: SS</option>
                                <option value="3B">POS: 3B</option>
                                <option value="MI">POS: MI</option>
                                <option value="CI">POS: CI</option>
                                <option value="OF">POS: OF</option>
                            </select>
                        </th>
                        <th>TEAM</th>
                        <th>AB</th>
                        <th>R</th>
                        <th>HR</th>
                        <th>RBI</th>
                        <th>SB</th>
                        <th>AVG</th>';
                        if($draftType == 0){
                            echo '<th>ADP</th>
                        <th id="chance">CHANCE</th>';
                        }else if($draftType == 1){
                            echo '<th>$</th>';
                        }
                    echo'</tr></thead>
            <tbody id="replacebatters">';

while($row = mysqli_fetch_array($resultbat, MYSQLI_ASSOC))
  {     
    if(array_key_exists($row['NAME'], $crossed)){
        echo "<tr class='drafted' id='" . $row['NAME'] . "'>";
    }else if(array_key_exists($row['NAME'], $rostered)){
        echo "<tr class='roster' id='" . $row['NAME'] . "'>";
    }else if($n&1){
        echo "<tr id='" . $row['NAME'] . "'>";
    }else{
        echo "<tr class='alt' id='" . $row['NAME'] . "'>";
    }

  echo '<th>Draft</td>';
  echo '<td>' . $row['NAME'] . "</td>";
  echo "<td>" . $row['AGE'] . "</td>";
  echo "<td>" . $row['POS'] . "</td>";
  echo "<td>" . $row['TM'] . "</td>";
  echo "<td>" . $row['AB'] . "</td>";
  echo "<td class='runs'>" . $row['R'] . "</td>";
  echo "<td class='hr'>" . $row['HR'] . "</td>";
  echo "<td class='rbi'>" . $row['RBI'] . "</td>";
  echo "<td class='sb'>" . $row['SB'] . "</td>";
  echo "<td class='avg'>" . $row['AVG'] . "</td>";
if ($draftType == 0)
{
    $player = $MDCxml->xpath('//player[@name="' . $row['NAME'] . '"]');
    if (is_array($player) && count($player)) {
        $player = $player[0];
    } else {
        continue; // not found
    }

    $attr = $player->attributes(); 

    $adp = (float) $attr['adp'];
    $early = (int) $attr['early'];      

    $stdev = -0.42+0.42*($adp-$early);

    if($stdev<0)
        $stdev = 1;
    $chance =number_format(((1-NORMDIST($pickNumber,$adp,$stdev,TRUE))*100), 0);

    echo "<td class='adp'>".$adp."</td>";
    echo "<td class='odds'>".$chance."%</td>";
}elseif ($draftType == 1){
    echo "<td class='dollar'>$14</td>";
}     
  echo "</tr>";
  $n = ++$n;
  }
echo "</tbody></table>";
echo'
 
名称
年龄
位置:全部
位置:C
位置:1B
位置:2B
位置:SS
位置:3B
位置:米
位置:CI
位置:OF
团队
AB
R
人力资源
打点
某人
平均值';
如果($draftType==0){
回声ADP
机会';
}else if($draftType==1){
回音“$”;
}
回声'
';
而($row=mysqli\u fetch\u数组($resultbat,mysqli\u ASSOC))
{     
如果(数组\键\存在($row['NAME'],$crossed)){
回声“;
}else if(数组键存在($row['NAME'],$rostered)){
回声“;
}其他如果($n&1){
回声“;
}否则{
回声“;
}
回音“草稿”;
回显'.$row['NAME'].'';
回显“$row['AGE']”;
回显“$row['POS']”;
回显“$row['TM']”;
回显“$row['AB']”;
回显“$row['R']”;
回显“$row['HR']”;
回显“$行['RBI']”;
回显“$row['SB']”;
回显“$row['AVG']”;
如果($draftType==0)
{
$player=$MDCxml->xpath('//player[@name=“”。$row['name'].']”);
if(is_数组($player)和计数($player)){
$player=$player[0];
}否则{
继续;//找不到
}
$attr=$player->attributes();
$adp=(浮动)$attr['adp'];
$early=(int)$attr['early'];
$stdev=-0.42+0.42*($adp-$early);
如果($stdev),您可以查看参考文档。在同一页上,本节有几个关于如何使用XMLHttpRequest和如何进行AJAX调用的链接

首先,您可以看看这个未经测试的代码

HTML:

ajaxUpdateChance
检索
赔率
列的数据。
updateChance
迭代
赔率
列条目,并从
数据
数组设置新文本。
数据
数组应为JSON数组。

您可以查看参考文档。在同一页上,节ion有几个关于如何使用XMLHttpRequest和如何进行AJAX调用的链接

首先,您可以看看这个未经测试的代码

HTML:


ajaxUpdateChance
检索
赔率
列的数据。
updateChance
迭代
赔率
列条目,并从
数据
数组中设置新文本。
数据
数组应该是JSON数组。

是的,ajax是我当前更新整个统计表的方式。我猜我要问的是我应该得到什么样的响应,以及我应该如何更新“唯一机会”列。@rodzilla您已经使用jQuery了吗?您想用
class=“赔率”更新列吗
?是的,我正在使用jQuery,这是正确的。当用户更改“轮数”下拉列表时,我想为每个玩家更新列
class='赔率'
。@rodzilla这意味着,您需要(玩家,赔率)成对更新列。@rodzilla请查看更新的答案。我假设服务器只发送
赔率
条目作为一个文本字符串数组,编码为JSON。是的,ajax是我当前更新整个统计表的方式。我想我问的是我应该得到什么作为响应,以及我应该如何更新唯一的CHANCE列。@rodzilla你已经使用jQuery了吗?你想用
class=“赔率”
更新列吗?是的,我正在使用jQuery,这是正确的。当用户更改回合下拉列表时,我想用
class=“赔率”
为每个玩家更新列。@rodzilla这意味着,你需要(玩家,赔率)成对更新列。@rodzilla请查看更新的答案。我假设服务器只发送
赔率
条目作为文本字符串数组,编码为JSON。
echo "Current Round: ";
    echo "<select id='round' size='1' onchange='***NOT SURE WHAT TO DO HERE***'>";

    for($q = 1; $q <= $rosterSizeRow['roster_size']; $q++)
    {
        if ($q == $_GET['round'])
        {
            echo "<option value=".$q." selected> ".$q." </option>";
        }else{
            echo "<option value=".$q."> ".$q." </option>";
        }
    }
    echo "</select>";
<div>
    <label for="round">Round:</label>
    <select id="round" name="round" onchange="ajaxUpdateChance(this)">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3" selected>3</option>
        <option value="4">4</option>
    </select>
</div>
function updateChance(data)
{
    var table = $('#battersTable');
    $('.odds', table).each(function(index, element) {
                               $(element).text(data[index] + '%');
                           });
}

function ajaxUpdateChance(el) {
    var round = el.value;
    $.ajax({ url: 'http://www.example.com/update_chance.php',
             data: { round: round },
             dataType: 'json',
             success: updateChance });
}