<form action="comment01.php" method='post'>
<p align="center"><textarea name="txt" rows="10" cols="40"></textarea></p>
<p align="center"><input type="submit" value="Submit" /></p>
</form>
<?php
$yjj=key($_GET);
$Logi = file("./data/list.txt", FILE_IGNORE_NEW_LINES);
foreach( $Logi as $Key => $Val ){
list($num, $title) = explode ( "|" , $Val );
if($title==$yjj)
{
 $Comment = $_POST['txt'] ;
 $filename ="Item".($num).'.txt';
 $file=fopen('./data/comments/'.$filename, 'a');
 fwrite($file, $Comment);
 fclose($file);
 }
}
?>$yjj=key($_GET)是上张页面返回的值,我想在这个页面设置一个文本框,获取输入的内容为$Comment = $_POST['txt'],但是多次尝试不成功,都获取不到值,求指教PHP

解决方案 »

  1.   

    把 if($title==$yjj)的判断先去掉看看。 估计是这里的判断有问题,根本就没进到if中去。 第二点, 注意文件夹的写入权限。  method="post"  双引号。
      

  2.   

    能创建txt,txt的名字中的num也是对的,就是全是空的文本,不知道怎么回事
      

  3.   

    你先直接把$Comment打印出来看看 echo $Comment。   fclose之前加个fflush($file);
      

  4.   

    貌似这句话有问题
     $Comment = $_POST['txt'] ;
    因为如果我换成$Comment =“yyyyyyy”之类的就对了
      

  5.   

    如果放在if里面,打印出来是空的要放在if外面,但是判断条件能用啊
      

  6.   

    贴出的代码就是 comment01.php 的内容吧?
    如果是,那么就产生了矛盾
    1、$yjj=key($_GET); 是为了取得你另一帖子中的 get 方式提交的参数
    而你这里的代码并没有产生 get 方式的参数
    于是 $yjj=key($_GET); 只在第一次进入时才会有值。
    而你的操作是在 if($title==$yjj) 成立时进行的,所以只要不是第一次进入都不可能进行
    2、当第一次进入时,由于是get方式,所以$Comment = $_POST['txt'];为空,虽然执行了写文件,但写入的是空值
    当填写了表单提交后,就进入了 1 的状态,并不会执行写文件
      

  7.   

    斑竹说得对,我其实一直想把$yjj=key($_GET)和$Comment = $_POST['txt']分开,但不知道怎么做,如果再做一张页面,怎么做到$yjj和$Comment2个值同时返回
      

  8.   

    把 $yjj 的值放到表单里一起提交
      

  9.   

    <?php
    $Logi = file("./data/list.txt", FILE_IGNORE_NEW_LINES);
    foreach( $Logi as $Key => $Val ){
    list($num, $title) = explode ( "|" , $Val );
      if($num){
        echo $title;
    ?>
      <form action="comment01.php"  method='get'> 
      <p align="center"><input type="submit" value="comment" name="<?php echo $title ?>" /></p>
      </form>
    <?php
    }
     }
    ?>
    斑竹,这是我的前一张页面,到底怎么样才能同时获取按钮的返回值和表单的返回值,或者再加张页面也行,我想很久了,新手就是悲哀啊