无法保存表单

时间:2015-09-08 04:02:54

标签: javascript php jquery html forms

我有一个表单,我需要从用户那里获取i / p。表格分为两部分:左侧和右侧

在左侧部分,值将从用户处获取,就像任何普通表格一样 正确的部分,将有一个将从数据库动态生成的项目列表,每个项目也将有+按钮,用于添加放置在其中的特定产品的数量 视图如下:

enter image description here

如您所见,整个页面有一个提交按钮,所以我希望用户填写整个页面(填写左侧字段,右侧输入任意数量产品的数量),然后点击提交按钮将整个值保存在数据库中。

<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);
    }

但我无法在一次点击中存储整个页面的值,任何人都可以告诉我如何做到这一点

6 个答案:

答案 0 :(得分:1)

您需要了解一些问题才能开始:

  1. 左侧参数正在工作,所以你的表格方法等都很好。请确认您的右侧位于<form>标记内。当然,如果不是,那么那里的字段就不会随请求一起发送。
  2. 右侧没有可用的输入:
    • 您需要将项目文本与输入相关联。现在,它刚刚打印到DOM。考虑一下:
      <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,但如果您查看源代码,它将以更清晰的方式排列。

你应该一点一点地测试你的代码,以了解它的形成。调试也很适合诊断这样的问题。

希望这有帮助!