一个很奇怪的表单提交~~~~
代码如下:
<form name=form3 action="?actname=save" method="post" target="_self">
定义提交事件,进行UPDATE 更新
在最后加上一个隐藏文本框,保存ID,以便进行UPDATE
<?php
echo "<a href=\"?id=$i&actname=del\"> 删除</a>";
$i=$row['operatorid'];
printf("%d", $i);
$i7777=$row['operatorid'];
printf( "<input name=iddd type=\"text\" value=%d>",$i7777);
echo "<input name=id type=hidden value=43434>";
printf("%d", $i);
?>
在主PHP里面打印参数
print_r($_POST);
结果显示:
Array ( [namessearch] => [loginname] => sf [level] => 0 [name] => sf [phone] => 123 [fax] => 345 [mail] => 3 at 123 dot cpm [iddd] => 0 [id] => 43434 [go] => )
除了我想要的IDDD,其他的都很正常
试验了PRINTF,PRINT,ECHO,文本框,TEXT,%d,%s,直接取值,赋值,仍然不行?!
而页面显示则非常正常。我前后都ECHO PRINT,文本框里面也显示正常
HTTP GET 变量:$_GET
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_GET_VARS。
通过 HTTP GET 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_GET; 来访问它,就如同使用 $HTTP_GET_VARS 一样。
$HTTP_GET_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_GET_VARS 和 $_GET 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_GET 和 $HTTP_GET_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
HTTP POST 变量:$_POST
注: 在 PHP 4.1.0 及以后版本使用。之前的版本,使用 $HTTP_POST_VARS。
通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
这是一个“superglobal”,或者可以描述为自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用 global $_POST; 来访问它,就如同使用 $HTTP_POST_VARS 一样。
$HTTP_POST_VARS 包含着同样的信息,但是不是一个自动全局变量(注意:$HTTP_POST_VARS 和 $_POST 是不同的变量,PHP 处理它们的方式不同)。
如果设置了 register_globals 指令,这些变量也在所有脚本中可用;也就是,分离了 $_POST 和 $HTTP_POST_VARS 数组。相关信息,请参阅安全的相关章节使用 Register Globals。这些单独的全局变量不是自动全局变量。
我的理解是如果按照上面那种方法,通过 SUBMIT和action,那么ACTION传递方法参数,而表单里面的内容则是通过
$_POST[key]获得
如果通过超级链接 如http://www.shengfang.org/blog/index.php?job=showcat&cat=1
表示参数有 CAT 和 JOB
可以通过 $_GET获得,也可以直接 global 关键字
global 关键字
在函数中申明了全局变量 $a 和 $b,任何变量的所有引用变量都会指向到全局变量。对于一个函数能够申明的全局变量的最大个数,PHP 没有限制。
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。
例子 12-2. 使用 $GLOBALS 替代 global
<?php $a = 1;$b = 2;
function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();echo $b;?>
在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值变量的内容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。
今天莫名其妙好了
<?php
echo "<a href=\"?id=$i&actname=del\"> 删除</a>";
echo "<input name=idd type=hidden value=$id>";
?>
其中:$i=$row['operatorid']; 是在HTML里面定义的,是循环从数据库读取出来的,而$id是由 http://127.0.0.1/bill/admin/admin.php?id=5&actname=edit 编辑传递过去的~
我明白了,由于循环语句,所以每次都定义一个TEXT,导致NAME不断被重叠,就是说IDD本来是1,然后变成下一个记录的ID,最后变成最后一条记录的ID,所以都是0。
所以如果直接显示$ID,那么每次都是同样的值,所以就没有关系。
如果我放在IF里面:<?php
//printf("<input type=hideen name=\"iddd\" value=%s>",$row["operatorid"] );
//echo "<input name=idd type=hidden value=$id>";
if ($boolEdit==true && $row['operatorid']==$id)
{
echo "<input name=idd type=hidden value=$id>";
printf("<input type=text name=\"mail\" size=6 maxlength=11 value=%s>",$row["mail"] );
}
else
echo $row["mail"] ?>
</td>
那么也是正确的~~~~~~~