【问题标题】:PHP Form to submit multple rows for each productPHP表单为每个产品提交多行
【发布时间】:2016-06-24 19:33:34
【问题描述】:

我正在尝试构建一个包含表单的页面。提交表单后,我想提交输入字段中的所有内容,但我也想在产品更改的地方发布重复信息。

例如..

如果用户输入以下内容

名称 地址 电话号码 第一个产品 第二产品 第三产品

它将发布到我的数据库 sql。

| John Doe | 123 Cherry Lane | 555-555-5555 | Product 1 |

| John Doe | 123 Cherry Lane | 555-555-5555 | Product 2 |

| John Doe | 123 Cherry Lane | 555-555-5555 | Product 3 |

我知道如何提交 php 表单,我将如何构建一个 foreach?

谁能给我举个例子来说明我将如何实现这一目标。 我发现的一切都是为了防止这种情况发生,但我想要它。

【问题讨论】:

  • 您能展示一下到目前为止您尝试过的内容吗?
  • 我不能给你举个例子。我还没有建造它。我正在尝试做一些关于如何做的家庭作业(不是学校作业)。我已经创建了其他表单,但我只需要它们发布 1 tbl 行。
  • @Levi 您是否将此值插入数据库?

标签: php mysql


【解决方案1】:

尝试使用代码。首先计数产品项目然后for loop

<form action="" method="POST">
Name:    <input type="text" name="input[0][name]" value="">
Address:  <input type="text" name="input[0][address]" value="">
Mobile: <input type="text" name="input[0][mobile]" value="">
Product <input type="text" name="product[0][product]" value="">
Product1 <input type="text" name="product[1][product]" value="">
Product2 <input type="text" name="product[2][product]" value="">

<input type="submit" name="submit" id="submit" value="Submit">


<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

if(isset($_POST['submit'])) {
    $input = $_POST['input'];
    $product = $_POST['product'];   
    if(!empty($input) && !empty($product)){
    for($i=0; $i<count($product); $i++){        
        $fname = $input[0]['name'];
        $address = $input[0]['address'];
        $mobile = $input[0]['mobile'];
        $product = $product[$i]['product'];
        $sql = "INSERT INTO table_name (id, name, address, mobile, product) VALUES('', '$fname' , '$address', '$mobile' , '$product')";

        if (mysqli_query($conn, $sql)) {
           echo "New record created successfully";
         } else {
           echo "Error: " . $sql . "<br>" . mysqli_error($conn);
       }

       mysqli_close($conn);

    }
}
}    
?>

【讨论】:

  • 您介意张贴连接线吗? @贾基尔侯赛因
【解决方案2】:

试试这段代码

<form action="" method="POST">
Name:    <input type="text" name="input[0][name]" value="">
Address:  <input type="text" name="input[0][address]" value="">
Mobile: <input type="text" name="input[0][mobile]" value="">
Product <input type="text" name="input[0][product]" value="">
Product1 <input type="text" name="input[1][product]" value="">
Product2 <input type="text" name="input[2][product]" value="">

<input type="submit" name="submit" id="submit" value="Submit">


<?php

if(isset($_POST['submit'])) {
    $input = $_POST['input'];

    foreach($input as $values) {
        if(!empty($values['name']) && !empty($values['address']) && !empty($values['mobile']) && !empty($values['product'])) {
            $insert = $db->prepare('INSERT INTO varify (id,name, address, mobile,product) VALUES('', ?, ?, ?,?)');
            $insert->bind_value('11', $values['name'], $values['address'], $values['mobile'],$values['product']);
            $insert->execute();
        }   
    }
}

【讨论】:

  • 您介意张贴连接线吗? @Kalpesh Kikani
  • @Kalpesh Kikani $values['product'] 没有显示多个项目,因为上述条件是第一次循环正确,第二次循环不正确。
【解决方案3】:

在这里您可以使用一个更好的想法来获得 mysql 关系的好处。 首先创建两个不同的表.. 1. 用户 2.user_product 然后,当您提交表单时,您必须首先在用户表中发布数据,然后获取此用户 ID 并使用 user_id 将数据发布到 user_product 表中。 让我在这里描述两个表。

用户

  1. id(pk)
  2. 姓名
  3. 地址
  4. 电话号码

    用户产品

  5. id(PK)

  6. user_id(用户表id的引用)
  7. 产品

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2012-09-20
    • 1970-01-01
    • 2019-03-08
    • 2017-05-24
    相关资源
    最近更新 更多