$ _POST是空的,它似乎与我发现的关于此的100个帖子不同

时间:2014-10-31 02:18:58

标签: php html mysql forms post

我有一张表格,是表格的一部分。您应该使用最后一个表列中的复选框选择表中的一行,然后使用底部的提交按钮提交它们。然后,应通过method =“post”将所选列中信息的名称发送到另一个文件。问题是$ _POST总是空的。我已经搜索了这个网站和其他人的答案,虽然我发现很多关于空的帖子$ _POST他们都没有能够帮助我。我将分享一些我认为可能相关的代码的简化版本,并且我会列出一些我尝试过但没有用的代码。

    <form action="" method="post" id="f1"></form>

    <table>
        <tr>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
        </tr>
    <?php foreach ($positions as $position): ?>
        <tr>
            <td><?= $position["symbol"] ?></td>
            <td><?= $position["______"] ?></td>
            <td><?= $position["______"] ?></td>
            <td><input type="checkbox" value="<?= $position['symbol'] ?>" form="f1"></td>
        </tr>
    <?php endforeach?>
    </table>
    <input type="submit" value="Submit" form="f1">

关于上述代码的一些注释。

注1:位置信息来自MySQL表和另一个网站(其他网站的信息是未格式化的文本)。

注2:PHP代码用于创建表的行并填充复选框中的值,因为它们将包含多少行和哪些信息将随帐户而变化。

注3:信息应发送到提供此页面内容的同一控制器文档。我使用if else语句在从属性帖子接收信息时改变其操作。

以下是控制器发出信息的相关代码。

    <?php

        if ($_SERVER["REQUEST_METHOD"] == "POST")
        {
            if (empty($_POST))
            {
                apologize("No selection made");
            }
            else
            {
            }

        }

    ?>

起初我认为问题是使用php代码来填充输入元素值,所以我尝试了很多PHP代码的变体。然而,他们都没有工作,我发现在任何地方都没有提到这个代码是坏的。另请注意,如果我查看表的源页面源并输入它们,则会显示正确的值,该值将插入到为页面生成的html中的输入值中。

现在相当确信PHP不是问题我开始重新研究$ _POST可能为空的原因,即使从提交传递给它的值。以下是我找到的一些原因。

  1. 表单中的网址与目的地不匹配,但会经过重定向的某些变体,在此期间$ _POST将被清空。

  2. $ _POST中的信息以某种方式受Jquery影响,因此格式错误。我对Jquery一无所知,所以这个看起来有点令人困惑,显然经常会退出。

  3. 有一个最大数量的数据允许$ _POST转移,有人已经过了。

  4. 有人输入$ _post而不是$ _POST。

  5. 有人已经完成了apache或其他东西的自定义配置,并且它以某种方式导致了问题。

  6. 信息实际上是通过但由于格式化而无法识别。

  7. 到目前为止,我发现还有很多其他的东西似乎都不适用于我的情况。如果您有任何疑问或想要了解有关我的代码或我迄今为止尝试的内容的更多信息,请告诉我。

    如果有人有解决方案,想法,甚至是关于正在发生的事情以及如何解决问题,请告诉我所有的帮助将不胜感激。

    (编辑)

    这是我的代码生成的HTML。

        <!DOCTYPE html>
    
        <html>
    
            <head>
    
                <link href="/css/bootstrap.css" rel="stylesheet"/>
                <link href="/css/bootstrap.min.css" rel="stylesheet"/>
                <link href="/css/bootstrap-theme.min.css" rel="stylesheet"/>
                <link href="/css/styles.css" rel="stylesheet"/>
    
                            <title>C$50 Finance: Sell</title>
    
                <script src="/js/jquery-1.10.2.min.js"></script>
                <script src="/js/bootstrap.min.js"></script>
                <script src="/js/scripts.js"></script>
    
            </head>
    
            <body>
    
                <div class="container">
    
                    <div id="top">
                        <a href="/"><img alt="C$50 Finance" src="/img/logo.gif"/></a>
                    </div>
    
                    <div id="middle">
        <p id="p1"><b>CASH: $ </b>10,000.00</p>
    
        <form action="sell.php" method="post" id="f1"></form>
        <table>
            <tr>
                <th>symbol</th>
                <th>shares</th>
                <th>price*</th>
                <th>sell</th>
            </tr>
            <tr>
                <td>AAPL</td>
                <td>12</td>
                <td>106.98</td>
                <td><input type="checkbox" value="AAPL" form="f1"></td>
            </tr>
            <tr>
                <td>AMZN</td>
                <td>5</td>
                <td>299.07</td>
                <td><input type="checkbox" value="AMZN" form="f1"></td>
            </tr>
        </table>
        <input type="submit" value="Sell" form="f1">
        <div>
            <a href="logout.php">Log Out</a>
        </div>
                    </div>
    
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
                    <br>
    
                    <footer>
                        Copyright &#169; John Harvard
                    </footer>
    
                </div>
    
            </body>
    
        </html>
    

1 个答案:

答案 0 :(得分:0)

此问题的解决方案是使用名称替换复选框输入中的值。我不完全确定为什么会这样,但确实如此。