PHP代码不是';不允许通过我的表单发送多个输入值
我正在用我构建的应用程序撞墙。我是PHP新手(不到一个月),在导师的帮助下,我写了一个非常复杂的表单。由于保密协议,我不能将我的全部代码发送到这里作为示例。具体来说,我遇到的问题是,我的表单无法将多个值发送到两个不同的输入“插槽”。它将向数据库发送一个单一的输入值,但它应该注册不同的输入值PHP代码不是';不允许通过我的表单发送多个输入值,php,html,Php,Html,我正在用我构建的应用程序撞墙。我是PHP新手(不到一个月),在导师的帮助下,我写了一个非常复杂的表单。由于保密协议,我不能将我的全部代码发送到这里作为示例。具体来说,我遇到的问题是,我的表单无法将多个值发送到两个不同的输入“插槽”。它将向数据库发送一个单一的输入值,但它应该注册不同的输入值 <?php { foreach($results['tags'] as $part){ if ($part['category'] == "Part"){
<?php
{
foreach($results['tags'] as $part){
if ($part['category'] == "Part"){
?>
<tr>
<td><?= $part['Part']; ?></td>
<td class="text-center"><?= $product['Amount']; ?></td>
<td><input type="text" name=$product['Val1'] /></td>
<td><input type="text" name=$product['Val2'] /></td>
</tr>
<?php
}
}
}
?>
我的导师建议将此作为答案,但我不确定他的意思:
“似乎[val1/2]需要绑定到产品而不是事务。现在,它不在“标记”部分中。这有意义吗?”您试图用
$
命名您的VAR。我想您希望在那里输出php值,因此将字符串更改为如下所示:
<td><input type="text" name="<?= $product['Val1'] ?>"/></td>
“$”表示PHP变量,因此它需要位于PHP标记内。还记得用引号(“)括起回显值
圣诞快乐
因为,没有提供太多的数据。我是从我这边假设的。希望能有所帮助
将值放入value
属性中。以数组类型命名。例如Slot1[]
,Slot2[]
。。
因为,Val1
可能有多个值,所以名称为数组类型
<form action='SubmitSomePage.php' method='POST'>
<?php
{
foreach($results['tags'] as $part)
{
if ($part['category'] == "Part")
{?>
<tr>
<td><?= $part['Part']; ?></td>
<td class="text-center"><?= $product['Amount']; ?></td>
<td><input type="text" value="<?=$product['Val1'];?>" name='Slot1[]'/></td>
<td><input type="text" value="<?= $product['Val2'];?>" name='Slot2[]' /></td>
</tr>
<?php
}
}
}
?>
.
.
<input type='submit' value='Submit Details'>
</form>
.
.
SubmitSomePage.php
<?
$slot1 = $_POST['Slot1'];
$slot2 = $_POST['Slot2'];
$TotalSlot1 = sizeof($slot1);
for($i = 0; $i<$TotalSlot1;$i++)
{
$slot1Value = $slot1[$i];
$slot2Value = $slot2[$i];
$Query = "INSERT INTO TableName Set Val1='$slot1Value', Val2='$slot2Value'";
//Execute Query Here.
}
?>
答案是我需要迭代它们,因为它们不是数组并将它们附加到字符串中
这是由于
函数sendData(){
var inputs=document.getElementById('device-table').getElementsByTagName('input'),
数据=[],
名称,val1,val2;
对于(变量i=0;i1){
data.push({name:name[0],val1:inputs[i].value});
}
否则{
data.push({name:name[0],val2:inputs[i].value});
}
}
}
setTimeout(函数(){
sendData();
},30000);
}
sendData();
除非你真的想让你的两个字段名用字符命名,$
,p
,r
,o
,等等,否则你可能想用
…在新版本的php上,似乎长标签是必须的,所以它需要名称=”“
和其他输入、类等上的相同。htmlspecialchars()
可能也应该在数据周围使用,因为您将回显它。@SheaPrice如果您是php新手,这可能会有一些用处。祝你好运如果您的php设置不支持短标记,那么这可能就是原因。谢谢大家,我要到下周才能测试它,我会在解决问题后进行更新。我已经尝试过了,但我的代码中出现了一个错误(在我尝试实现这一点之前,它是完美的)。*在www.index.php第xx行中为foreach()提供的参数无效。好吧,这意味着foreach($something)中有一些东西{
你完全正确…知道如何解决这个问题吗?我已经搞乱它两天了,我什么都没做。你能var_dump
变量$results
吗?是的@switcher。变量$results是正确的。它解析一个json字符串。我想知道问题是否可能在代码的另一边(推送我信息的后端)以及它是如何接收这些输入的?这是一个合理的问题吗?我相信这可能是我想要的。我将在下周进行测试并更新。谢谢。这些都不适用于我,并不幸地破坏了我的工作代码。
<?
$slot1 = $_POST['Slot1'];
$slot2 = $_POST['Slot2'];
$TotalSlot1 = sizeof($slot1);
for($i = 0; $i<$TotalSlot1;$i++)
{
$slot1Value = $slot1[$i];
$slot2Value = $slot2[$i];
$Query = "INSERT INTO TableName Set Val1='$slot1Value', Val2='$slot2Value'";
//Execute Query Here.
}
?>
<script type="text/javascript">
function sendData() {
var inputs = document.getElementById('equipment-table').getElementsByTagName('input'),
data = [],
name, val1, val2;
for (var i = 0; i < inputs.length; i++) {
if ( inputs[i].type === 'submit') {
continue;
}
if ( inputs[i].value ) {
name = inputs[i].name.split('-val');
val1 = inputs[i].name.split('val1');
if (val1.length > 1) {
data.push({name: name[0], val1: inputs[i].value});
}
else {
data.push({name: name[0], val2: inputs[i].value});
}
}
}
window.setTimeout(function() {
sendData();
},30000);
}
sendData();