从根据输入的用户数据迭代的表单将数据插入MySQLi数据库

时间:2014-04-08 01:34:46

标签: php html mysqli

我有一个循环,根据输入的数字迭代多次。循环迭代并动态生成所需数量的表单。我想使用收集的表单数据存储在数据库中。

我的循环正在运行。表单的生成次数与指定的次数相同。数据将插入到数据库中,但表列显示空白数据。正在创建行但列是空白的。

我尝试了很多但是找不到代码的错误。任何帮助将不胜感激。

<form action = '<?php echo $_SERVER['PHP_SELF']; ?>' method = 'post'>
    How many questions ?
        <input type = 'number' name = 'number1'>
        <input type = 'submit' value = 'go'>
</form>


<?php
$number = $_POST['number1'];
?>


<?php
for($i = 1; $i<$number; $i++)
{
?>
<form action = '<?php echo $_SERVER['PHP_SELF']; ?>' method = 'post'>
<input type = 'text' name = 'name<?php echo $i; ?>'>
<?php
}
?>

<input type = 'submit' value = 'submit'>

<?php
for($i = 1; $i<$number; $i++)
{
$namee = $_POST['name'.$i];
$user = 'root' ;
$password = 'password';
$host = 'localhost' ;
$database = 'database1';

$db = mysqli_connect($host, $user, $password, $database) or die('Error querying') ;

$query = "INSERT INTO table1(question)" . "VALUES ('$namee')" ;

mysqli_query($db, $query) ;

mysqli_close($db);

}

?>

1 个答案:

答案 0 :(得分:0)

编辑:哦,当你编辑你的问题时......

答案在这里: $_POST['name.$i'];

将其更改为$_POST['name'.$i];并阅读有关连接here的内容。

Edit2:您没有检查是否发送了变量。当您点击第一个提交按钮时,您没有向$_POST['name*']提供任何文本,因为正在创建该表单。当您使用填充名称点击提交时,帖子中没有数字。在这里你有重写的脚本。寻找那里的一切。你不需要创建mysql连接X次,一次是enought。另请参阅我为您过滤函数,因为您没有使用PDO语句。您可以在此处查看intval()功能。您的家庭作业将是了解如何过滤$name。然后还检查用户是否真正填写表格非常重要。这个脚本甚至没有达到50%的好。如果您将达到脚本正常的程度,请阅读PDO语句&amp;输入数组&amp;等...... ..

<?php
    $number = intval($_POST['number1']);
    $forms = intval($_POST['forms']);
    if($forms)
    {
        $user = 'root' ;
        $password = 'password';
        $host = 'localhost' ;
        $database = 'database1';

        $db = mysqli_connect($host, $user, $password, $database) or die('Error querying') ; 
        for($i = 1; $i <= $number; $i++)
        {
            $name = $_POST['name'.$i]; //how would you filter that one?
            if(!empty($name))
                mysqli_query($db, "INSERT INTO table1(question)" . "VALUES ('$name')") ;
        }
        mysqli_close($db);  
    }
?>
<form action = '<?php echo $_SERVER['PHP_SELF']; ?>' method = 'post'>
    How many questions ?
        <input type = 'number' name = 'number1' value='<?= $number ?>'>
        <input type = 'submit' value = 'go'>
</form>


<?php 
    if($number > 0)
    {
        echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">'; //X forms is also not needed, one is enough
        for($i = 1; $i<$number; $i++)
        {
            echo '<input type = "text" name = "name'.$i.'">';
        }
        echo '
            <input type = "submit" value = "submit">
            <input type="hidden" name="forms" value="1" />
            </form>
        ';
    }
?>