【问题标题】:Form loop db insertion + javascript altering表单循环数据库插入 + javascript 更改
【发布时间】:2010-03-13 08:32:03
【问题描述】:

在我重写所有代码之前,我基本上需要检查是否有更简单的方法来做到这一点。我有一个相当大的表单,每个输入的末尾都用 [] 命名,因此我可以通过 php 循环以方便插入。

            <input type="hidden" name="currentdate[]" value="<?php echo date('mdY'); ?>">
                <td><input style="width: 50px" type="text" name="jackname[]" /></td>
                <td><input style="width: 20px" type="text" name="jackkey[]" /></td>
                <td><input style="width: 50px" type="text" name="jackbeg[]" /></td>
                <td><input style="width: 50px" type="text" name="jackend[]" /></td>
                <td><input style="width: 50px" type="text" name="jackbegveh" /></td>
                <td><input style="width: 50px" type="text" name="jackbegmon[]" /></td>
                <td><input style="width: 50px" type="text" name="jackendveh" /></td>
                <td><input style="width: 50px" type="text" name="jackendmon[]" /></td>
                <td><input style="width: 50px" type="text" name="jacktx" disabled /></td>

还有很多字段,但你明白了。然后我使用

foreach ($_POST['jackname'] as $row=>$name) 
{ 
    $jackname = $name;
    $date = $_POST['currentdate'][$row];
    $jackkey = $_POST['jackkey'][$row];
    $jackbeg = $_POST['jackbeg'][$row];
    $jackend = $_POST['jackend'][$row];
    $jackbegveh = $_POST['jackbegveh'][$row];
    $jackbegmon = $_POST['jackbegmon'][$row];
    $jackendveh = $_POST['jackendveh'][$row];
    $jackendmon = $_POST['jackendmon'][$row];
    $jacktx = $_POST['jacktx'][$row];
    if ($jacktx == '') { 
        $jacktx = '0'; 
    }

    if (empty($jackkey)) {
        echo 'Skipped empty! <br />';

    } else {
        mysql_query("INSERT INTO `ticket_counts_jackson` VALUES('', '" . $date . "', '" . $jackname . "', '" . $jackkey . "', '" . $jackbeg . "', '" . $jackend . "', '" . $jackbegveh . "', '" . $jackbegmon . "', '" . $jackendveh . "', '" . $jackendmon . "', '" . $jacktx . "')", $mysql_link) or die(mysql_error()); 
        echo 'Added the info the db! <br />';

    }
} 

我使用上面的方法循环表单并将其添加到数据库中。现在我的主要问题。我还想添加一些 javascript 来做一些数学运算。基本上($jackendveh - $jackbegveh) - ($jackendmon - $jackbegmon) 并在jacktx 中显示。目前,我知道添加数学计算的唯一方法是将每个输入重命名为唯一名称,然后将我的插入从 1 个插入重写为 8 个插入。

【问题讨论】:

    标签: php javascript forms


    【解决方案1】:

    我会像这样为每个输入字段添加一个 ID

            <td><input id="jackname" style="width: 50px" type="text" name="jackname[]" /></td>
            <td><input id="jackkey" style="width: 20px" type="text" name="jackkey[]" /></td>
            <td><input id="jackbeg" style="width: 50px" type="text" name="jackbeg[]" /></td>
            <td><input id="jackend" style="width: 50px" type="text" name="jackend[]" /></td>
            <td><input id="jackbegveh" style="width: 50px" type="text" name="jackbegveh" /></td>
            <td><input id="jackname" style="width: 50px" type="text" name="jackbegmon[]" /></td>
            <td><input id="jackname" style="width: 50px" type="text" name="jackendveh" /></td>
            <td><input id="jackendmon" style="width: 50px" type="text" name="jackendmon[]" /></td>
            <td><input id="jacktx" style="width: 50px" type="text" name="jacktx" disabled /></td>
    

    然后使用 jQuery 你应该可以这样做

    $(document).ready(function(){
       $("input").change(function(){
          var value = $("#jackendveh").val() - $("#jackbegveh").val() - $("#jackendmon").val() - $("#jackbegmon").val();
          $("#jacktx").val(value);
       });
    });
    

    【讨论】:

    • 虽然我很想深入研究 jquery,但我不知道如何添加它,哈哈。
    • 更正,我添加了 jquery,但我得到的只是 NaN
    • 您是否将 ID 添加到 HTML 中?
    【解决方案2】:

    我认为这很简单

    // Function to save sql in array
    function save_sql($table,$data,$ref)
        {
        if(!empty($data)) foreach($data as $k => $v) $str .= "$k = '$v',"; $str = substr($str,0,-1);
        $sql = "INSERT INTO $table SET $str";
        $run = mysql_query($sql) or die(mysql_error() . "-Ref# $ref");
        return $run;
        }
    // Extract post arrays into variables
    extract ($_POST);
    
    foreach ($_POST['jackname'] as $row=>$name) 
    { 
        $jackname = $name;
        $date = $currentdate[$row];
        if ($jacktx[$row] == '') { 
            $jacktx[$row] = '0'; 
        }
    
        if (empty($jackkey)) {
            echo 'Skipped empty! <br />';
    
        } else {
        save_sql("ticket_counts_jackson",array('date'=>$currentdata[$row],
                                                'jackname'=>$name,'jackkey'=>$jackkey[$row],
                                                'jackbeg'=>$jackbeg[$row], 'jackend'=>$jackend[$row])
                                                ,"An error while process your request");
        }
    } 
    

    【讨论】:

      【解决方案3】:

      我取自 @Travis 并修改了他的 jquery 以适应我的情况,如下所示:

      <script type="text/javascript">
      $(document).ready(function(){
             $("input").change(function(){
                    var value = $("#jackendveh").val() - $("#jackbegveh").val();
                    var valuetwo = $("#jackendmon").val() - $("#jackbegmon").val();
                    var valuethree = value - valuetwo;
                    $("#jacktx").val(valuethree);
                 });
              });
      </script>
      

      所以我将在每个表单部分拥有唯一的 id,并为每个部分设置单独的 jquery 函数,并使用我原来的 sql 循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-22
        • 1970-01-01
        • 1970-01-01
        • 2013-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-20
        相关资源
        最近更新 更多