计算要添加并插入表的行

时间:2018-12-27 05:17:11

标签: php mysqli count insert

我有一个脚本,该脚本允许在页面上创建多行,然后需要在帖子上对行进行计数,然后将每行插入表中。

当我提交未向表中写入任何数据时,我使用的GUI可以使用户根据需要添加或删除行。我曾尝试将帖子的脚本更改为直接的“ $ variables”,并且可以编写但只写第一行。

我已经附上了我从WebLesson使用的动作脚本,该脚本对于一个领域很有效,但是对于多个领域,我对尝试的方法感到迷茫。

//includes
include '----';
include '---'; 
session_start();

$number = count($_POST['name']);

echo $_POST['name'] . "<br>";
echo $number . "<br>";
 if($number >= 1)
{
 echo $_POST['pasid'];

$conn = mysqli_connect($servername, $username, $password, $dbname);

$id = $_POST['pasid'];
$name = $_POST['name'];
$dose = $_POST['dose'];
$dir = $_POST['directions'];
$time = $_POST['time'];

echo $i;
for($i=0; $i<$number; $i++)
    {
    if(trim($_POST["name"][$i] != ''))
    {

        $sql = "INSERT INTO meds (id, name, dose, directions) 
VALUES('".mysqli_real_escape_string($_POST["pasid"][$i])."', 
'".mysqli_real_escape_string($_POST["name"][$i])."', 
'".mysqli_real_escape_string($_POST["dose"][$i])."', 
'".mysqli_real_escape_string($_POST["directions"][$i])."', 
'".mysqli_real_escape_string($_POST["time"][$i])."') " ;
        mysqli_query($conn, $sql);
    }
}
echo "Data Inserted";
}
else
{
 die("Connection failed: " . mysqli_connect_error());
}

我要计算要发布的行数,然后将每行提交到表中。

UI图片:

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以为每个表单元素生成唯一的name属性,然后在PHP中循环遍历它们。最简单的方法可能是在用户每次创建新行时,在name属性的末尾增加一个数字。您必须使用Javascript来做到这一点。

var suffix = 0;
function addNewRow(){
    ...
    <input type="text" name="pasid_${i}"/>   //Add incriminating suffix
    ...
    suffix++;     //Increment suffix for next time
}

然后您的PHP看起来像

$suffix = 0;
while(isset($_POST['pasid' . $suffix])){   //Keep looping until no more POST value

    //Process row $suffix, referencing all the data like $_POST['field_name'. $suffix]

    $suffix++;                            //Increment suffix for the next field
}

确保在while循环中需要检查的字段是必需的,否则用户可能会忽略输入,并且循环会过早终止。如果不需要所有字段,也可以在while循环中检查多个$_POST索引。