【问题标题】:Set form name from value从值设置表单名称
【发布时间】:2014-05-09 12:39:28
【问题描述】:

我正在创建提交到数据库的第一个表单,需要一些帮助。我的大部分工作都在工作,但我卡住的地方是添加一个新行。我有一个 javascript 函数,可以让我添加任意数量的行,但它有 2 个问题。首先是使用 Javascript,当我点击提交时,php 表单似乎没有“看到”添加的新字段。第二个问题是我正在设置一个键:值关系,我不知道如何在 javascript 中设置。

问题是,正如您在代码中看到的,我正在设置一个包含 2 个字段的表格行,一个是键,另一个是值,但是当您不知道会发生什么时,如何声明在那里输入?

<script type="application/javascript">
   function addRow(S_ID, S_NAME){
        var addRow ='<tr><td><input type="text" name="" value=""></td><td><input type="text" name="" value=""></td></tr>';
        $("#applyTable").append(addRow);
        }
</script>
<table width=400>
<tr><th>Setting</th><th>Value</th></tr>
</table>

<form action="functions.php?do=save" method="POST" id="saveSettings">
<table class="myTable" border="1px" style="width:400px;"  >
<tbody id="applyTable"> 
<?
include 'db.php';
    foreach($db->query('SELECT * from settings') as $row) {
        print_r("<tr><td>" . $row[1] . "</td><td><input type=\"textbox\" name=\"
        " . $row[1] . "\" value=\"" . $row[2] . "\"></td></tr>");
    }
?>
</tbody>
</table>
<input type="submit">
<input type="button" value="Add" border="1px" onclick="addRow()" />
</form>

这是它被提交到的页面:

<? 
 if ($_REQUEST['do'] == 'save'){
include 'db.php';   
foreach ($_POST as $key => $value)
    { 
    $sql="UPDATE settings SET value = \"$value\"  WHERE name =  \"$key\"";
$db->query("$sql");
echo "$sql<br>";
    };

};
?>

任何帮助将不胜感激。

【问题讨论】:

  • 您为变量和函数提供了相同的名称addRow,该函数确实包含两个未传递的参数。
  • 您的 PHP 不读取新输入的原因是因为您没有给它们命名。您可以为此使用HTML input array
  • 谢谢 Cheezburger,我想我可以使用输入数组的技巧来设置“类型”(文本框、文本区域、真/假)和“状态”(动作/非活动) .

标签: javascript php mysql forms


【解决方案1】:

首先,key 和 value 似乎没有设置为输入元素的名称,我猜应该是这样的

   function addRow(S_ID, S_NAME){
       var addRow ='<tr><td><input type="text" name="'+s_ID+'" value=""></td><td><input type="text" name="'+S_NAME+'"    value=""></td></tr>';
       $("#applyTable").append(addRow);
    }

并且没有为点击按钮设置参数,应该是这样的:

<input type="button" value="Add" border="1px" onclick="addRow('mykey', 'myvalue')" />

表单不会在没有输入元素名称的情况下将任何字段发布到操作脚本 如果所有的键和名称都相同,只需将 mykey 和 myvalue 替换为 mykey[] 和 myvalue[] 以使其成为数组

【讨论】:

  • 我在这里添加了代码,发生了一些事情。出于某种原因,它修改了在 $value 之前使用一堆下划线发布的现有数据,以便该值看起来像“__________value” 当我执行 var_dump($_POST );我没有看到新的行数据。我可能需要把它放在一个新页面上,我注意到即使数据被传递到下一页,SQL 查询也不起作用,因为查询是 UPDATE,但这个新的最终会是 INSERT。跨度>
猜你喜欢
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多