数据在页面加载时插入到数据中 - php jquery [重复]

Posted

技术标签:

【中文标题】数据在页面加载时插入到数据中 - php jquery [重复]【英文标题】:Data is inserted to data on page load - php jquery [duplicate] 【发布时间】:2019-04-05 05:48:08 【问题描述】:

我一直在处理这段代码,显然每次我加载页面时它都会将数据插入数据库。

<!DOCTYPE html>
<?php

include_once($_SERVER["DOCUMENT_ROOT"] .'/31783/functions.php');

$questions="";
$activityname="";
$myarray=array();

if($_SERVER["REQUEST_METHOD"] == "POST") 
    print_r($myarray);
    print_r($activityname);
    $questions = $_POST['myquestions'];
    $activityname = $_POST['activityname'];
    $myarray = array_filter(explode("|||", $questions));
    SqlRecord("INSERT INTO activity (name) VALUES ('$activityname')");
    foreach ($myarray as $value) 
        $connector = array();
        $connector = array_filter(explode("!!!", $value));
        $question = $connector[0];
        $answer = $connector[1];
        $activityid = SelectRecord("activity_id", "SELECT activity_id FROM activity WHERE name='$activityname'");
        SqlRecord("INSERT INTO question(activity_id,question,answer) VALUES (" . $activityid . ",'$question','$answer')");
    

?>

<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery Add / Remove Table Rows</title>
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
    <style type="text/css">

        tr:hover
            cursor: move;
        

    </style>
    <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
    <script type="text/javascript">
    var htm='<tr>\n' +
        '            <td><textarea name="name" required></textarea></td>\n' +
        '            <td><button class="remove"></button></td>\n' +
        '<td><select id="myAnswer" name="myAnswer" class="form-control"><option value="1">True</option><option value="2">False</option></select></td>'+
        '        </tr>';
        $(function () 
            $('tbody').sortable();

            $('#addRow').on( "click", function()
                $('tbody').append(htm);
            );

            $(document).on('click','.remove',function()
                $(this).parents('tr').remove();
            );

            $('#getValues').on( "click", function()

                var myValues="";
                var values=[];
                $('textarea[name="name"]').each(function(i,elem)
                    values.push(
                        question:$(elem).val(),
                        answer:""
                    );
                );

                $('select[name="myAnswer"').each(function(i,elem) 
                    values[i].answer=$(elem).val();
                );

                for (var j=0;j<values.length;j++) 
                    myValues=myValues+values[j].question+"!!!"+values[j].answer+"|||";
            

                //console.log(myValues);
                $("#myquestions").val(myValues);
            );

        );


    </script>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="container">

        <input type="text" id="activityname" name="activityname" required></br>
    <table>

        <tbody>
        <tr>
            <td><textarea name="name" required></textarea></td>
            <td><button class="remove"></button></td>
            <td><select name="myAnswer" class="form-control"><option value="1">True</option><option value="2">False</option></select></td>
        </tr>

        <tr>
            <td><textarea name="name" required></textarea></td>
            <td><button class="remove"></button></td>
            <td><select name="myAnswer" class="form-control"><option value="1">True</option><option value="2">False</option></select></td>
        </tr>
        </tbody>
    </table>

    <input id="getValues" type="submit" value="Submit"/>

    <input type="text" id="myquestions" name="myquestions">

    <button id="addRow">Add</button>
</div>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

</body>
</html>

我无法发现代码中的错误。 每次我按添加时,代码都会添加&lt;tr&gt;。它将&lt;tr&gt; 中的值传输到一个数组,然后将其作为字符串发送到html 中的&lt;input&gt;,以便能够在php 中读取它并将其插入到数据库中。我没有使用 ajax,因为代码简单直接。

谢谢

【问题讨论】:

如果您在提交表单后点击重新加载按钮,它将再次提交表单。浏览器通常会显示正在发生这种情况的警告,您必须确认是否需要它。 @Barmar 正如你所提到的,我使用标题将页面重定向到它自己,它运行良好。谢谢 【参考方案1】:

如果你替换

if($_SERVER["REQUEST_METHOD"] == "POST") 

if(isset($_POST['myquestions']) && !empty($_POST['myquestions'])) 

它应该可以工作,我知道为什么您的 $_SERVER 验证不起作用,抱歉

【讨论】:

感谢您的留言,但没有成功。第一次在新选项卡中加载页面时它很好并且可以正常工作。当您想在同一选项卡中刷新页面时,它正在重用以前的数据并继续插入数据库。有什么方法可以在不将页面重定向到新标题的情况下解决此问题? 为什么这会更好?单击重新加载按钮会重新提交表单,因此$_POST['myquestions'] 将被重新设置。 顺便说一句,不必同时测试isset!empty,只需使用!empty。 documentation 表示:如果变量不存在,则不会生成警告。

以上是关于数据在页面加载时插入到数据中 - php jquery [重复]的主要内容,如果未能解决你的问题,请参考以下文章

表单自动仅提交一次并重新加载相同的页面

将数据从 html 页面插入到 php 表单中,就像自动填充值一样

php在提交表单之前将数据插入数据库中的值为空?

php加载数据时怎么让Checkbox根据值自动选中

通过 Ajax 将 Summernote 代码发布到 PHP,然后插入数据库

地理位置跟踪并插入 mysqlDatabse