【问题标题】:Saving multiple form data to mysql using php使用php将多个表单数据保存到mysql
【发布时间】:2015-03-24 05:00:51
【问题描述】:

我有一个表格表单,它有一个添加新行按钮,单击该按钮会在表格中添加一个新行。我正在尝试在单击保存按钮时保存 MySQL 中的所有行。

无论我添加多少行,我编写的代码都只保存一行。有人可以告诉我我做错了什么。

我在 Google 上搜索过,但找不到任何地方。

这是我的代码:

保存.php

<?php
include('connection.php');

if(isset($_POST['submit'])){

    $row_data = array();
    foreach($_POST['category'] as $row=>$category){
        $category = mysql_real_escape_string($category);
        $itemName = mysql_real_escape_string($_POST['itemName'][$row]);
        $brand = mysql_real_escape_string($_POST['brand'][$row]);
        $model = mysql_real_escape_string($_POST['model'][$row]);
        $sellingPrice = mysql_real_escape_string($_POST['sellingPrice'][$row]);

        $row_data[] = "('$category','$itemName','$brand','$model','$sellingPrice')";
    }
}
if(!empty($row_data)){
    $insert_query = mysql_query("INSERT INTO sale(Category,ItemName,Brand,Model,SellingPrice) VALUES".implode(',', $row_data));

    if(!$insert_query){
        echo "Error: " . mysql_error();
    }else{
        echo "Data Saved Successfully";
    }
}
?>

这是我的html表单

<form name="form1" id="myForm" action="saveSale.php" method="post">
                    <tr class="cloneme">
                        <td><input type="text" name="category[]"></td>
                        <td><input type="text" name="itemName[]"></td>
                        <td><input type="text" name="brand[]"></td>
                        <td><input type="text" name="model[]"></td>
                        <td><input type="text" name="sellingPrice[]"></td>
                    </tr>
                </tbody>
            </table>
        </div>
        <div class="eventButtons">
            <input type="submit" name="submit" id="submit" value="Save">
            <input type="reset" name="reset" id="reset" value="Clear"  class="btn">
        </div>
    </form>

【问题讨论】:

标签: php html


【解决方案1】:

您在 for 循环之外插入数据,因此它只插入最后一行或数据。您要做的是将插入查询放在 foreach or for loop

if(isset($_POST['submit'])){

    $row_data = array();
    for($i = 0 ; $i < count($_POST['category']);$i++){
        $category = mysql_real_escape_string($_POST[$i]['category']);
        $itemName = mysql_real_escape_string($_POST[$i]['itemName']);
        $brand = mysql_real_escape_string($_POST[$i]['brand']);
        $model = mysql_real_escape_string($_POST[$i]['model']);
        $sellingPrice = mysql_real_escape_string($_POST[$i]['sellingPrice']);
        $insert_query = mysql_query("INSERT INTO sale(Category,ItemName,Brand,Model,SellingPrice) VALUES ('$category','$itemName','$brand','$model','$sellingPrice')"); 
        if(!$insert_query){
            echo "Error: " . mysql_error();
        }else{
           echo "Data Saved Successfully";
        }
    }
}

【讨论】:

  • 纳伦德拉·西索迪亚是对的。 INSERT 语句应该在循环中。
  • @Narendra Sisodia 我试过你的代码,但它给了我这个错误:Undefined Offset 0 in all the lines
  • @IndraGotamey 能否请您向我们展示您在 $_POST 中收到的数组结构,以便让for 针对该特定循环进行循环
【解决方案2】:

由于我没有足够的声誉,我将我的评论添加为答案。

您的代码很好。它应该工作。克隆行时可能会出现问题,可能是它没有被添加到form 标签下。您可以通过转储$row_data 变量来验证它。

请分享您克隆该行的javascript代码,它将帮助我们解决您的问题。

【讨论】:

  • 这是我的 javascript,用于克隆行:$('#addNew').on('click',function(){ var clone = $('table.itemTable tr.cloneme:first').clone(); console.log(clone); clone.append("&lt;td&gt;&lt;div class='deleteAdded'&gt;Remove&lt;/div&gt;&lt;/td&gt;") $('table.itemTable').append(clone); });
  • 您可以尝试在form 标签下添加&lt;table class="itemTable"&gt; 行。由于您的代码未显示打开 table 标记。这就是问题所在。使用开发人员工具并检查新克隆行的添加位置。
  • 谢谢你....这就是问题所在。我把表单标签放在了错误的地方。现在我完全按照你说的做了,它正在工作。坦克你
【解决方案3】:

您需要通过使用count($_POST['category']) 计算array 值来在for 循环中运行查询

if(isset($_POST['submit'])){

    $row_data = array();
    for($i= 0; $i <count($_POST['category']);$i++){
        $category = mysql_real_escape_string($_POST[$i]['category']);
        $itemName = mysql_real_escape_string($_POST[$i]['itemName']);
        $brand = mysql_real_escape_string($_POST[$i]['brand']);
        $model = mysql_real_escape_string($_POST[$i]['model']);
        $sellingPrice = mysql_real_escape_string($_POST[$i]['sellingPrice']);
        $insert_query = mysql_query("INSERT INTO sale(Category,ItemName,Brand,Model,SellingPrice) VALUES ('$category','$itemName','$brand','$model','$sellingPrice')"); 
        if(!$insert_query){
            echo "Error: " . mysql_error();
        }else{
           echo "Data Saved Successfully";
        }
    }
}

【讨论】:

  • 我试过你的代码,但它给了我这个错误:Undefined Offset 0 in all the lines
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多