2010-07-06 123 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); 
} 
?>