gpt4 book ai didi

php - 从动态创建的输入字段插入正确的数据

转载 作者:行者123 更新时间:2023-11-29 13:21:27 26 4
gpt4 key购买 nike

我需要将以下输入中的数据插入到数据库中。全部<div class="clone">可以使用 jquery 克隆,它还会为名称添加 +1,例如下一个创建的 div 将具有名为 name="npm[]1"、name="apm[]1"等的输入。
<div class="list" id="sub">部分列出了可以检查的商店的子类别(商店可以有多个子类别),并且它们的名称也获得+1。这样可以吗?

<div class="clone">
<label>Shop name</label><input type="text" name="npm[]0" id="npm" required>
<label>Address</label><input type="text" name="apm[]0" id="apm" required>
<label>City</label><input type="text" name="mipm[]0" id="mipm" required>
<label>Working hours</label><input type="text" name="rv[]0" id="rv" required>
<label>Tel</label><input type="text" name="ktf[]0" id="ktf" required>
<label>Mob</label><input type="text" name="ktm[]0" id="ktm" required>
<label>E-mail</label><input type="text" name="kea[]0" id="kea" required>
<label>Contact person</label><input type="text" name="ipko[]0" id="ipko" required>

<a id="select" class="ctpct">Select shop subcategory</a>
<div class="list" id="sub">
<?php
$a="select a.id,a.cat,b.x,b.subcat,b.cat_id from cat a
inner join
subcat b
on a.id = b.cat_id
where b.cat_id !=1
order by a.id";

$res = mysql_query($a) or die(mysql_error());

$cat = '';

while ($re = mysql_fetch_array($res))
{
if( $cat === '' )
{
$cat = $re["cat"];
echo "<div class='catdis'>";
echo "<h2>$cat</h2>";
}
elseif( $cat !== $re["cat"] )
{
$cat = $re["cat"];
echo "</div>";
echo "<div class='catdis'>";
echo "<h2>$cat</h2>";
}

$subcat= $re["subcat"];
$id= $re["x"];

echo "<input type='checkbox' name='subcat[]0' value='$id'> $subcat<br />";

}

?>
</div>
</div>

PHP 部分:

foreach ($_POST as $key => $value) {
$values = mysql_real_escape_string($value);

$query2 = "INSERT INTO shops(n, a, c, wh, tel, mob, mail, con) VALUES ('$values')";
$rs2=mysql_query($query2) or die(mysql_error());
}

现在,我的 php 部分打印出“列计数与第 1 行的值计数不匹配”,这可能是因为在该克隆 div 下我有更多的输入,正常的输入。
我是 php 新手,所以你能帮我解决这个问题吗?我需要它为每个商店插入数据,从表“shops”中的输入“商店名称”到“联系人”,以及表“shop_subcat”中选定的子类别以及 subcategory_id 和 shop_id
谢谢!

最佳答案

您应该为输入字段指定名称,例如 name="apm[]"。 PHP 特别对待以 [] 结尾的名称,它将所有输入转换为数组。所以你可以这样做:

foreach ($_POST['apm'] as $apm) {
...
}

处理所有这些输入。

您的 name="apm[]0" 不遵循此模式,因此它不起作用。

此外,从您的输入中删除 id 属性。 ID 必须是唯一的,当您克隆 DIV 时,您将创建重复项。

要解决 SQL 错误,您需要修复查询。您列出了要插入的 7 列,因此您必须提供 7 个值。

$input_count = count($_POST['npm']);
for ($i = 0; $i < $input_count; $i++) {
$n = mysql_real_escape_string($_POST['npm'][$i]);
$a = mysql_real_escape_string($_POST['apm'][$i]);
// Repeat above pattern for all the other inputs
$query2 = "INSERT INTO shops(n, a, c, wh, tel, mob, mail, con)
VALUES ('$n', '$a', '$c', '$wh', '$mob', '$mail', '$con')";
$rs2=mysql_query($query2) or die(mysql_error());
}

关于php - 从动态创建的输入字段插入正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com