我有一个表单,我需要从用户那里获取i / p。表格分为两部分:左侧和右侧
在左侧部分,值将从用户处获取,就像任何普通表格一样 正确的部分,将有一个将从数据库动态生成的项目列表,每个项目也将有+按钮,用于添加放置在其中的特定产品的数量 视图如下:
如您所见,整个页面有一个提交按钮,所以我希望用户填写整个页面(填写左侧字段,右侧输入任意数量产品的数量),然后点击提交按钮将整个值保存在数据库中。
<form method="post" action"save.php">
<!--Front end code for left part-->
<label>Name:</label>
<input type="text" name="name" value="" />
</div>
<div class="span3" style="margin-left:-10px;">
<label>Number:</label>
<input type="text" name="number" value="" />
</div>
<div class="span6">
<div class="span3" >
<label>Address:</label>
<textarea name="address"></textarea>
</div>
</div>
<!--Front end code for right part-->
<table class="table table-striped table-bordered">
<tbody>
<?php
$sql=" SELECT * from menu";
$result = mysqli_query($con, $sql);
if(mysqli_num_rows($result)>0)
{
while($row = mysqli_fetch_assoc($result))
{?>
<tr>
<td> <? echo $row['dish']; ?></td>
<td class="td-actions">
<input type="text" name="quantity[]" />
<input type='hidden' name='itemname[]' value='<?php echo $row['dish']; ?>'/>
Add
</td>
</tr>
<?}
}?>
</tbody>
</table>
<button name="submit" value="submit" >Submit</button>
</form>
我可以通过此代码保存左侧的值
$name = mysqli_real_escape_string($con, $_POST['name']);
$number = mysqli_real_escape_string($con, $_POST['number']);
$address = mysqli_real_escape_string($con, $_POST['address']);
$sql= "INSERT INTO cart (name,number, address) VALUES ('$name','$number','$address')";
if(!mysqli_query($con,$sql))
{
echo "Error: " . $sql . "<br>" . mysqli_error($con);
}
但我无法在一次点击中存储整个页面的值,任何人都可以告诉我如何做到这一点
答案 0 :(得分:1)
您需要了解一些问题才能开始:
<form>
标记内。当然,如果不是,那么那里的字段就不会随请求一起发送。 <input type='hidden' name='itemname[]' value='<?php echo $row['prodname']; ?>'/>
name=quantity[]
。方括号是给你阵列的东西。没有括号,您将永远无法单独保存它们。
$i = 0;
while($i < count($itemname)){
$name = $itemname[$i];
$quant = $quantity[$i];
$i++;
}
该粗略代码 - 保证不是复制粘贴安全 答案 1 :(得分:1)
是的,你必须为左侧部分制作2个函数,为右侧部分制作另外2个函数,因为您可以保存左侧部分的数据,名称,地址等,同样为右侧部分创建更新功能
fucntion update()
{
$new = $_POST['update_qty'] // or use a count variable for quantity update
$sql = "UPDATE TABLE_NAME SET num_of_widgets = :$new (or $count) WHERE username = :_SESSION['username'] ";
$st= $conn->prepare($sql);
$st->bindValue(":username",$_SESSION['username'],PDO::PARAM_STR);
$st->bindValue(":new",$_SESSION['$new'],PDO::PARAM_STR);
$st->execute();
$row = $st->fetch();
foreach($row as $update_qty)
{
echo "update_qty['quantity']";
}
现在使用........
if(isset($_POST['submit']))
{
update();
}
答案 2 :(得分:0)
更改右侧部分的代码,如下所示
<input type="text" name="quantity[]" />
现在您将能够将数量作为数组获得,您可以迭代此数组并逐个保存。
答案 3 :(得分:-1)
1)通过js或jquery制作一个对象并在更新时更改您的值(单击添加按钮)
2)当用户点击提交按钮时,你应该通过Ajax方法(通过js或jquery)将你的对象传递给外部的php文件
3)在获取该对象并将其保存到变量后的php文件中,您应该使用json_decode()函数将其解码为数组
4)现在您可以将每个插入数据库
答案 4 :(得分:-1)
更改此代码:
<input type="text" name="quantity[]">
使用此[],您将获得数组中的所有数量。
答案 5 :(得分:-1)
一个好习惯是用户print_r();看你的帖子数组是什么样的。
打印($ _ POST);
这应该可以让您了解发布的内容和未发布的内容,或者以您期望的方式发布内容。
在这种情况下,我会做以下
<?
print_r($_POST);
?>
<form action='' method='post'>
<table>
<lable>Firstname: </lable>
<input type='text' name='firstname' value=''> </input>
<lable>Lastname: </lable>
<input type='text' name='lastname' value=''> </input>
</table>
<table>
<lable>Items: </lable>
<input type='number' name='Items[]' value=''> </input>
</table>
<input type='submit'> </input>
</form>
在页面顶部你可以输入print_r($ _ POST);这是“漂亮的打印”,在显示视图中它可能会显示为blob,但如果您查看源代码,它将以更清晰的方式排列。
你应该一点一点地测试你的代码,以了解它的形成。调试也很适合诊断这样的问题。
希望这有帮助!