【问题标题】:PHP Won't Post Table of ValuesPHP不会发布值表
【发布时间】:2019-06-26 23:52:00
【问题描述】:

我有一个要发布的 HTML 值表。它看起来像这样:

用户选择所有相关团队后,我想将其保存到一个表单中,将所有行组合成一个表单,如下所示:

PHP:

$numRows = 1;
$startMatchNum = 1;
if(isset($_GET['num'])) {
    $numRows = $_GET["num"];
    $startMatchNum = $_GET["start"];
}

JavaScript:

                     function getSelectionValue(rowNum, columnNum) {
                        document.cookie = "rowNum=" + rowNum;
                        //FOR EXTERNAL PHP FILE
                        //window.location = "http://example.com/file.php";
                        var id =
                            <?php
                            $index = 0;
                            $row = 0;
                            if ( ! empty( $_COOKIE['rowNum'] ) ) {
                                $row = $_COOKIE['rowNum'];
                            }
                            echo '"'.$values[$index].$row.'"';
                            ?>;
                        var e = document.getElementById(id);
                        var selectedValue = e.options[e.selectedIndex].value;
                    }

                    function postRefreshPage() {
                        var theForm, newInput1, newInput2, newInput3, newInput4, newInput5, newInput6;
                        var rows = <?php echo $numRows; ?>;
                        var nums1 = new Array(rows);
                        // Start by creating a <form>
                        theForm = document.createElement('form');
                        theForm.action = 'addMatch.php';
                        theForm.method = 'post';
                        // Next create the <input>s in the form and give them names and values
                        newInput1 = document.createElement('input');
                        newInput1.type = 'hidden';
                        newInput1.name = 'blue1Team';
                        newInput1.value = "";
                        for(var i = 0;i < rows;i++) {
                            newInput1.value += getSelectionValue(i, 0);
                            if((i + 1) != rows) {
                                newInput1.value += "|";
                            }
                        }

                        newInput2 = document.createElement('input');
                        newInput2.type = 'hidden';
                        newInput2.name = 'blue2Team';
                        newInput2.value = "";
                        for(var i = 0;i < rows;i++) {
                            newInput2.value += getSelectionValue(i, 1);
                            if((i + 1) != rows) {
                                newInput2.value += "|";
                            }
                        }

                        newInput3 = document.createElement('input');
                        newInput3.type = 'hidden';
                        newInput3.name = 'blue3Team';
                        newInput3.value = "";
                        for(var i = 0;i < rows;i++) {
                            newInput3.value += getSelectionValue(i, 2);
                            if((i + 1) != rows) {
                                newInput3.value += "|";
                            }
                        }

                        newInput4 = document.createElement('input');
                        newInput4.type = 'hidden';
                        newInput4.name = 'red1Team';
                        newInput4.value = "";
                        for(var i = 0;i < rows;i++) {
                            newInput4.value += getSelectionValue(i, 3);
                            if((i + 1) != rows) {
                                newInput4.value += "|";
                            }
                        }

                        newInput5 = document.createElement('input');
                        newInput5.type = 'hidden';
                        newInput5.name = 'red2Team';
                        newInput5.value = "";
                        for(var i = 0;i < rows;i++) {
                            newInput5.value += getSelectionValue(i, 4);
                            if((i + 1) != rows) {
                                newInput5.value += "|";
                            }
                        }

                        newInput6 = document.createElement('input');
                        newInput6.type = 'hidden';
                        newInput6.name = 'red3Team';
                        newInput6.value = "";
                        for(var i = 0;i < rows;i++) {
                            newInput6.value += getSelectionValue(i, 5);
                            if((i + 1) != rows) {
                                newInput6.value += "|";
                            }
                        }
                        // Now put everything together...
                        theForm.appendChild(newInput1);
                        theForm.appendChild(newInput2);
                        theForm.appendChild(newInput3);
                        theForm.appendChild(newInput4);
                        theForm.appendChild(newInput5);
                        theForm.appendChild(newInput6);
                        // ...and it to the DOM...
                        document.getElementById('hidden_form_container').appendChild(theForm);
                        // ...and submit it
                        theForm.submit();
                        location.reload();
                     }

然后,在它刷新之后,它运行这个 PHP 代码:

        if($_POST) {
            $blueTeam1 = explode ("|", $_POST['blueTeam1']);
            $blueTeam2 = explode ("|", $_POST['blueTeam2']);
            $blueTeam3 = explode ("|", $_POST['blueTeam3']);
            $redTeam1 = explode ("|", $_POST['redTeam1']);
            $redTeam2 = explode ("|", $_POST['redTeam2']);
            $redTeam3 = explode ("|", $_POST['redTeam3']);
            for($i = 0;i < $numRows;$i++) {
                $matchNumber = $i + 1;
                $query = "INSERT INTO match_info (matchNumber, blueTeam1, blueTeam2, blueTeam3, redTeam1, redTeam2, redTeam3)
                                    VALUES ('$matchNumber','$blueTeam1[$i]','$blueTeam2[$i]','$blueTeam3[$i]','$redTeam1[$i]','$redTeam2[$i]','$redTeam3[$i]')";
                $mysqli->query($query);
            }
        }

但是,它似乎没有提交。非常感谢任何帮助!

编辑:我发现了错误,但我不知道如何修复它。在 Javascript 代码中,getSelectionValue 函数返回undefined,但我不知道为什么。

【问题讨论】:

    标签: javascript php sql


    【解决方案1】:

    您可以尝试删除

    location.reload();

    在 getSelectionValue() 函数中,因为您提交但同时重新加载初始脚本。

    【讨论】:

    • 我在没有location.reload 的情况下测试了postRefreshPage 函数,但它仍然返回undefined。会不会是 for 循环?
    • 函数 getSelectionValue 似乎没有返回任何东西。尝试返回选定的值。
    • 好收获!该功能现在可以使用,但仍然无法发布。
    • 检查文档中是否存在id。也许 document.getElementById(id) 在 getSelectionValue 中未定义。您是否在浏览器中检查了 javascript 控制台以查看是否有任何错误?如果您删除 location.reload,postRefreshPage 函数对我来说很好。
    • 我做了一个按钮来测试getSelectionValue()是否通过导入某个索引来工作,并且它工作得很好。然后,我提醒了表单中的一个值,它也可以正常工作。也许我的 PHP 代码有问题。我之所以在函数中有location.reload(),是因为通常在提交常规HTML表单时页面会刷新,所以我认为它会做同样的事情。这可能是我的 PHP 代码,但它看起来应该可以工作。
    【解决方案2】:

    我想通了。这是各种各样的问题。首先,我的 PHP 代码中的 ID 与 JavaScript 表中的 ID 不匹配。其次,我使用 cookie 将 JavaScript 变量传递给 PHP 不起作用,所以我复制了我想要访问的 PHP 数组并在 JavaScript 中再次设置它。因此,getSelectionValue(rowNum, columnNum); 函数不需要访问 PHP 代码。最后,我在数据库中的表没有matchNumber列,所以整个过程失败了。

    感谢所有帮助过的人!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 2012-10-29
      • 2012-12-02
      • 2012-06-12
      • 2013-12-09
      • 1970-01-01
      相关资源
      最近更新 更多