2014-10-31 24 views
0

。您應該使用最後一個表格列中的複選框選擇表格的其中一行,然後使用底部的提交按鈕提交它們。然後,應該將來自所選列的信息的名稱通過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. 信息實際上正在通過,但由於格式化而未被識別。

還有其他一些我迄今爲止發現的,他們似乎都不適用於我的情況。如果您有任何問題或想了解更多關於我的代碼或我迄今爲止嘗試過的信息,請告訴我。

如果任何人有解決方案,想法,甚至是一個關於正在發生的事情和如何解決它的想法讓我知道所有的幫助將不勝感激。

(編輯)

這是我的代碼生成的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> 
+0

您需要進一步調試。問題是服務器端或客戶端...這是不可能的。顯示您的PHP應用程序生成的HTML。它看起來適合你嗎?接下來,當您進行POST時檢查網絡選項卡。數據在那裏嗎?它可能不是,然後你知道問題發生在表單提交之前。如果數據正在發送到服務器。在你的代碼中做一個'print_r($ _ POST)',看看它在哪裏會被吹走。做一些基本的調試,在1分鐘內就可以找出幾乎所有可能的原因。 – Brad 2014-10-31 02:29:18

+0

我曾經看過我的PHP應用程序生成的HTML,它看起來不錯。我之前也使用過print_r($ _ POST),我得到的只是空括號。我剛剛在你的建議看過網絡選項卡,並據我所知道你是正確的數據不存在,但我不知道我正在閱讀網絡選項卡的權利。 – sjtwiv 2014-10-31 02:48:55

+0

好吧,如果這兩件事情都是真的,那麼你的所有PHP代碼都與你的問題無關。發佈導致沒有數據發佈的HTML的可重現示例。這可能會導致驗證錯誤,從而導致您的'

'標籤提早關閉或類似。 – Brad 2014-10-31 02:50:47

回答

0

此問題的解決方案是用複選框輸入中的值替換爲名稱。我不完全確定這是爲什麼會起作用,但它確實有效。

相關問題