【问题标题】:Adding new table row and inserting value in database php/mysql/jquery在数据库 php/mysql/jquery 中添加新表行并插入值
【发布时间】:2014-07-02 07:33:56
【问题描述】:

我正在尝试做一个试算表页面,当我向输入值添加新行并点击保存时,它不会占用表中的所有行,而是保存第一行。

PHP

 <tr class="item-row" style="font-size:12px;">
     <td class="item-name" style="margin-right: 5em;background:#A7d6F1;">
          <div class="delete-wpr">
              <textarea onkeypress="return tabE(this,event)" style="font-family: Tahoma, sans-serif;" rows="2" cols="43" maxlength="6"class="code" name="acc_code[]" id="acc_code[]"></textarea>
              <textarea onkeypress="return tabE(this,event)" readonly style="text-align:center;margin-top:-34px;margin-left:20em;font-family: Tahoma, sans-serif;" rows="2" cols="10" maxlength="6"class="type" name="type[]" id="type[]"></textarea>
              <a class="delete" href="javascript:;" title="Remove row">X</a>
          </div>
     </td>            
     <td class="item-name" align="center">
          <textarea onkeypress="return tabE(this,event)" autocomplete="off" style="font-family: Tahoma, sans-serif;" rows="2" cols="8" maxlength="6" name="int_code[]" id="int_code[]" class="intCode"></textarea>
     </td>
     <td >
          <textarea onkeypress="return tabE(this,event)" autocomplete="off" style="font-family: Tahoma, sans-serif;"rows="2" cols="15" maxlength="11" name="debit_mvt[]" id="debit_mvt[]" class="cost"></textarea>
     </td>
     <td style="">
          <textarea onkeypress="return tabE(this,event)" autocomplete="off" style="font-family: Tahoma, sans-serif;" rows="2" cols="15" maxlength="11" name="credit_mvt[]" id="credit_mvt[]" class="qty"></textarea>
     </td>
     <td>
          <textarea style="font-family: Tahoma, sans-serif;" rows="2" cols="15" maxlength="10" autocomplete="off" name="balance[]" id="balance[]" class="price" readonly></textarea>
     </td>
     <td style="background:#A7D6F1;font-family: Tahoma, sans-serif;">
          <textarea style="font-family: Tahoma, sans-serif;border:none;background-color:white"rows="2" cols="15" maxlength="10" class="deb"name="debitOld[]" id="debitOld[]" ></textarea>
     </td>
     <td style="background:#A7D6F1;font-family: Tahoma, sans-serif;">
          <textarea style="font-family: Tahoma, sans-serif;border:none;background-color:white"rows="2" cols="15" maxlength="10" class="cred"name="creditOld[]" id="creditOld[]" ></textarea>
     </td>  

添加一行

jQuery

$("#addrow").click(function(){

$(".item-row:last").after('<tr class="item-row" style="font-size:12px;"><td class="item-name" style="background:#A7d6F1;"><div class="delete-wpr"><textarea  style="font-family: Tahoma, sans-serif;" rows="2" cols="43" maxlength="6"colspan="3" class="code" name="acc_code[]" id="acc_code[]"></textarea><textarea onkeypress="return tabE(this,event)" onkeyup="return check_type()"readonly style="text-align:center;margin-top:-34px;margin-left:20em;font-family: Tahoma, sans-serif;" rows="2" cols="10" maxlength="6"class="type" name="type[]" id="type[]"></textarea><a class="delete" href="javascript:;" title="Remove row">X</a></div></td><td ><textarea  style="font-family: Tahoma, sans-serif;" rows="2" cols="8" maxlength="6" autocomplete="off" name="int_Code[]" id="int_Code[]" class="intCode"></textarea></td><td><textarea onkeypress="return tabE(this,event)"style="font-family: Tahoma, sans-serif;"rows="2" cols="15" maxlength="10" name="acc_deb[]" id="acc_deb[]" autocomplete="off" class="cost"></textarea></td><td style=""><textarea onkeypress="return tabE(this,event)"style="font-family: Tahoma, sans-serif;" rows="2" cols="15" maxlength="9" autocomplete="off" name="acc_cred[]" id="acc_cred[]" class="qty"></textarea></td><td><textarea style="font-family: Tahoma, sans-serif;" rows="2" cols="15" maxlength="10" name="balance[]" id="balance[]" class="price" readonly></textarea></td><td style="background:#A7D6F1;font-family: Tahoma, sans-serif;"><textarea style="font-family: Tahoma, sans-serif;border:none;background-color:white"rows="2" cols="15" maxlength="10" class="deb"name="debitOld[]" id="debitOld[]" ></textarea></td><td style="background:#A7D6F1;font-family: Tahoma, sans-serif;"><textarea style="font-family: Tahoma, sans-serif;border:none;background-color:white"rows="2" cols="15" maxlength="10" class="cred" name="creditOld[]" id="creditOld[]" ></textarea></td></tr>');

将数据插入mysql的PHP代码:

    $sql="INSERT INTO trialb ( acc_code,type,int_code,debit_mvt,credit_mvt,balance,debitOld,creditOld,date1,date2,comp_name,user_name,year,status,dt1,dt2 )
VALUES";
for ($i = 0; $i < count($_POST['acc_code']); $i++) {

$sql .= " ('{$_POST['acc_code'][$i]}', '{$_POST['type'][$i]}', '{$_POST['int_code'][$i]}', '{$_POST['debit_mvt'][$i]}','{$_POST['credit_mvt'][$i]}','{$_POST['balance'][$i]}','{$_POST['debitOld'][$i]}','{$_POST['creditOld'][$i]}','{$_SESSION["date1"]}','{$_SESSION["date2"]}','{$_SESSION["name"]}','{$_SESSION["user_name"]}',Now(),'opened','{$_SESSION["date1"]}','{$_SESSION["date2"]}'),";


}
$sql = substr($sql, 0, -1);

为什么不插入所有行???

【问题讨论】:

    标签: php


    【解决方案1】:

    首先,你的代码这样可读性不好,请使用适当的缩进。

    其次,永远不要在没有任何输入验证的情况下直接从 $_POST(或任何其他输入)插入。

    三、count($_POST['acc_code'])的值是多少,产生的查询$sql是什么?你需要信息,你需要调试。使用 echo 和 print_r 获取调试数据,如果是 AJAX 调用,请尝试 Firebug 或使用 error_log 将调试数据放入 php 错误日志中。

    【讨论】:

    • 首先很抱歉我的代码不是那么清晰或可读,其次计数始终为 1,就好像它没有将其余值插入到相关数组中一样。
    • 我已经在另一个页面中使用了插入方法,其中值是从 mysql 检索的,我注意到如果在加载页面时存在行并且您更改值,它会毫无问题地插入它们,但如果行你在页面加载后添加它们它看不到它们
    • 即使在我添加了行之后,我也去检查是否可以在源页面中看到它们,但它们没有显示是正常的吗?
    • 你到底是怎么提交表格的,也许这是你的问题:stackoverflow.com/questions/8198055/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2013-05-01
    • 2011-06-15
    • 2017-06-09
    相关资源
    最近更新 更多