Javascript 将多个HTML表单结果添加到mysql数据库
我有一个页面,其中:Javascript 将多个HTML表单结果添加到mysql数据库,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我有一个页面,其中: 用户注册到页面(存储在数据库中的所有数据) 他们用自己的用户名登录 当他们登录后,他们应该用48个选项和5个输入字段填写HTML表单。选择框如下面的示例所示 <td>Team 1</td> <select class="combobox" id="m0"> <option>Not chosen</option> <option>1</option>
<td>Team 1</td>
<select class="combobox" id="m0">
<option>Not chosen</option>
<option>1</option>
<option>X</option>
<option>2</option>
</select>
<td>Team 2</td>
<td>Team 3</td>
<select class="combobox" id="m1">
<option>Not chosen</option>
<option>1</option>
<option>X</option>
<option>2</option>
</select>
<td>Team 4</td>
我循环所有选择并从输入字段中获取值,然后发送一封包含所有答案的邮件,但我想将所有这些数据保存到数据库中,并将其连接到唯一的用户名,这样当用户登录时,我就可以填充他们之前选择的所有数据。我的数据库中有一个名为“results”的表,我已经为每个答案创建了列(现在有54列…),但是有没有更聪明的方法来做到这一点?在代码中如何将这些插入数据库?所以我的问题是:
事实上,你根本不需要JavaScript 在表单周围添加适当的属性,确保正确添加
method=
和action=
属性
给出所有输入、选择和文本区域name=
属性。如果您有重复和相关的输入,请将它们全部命名为somename[]
,它将在PHP中显示为一个iterable数组
从表单中删除JavaScript。你不需要它。。。然而(我们会到达那里)
在PHP端,确保您的页面与表单的action=
属性中的URL匹配,该属性接受表单的方法=
指定的GET/POST请求
在PHP中执行您想要的任何处理,包括验证、数据库操作和数据邮寄。您将在$\u POST
superglobal中看到它
什么时候需要JavaScript
- 在客户端验证表单输入,以帮助用户这不应该代替服务器端验证,而是另外强>
- 使用AJAX提交文章而不离开页面
<?PHP
if ($_POST) {
$selections = array();
for ($1 = 1; $i <= 48; $i++) {
if (isset($_POST['m'.$i]) && !empty($_POST['m'.$i])) {
$selections['m'.$i] = 1; // presumably "checked" so probably binary in the DB
}
}
foreach ($selections as $key => $value) {
$fieldNames .= " ".$key.",";
$fieldValues .= " '".$value."',";
}
if (isset($_POST['field1'] && !empty($_POST['field1'])) {
$fieldNames .= " field1,";
$fieldValues .= " '".$_POST['field1']."',";
}
if (isset($_POST['field2'] && !empty($_POST['field2'])) {
$fieldNames .= " field2,";
$fieldValues .= " '".$_POST['field2']."',";
}
if (isset($_POST['field3'] && !empty($_POST['field3'])) {
$fieldNames .= " field3,";
$fieldValues .= " '".$_POST['field3']."',";
}
if (isset($_POST['field4'] && !empty($_POST['field4'])) {
$fieldNames .= " field4,";
$fieldValues .= " '".$_POST['field4']."',";
}
if (isset($_POST['field5'] && !empty($_POST['field5'])) {
$fieldNames .= " field5,";
$fieldValues .= " '".$_POST['field5']."',";
}
$fieldNames = substr($fieldNames ,0,(strlen($fieldNames) -1)); // remove trailing commas
$fieldValues = substr($fieldValues,0,(strlen($fieldValues)-1)); // remove trailing commas
$query = "INSERT INTO table_name (";
$query .= " ".$fieldNames." ";
$query .= ") values (";
$query .= " ".$fieldValues." ";
$query .= ")";
// Now you use your DB connection to execute the MySQL query..
// Mind you, this changes a bit to be arrays if you're using PDO, but this can work.
}
?>
这些不是复选框,而是选择。有一点不同。我认为你可以用json类型存储这个问题和答案,并且你可以用简单的方式访问它们。@AmirHabibzadeh什么?为什么?请正常提交表格。@SecondRikudo是的,我已经更新了问题
<?PHP
if ($_POST) {
$selections = array();
for ($1 = 1; $i <= 48; $i++) {
if (isset($_POST['m'.$i]) && !empty($_POST['m'.$i])) {
$selections['m'.$i] = 1; // presumably "checked" so probably binary in the DB
}
}
foreach ($selections as $key => $value) {
$fieldNames .= " ".$key.",";
$fieldValues .= " '".$value."',";
}
if (isset($_POST['field1'] && !empty($_POST['field1'])) {
$fieldNames .= " field1,";
$fieldValues .= " '".$_POST['field1']."',";
}
if (isset($_POST['field2'] && !empty($_POST['field2'])) {
$fieldNames .= " field2,";
$fieldValues .= " '".$_POST['field2']."',";
}
if (isset($_POST['field3'] && !empty($_POST['field3'])) {
$fieldNames .= " field3,";
$fieldValues .= " '".$_POST['field3']."',";
}
if (isset($_POST['field4'] && !empty($_POST['field4'])) {
$fieldNames .= " field4,";
$fieldValues .= " '".$_POST['field4']."',";
}
if (isset($_POST['field5'] && !empty($_POST['field5'])) {
$fieldNames .= " field5,";
$fieldValues .= " '".$_POST['field5']."',";
}
$fieldNames = substr($fieldNames ,0,(strlen($fieldNames) -1)); // remove trailing commas
$fieldValues = substr($fieldValues,0,(strlen($fieldValues)-1)); // remove trailing commas
$query = "INSERT INTO table_name (";
$query .= " ".$fieldNames." ";
$query .= ") values (";
$query .= " ".$fieldValues." ";
$query .= ")";
// Now you use your DB connection to execute the MySQL query..
// Mind you, this changes a bit to be arrays if you're using PDO, but this can work.
}
?>