【问题标题】:Dynamic Fields js/php to MySql need to submit dynamically to the databaseDynamic Fields js/php to MySql 需要动态提交到数据库
【发布时间】:2014-10-17 10:22:50
【问题描述】:

我无法从 javascript 添加行中获取值作为一行动态进入 MySql,只有表单值显示为下面的表单作为一行。我把它做成一个数组,但没有这样的运气,我已经用多种方式尝试了这段代码。我不知道我做错了什么,请写出正确的方法。

以我的代码为例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamic Fields js/php to MySql need to submit dynamically to the database</title>
<?php
require ('database.php'); 
?>
 <script type="text/javascript">
 var counter     =     1;
 var collector     =     "";

 function addfields(indx)
 {
     var tbl = document.getElementById('table_id');
     var newtr = document.createElement('tr');
     counter = counter + indx;

     newtr.setAttribute('id','tr'+counter);

     newtr.innerHTML = '<td><input type="checkbox" name="checkb'+counter+'" id="checkb'+counter+'" value="'+counter+'" onclick="checkme('+counter+')"></td><td><input type="text" name="text1[]"></td><td><textarea name="textarea1[]"></textarea></td>';

     tbl.appendChild(newtr);
 }

 function checkme(dx)
{
      collector += dx+",";
}

 function deletetherow(indx)
 {
     var col = collector.split(",");

     for (var i = 0; i < col.length; i++) 
     {
         var remvelem = document.getElementById('tr'+col[i]);
         var chckbx = document.getElementById("checkb"+col[i]);
         if(remvelem && chckbx.checked)
         {
             var tbl = document.getElementById('table_id');
            tbl.removeChild(remvelem);
        }
     }
 }
</script>
</head>
<body>
<form enctype="multipart/form-data" id="1" style="background-color:#ffffff;" action="<?php echo $_SERVER['PHP_SELF']; ?>"></form> 
<table id="table_id" >
  <tr id="tr1" class="trmain">
  <td>
  </td>
   <td>
   <input type="text" name="text1[]">
    </td>
      <td>
        <textarea name="textarea1[]"></textarea>
       </td>  
     </tr>
 </table>
<input type="button" value="Add" onClick="addfields(1);" />&nbsp;
<input type="button" value="Delete" onClick="deletetherow()" />
<input type="submit" value="Send" id="submit"  name="submit"/>

<?php
if(isset($_POST['submit'])) {
for ($i=0; $i < count($_POST['text1']); $i++ )
{
$ced = stripslashes($_POST['text1'][$i]);
$erg = stripslashes($_POST['textarea1'][$i]);
      $bnt = mysql_query("INSERT INTO tablename (first, second) VALUES ('$ced', '$erg')")or     
      die ('Error: '. mysql_error() );
}
}

?>

</body>
</html>

【问题讨论】:

  • 您在每个循环上都覆盖了$ced$erg,因此只会插入最终值。将您的 $bnt = mysql_query("INSERT INTO tablename ... 放在您的 for() 循环中。另外,你为什么要双重查询-> $result = mysql_query($bnt);?由于$bnt = mysql_query( 不需要第二个$result = mysql_query(
  • 肖恩,感谢您的回复,我已经编辑了代码。 $result=MySQL_query(... 最初分配了一条成功消息,我没有添加整个代码,抱歉。无论如何,它仍然只将第一组值发布到数据库中,我从逻辑上理解我的数组在哪里包括 MySQL。我试图爆炸数据,但我不知道这是否是我应该做的?任何进一步的建议或你能得到这个工作。再次感谢你的时间和帮助 :)

标签: javascript php mysql post dynamic


【解决方案1】:

这是任何人的永久链接:Dynamic Fields js/php to MySql need to submit dynamically to the database

如果您正在寻找这个主题的答案,那么 Sean 是对的,它实际上从未覆盖另一个,因为它只是提交给 MySQL 的第一个输入,而其他输入则被忽略,因为它不是循环的一部分。他的 innerhtml 动态 with 循环正在工作。

如果您想要代码,请在上面编辑或取自 perma。网络上并没有很多这样的工作示例,现在您可以进一步使用 jQuery 并变得更流行。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2013-06-03
    • 2018-03-11
    • 2015-11-14
    • 2016-03-24
    • 1970-01-01
    相关资源
    最近更新 更多