PHP不会发布值表

时间:2019-02-02 17:53:22

标签: javascript php sql

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

table of values

在用户选择了所有相关团队之后,我想将其保存到一个表单中,将所有行组合成这样的表单:

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,但是我不确定为什么。

2 个答案:

答案 0 :(得分:1)

您可以尝试删除

location.reload();

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

答案 1 :(得分:0)

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

感谢所有提供帮助的人!