2010-07-06 126 views
1

我只是沒有看到問題。需要一些新的眼睛來審查它。兩個文件包括test.php和test2.php到var_dump。幫幫我!!剪切,粘貼和運行 - 由於PHP _POST數組爲空

test.php: 
<?php 
ini_set('error_reporting', E_ALL); 
ini_set('display_errors', "1"); 
?> 

<style type="text/css"> 
div.tabcontent{ 
    visibility: hidden; 
    position:absolute; 
    left:20px; 
} 
</style> 

<script type="text/javascript"> 
    function switch_div(){ 
    val=document.form1.a_type.selectedIndex; 
    if (val < 3){ 
     val="a0"; 
     data=document.getElementById("data_types").innerHTML+document.getElementById(val).innerHTML; 
    }else if (val==3){ 
     val="a"+document.form1.a_type.selectedIndex; 
     data=document.getElementById("data_types").innerHTML+document.getElementById(val).innerHTML; 
    }else{ 
     val="a"+document.form1.a_type.selectedIndex; 
     data=document.getElementById(val).innerHTML; 
    } 
    document.getElementById('anw_wksp').innerHTML=data; 
    } 
</script> 

<html> 
<body> 
<form name="form1" action="test2.php" method="post" > 
<table> 
    <th >Enter Anwsers</th> 
    <tr> 
    <td>Anwser Type</td> 
    </tr> 
    <tr> 
    <td><select name="a_type" onChange="switch_div()"/> 
     <option value='radio'>radio</option> 
     <option value='checkbox'>checkbox</option> 
     <option value='select'>select</option> 
     <option value='text'>text</option> 
     <option value='textarea'>textarea</option> 
     </select> 
    </td> 
    </tr> 

     <div id="anw_wksp" style="border:1px solid gray; margin-bottom: 1em; padding: 10px"> 
     </div> 
     <div id="data_types" class="tabcontent"> 
      <table> 
      <th colspan="3">Data type</th> 
      <tr><td> 
      <input type="radio" name="a_data_type" value="text" selected>text<br> 
      <input type="radio" name="a_data_type" value="int">int </td> 
      </td> 
      </tr> 
      </table> 
     </div> 
     <div id="a0" class="tabcontent"> <!--radio/checkbox/select button--> 
      <table> 
      <th>Readable Anwser</th><th>DB Value</th><th>Default</th> 
       <? $i=0; 
       while($i < 10){ 
        echo "<tr><td><input type=\"text\" name=\"a_r_$i\" /></td> 
         <td><input type=\"text\" name=\"a_db_$i\" /></td> 
         <td><input type=\"radio\" name=\"default\" value=\"$i\" /></td></tr>"; 
        $i++; 
       } 
       ?> 
      </table> 
     </div> 

     <div id="a3" class="tabcontent"> 
      <table> 
      <th>Readable Anwser</th><th>DB Value</th><th>Default</th> 
      <tr><td><input type="text" name="a_r_text"></td> 
       <td><input type="text" name="a_db_text"></td> 
       <td><input type="text" name="default_text" ></td></tr> 
      </table> 
     </div> 

     <div id="a4" class="tabcontent"> 
      <table> 
      <th>Readable Anwser</th><th>Default</th> 
      <tr><td><input type="text" name="a_r_textarea"></td> 
       <td><textarea name="default_textarea" rows="5" cols="30"></textarea></td></tr> 
      </table> 
     </div> 
    </td> 
    </tr> 
</td> 
</tr> 
    <tr> 
    <td><input type="submit" value="Enter" name="submit"> 
    </td> 
</table> 
</form> 
</body> 
</html> 


<script language="javascript">switch_div();</script> 
------------------------------------------------------------------- 

test2.php:

<?php 

$data = file_get_contents('php://input'); 

if(empty($_SERVER['CONTENT_TYPE'])){ 

    $type = "application/x-www-form-urlencoded"; 

    $_SERVER['CONTENT_TYPE'] = $type; 

} 

print "_POST = <br />"; 
var_dump($_POST); 
print "<br />"; 
print " DATA = <br />"; 
var_dump($data); 

?> 
+0

您應該只發布相關的代碼。 – Sarfraz 2010-07-06 18:27:08

+4

你的''在哪裏?你爲什麼在''之外有'

5
  1. 你沒有<head>
  2. 你不能讓你的<html>之外<script>標籤。也許你想要external JS files
  3. 您的標籤<html>之外不能有<style>標籤。也許你想external CSS files
  4. 腳本/風格,或它們的外部<link>的,大概應該是你的<head>
  5. 內不能有<th><td>一個<tr>之外。 Proper example
  6. 你不要declare a doctype
  7. 表格行之間不能有<div>的隨機數。
  8. 您的echo荷蘭國際集團<tr>的方法是,好,馬虎...

相反的:

<? $i=0; 
      while($i < 10){ 
       echo "<tr><td><input type=\"text\" name=\"a_r_$i\" /></td> 
        <td><input type=\"text\" name=\"a_db_$i\" /></td> 
        <td><input type=\"radio\" name=\"default\" value=\"$i\" /></td></tr>"; 
       $i++; 
      } 
      ?> 

考慮是這樣的:

<? for($i = 0; $i < 10; $i++) { ?> 
    <tr> 
     <td><input type="text" name="a_r_<?=$i?>" /></td> 
     <td><input type="text" name="a_db_<?=$i?>" /></td> 
     <td><input type="radio" name="default" value="<?=$i?>" /></td> 
    </tr> 
<? } ?> 

最後,嘗試調試您的問題,爲Chrome/Firefox使用Firebug之類的工具,以確保您按預期提交POST數據。

+0

感謝-1,不管是誰。隨意辯解。 – Dolph 2010-07-06 18:43:39

+0

它不回答問題嗎? (這不是我低估了這一點)。 – 2010-07-06 18:51:52

+1

@ el.pescado:雖然它沒有直接回答這個問題,但我認爲縮小可能性很有用。 +1 – 2010-07-06 19:30:14

0

我建議檢查請求方法實際上是test2.php腳本中的一個帖子。

<?php 
if (strtolower($_SERVER["REQUEST_METHOD"]) == "post") { 
    $data = file_get_contents('php://input'); 

    if(empty($_SERVER['CONTENT_TYPE'])){ 
     $type = "application/x-www-form-urlencoded"; 
     $_SERVER['CONTENT_TYPE'] = $type; 
    } 

    print "_POST = <br />"; 
    var_dump($_POST); 
    print "<br />"; 
    print " DATA = <br />"; 
    var_dump($data); 
} 
?>