新建了一个index页面,通过加载class_form.php来实现页面的操作,主页面传递action值调用__tostring来执行相应计算,现在我需要在输入数值的时候用条件语句判断$this->request所包含的值,如果为正则执行计算,反之停止计算并输出错误信息.下面 //的是我加入的,但是执行的时候直接输出错误信息,并不会判断$this->request["width"]和$this->request["height"]的值,这是怎么回事,需要如何才能判断?
<?php
class Form{
private $formName;
private $request;
private $action;
private $method;
private $target;
function __construct($formName,$request,$action="index.php",$method="get",$target="_self"){
$this->formName=$formName;
$this->request=$request;
$this->action=$action;
$this->method=$method;
$this->target=$target;
}
function __toString(){
$str="<table align='center' border='0' width='500'>";
$str.="<caption><h3>{$this->formName}</h3></caption>";
$str.="<form action={$this->action} method={$this->method} target={$this->target}>";
if($this->request["action"] == 1){
$str.="<tr><th>矩形高度:</th>";
$str.="<td><input type='text' name='height' value={$this->request['height']}></td></tr>";
$str.="<tr><th>矩形宽度:</th>";
$str.="<td><input type='text' name='width' value={$this->request['width']}></td></tr>";
// if($this->request['height'] && $this->request['width']){
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
// }else{
// die ("<script language='javascript'> alert('计算所需的值必须不能为空!');</Script>");
}elseif($this->request["action"] == 2){
$str.="<tr><th>第一条边:</th>";
$str.="<td><input type='text' name='side1' value={$this->request['side1']}></td></tr>";
$str.="<tr><th>第二条边:</th>";
$str.="<td><input type='text' name='side2' value={$this->request['side2']}></td></tr>";
$str.="<tr><th>第三条边:</th>";
$str.="<td><input type='text' name='side3' value={$this->request['side3']}></td></tr>";
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
}elseif($this->request["action"] == 3){
$str.="<tr><th>圆的半径:</th>";
$str.="<td><input type='text' name='radius' value={$this->request['radius']}></td></tr>";
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
}
return $str;
}
}
?>
<?php
class Form{
private $formName;
private $request;
private $action;
private $method;
private $target;
function __construct($formName,$request,$action="index.php",$method="get",$target="_self"){
$this->formName=$formName;
$this->request=$request;
$this->action=$action;
$this->method=$method;
$this->target=$target;
}
function __toString(){
$str="<table align='center' border='0' width='500'>";
$str.="<caption><h3>{$this->formName}</h3></caption>";
$str.="<form action={$this->action} method={$this->method} target={$this->target}>";
if($this->request["action"] == 1){
$str.="<tr><th>矩形高度:</th>";
$str.="<td><input type='text' name='height' value={$this->request['height']}></td></tr>";
$str.="<tr><th>矩形宽度:</th>";
$str.="<td><input type='text' name='width' value={$this->request['width']}></td></tr>";
// if($this->request['height'] && $this->request['width']){
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
// }else{
// die ("<script language='javascript'> alert('计算所需的值必须不能为空!');</Script>");
}elseif($this->request["action"] == 2){
$str.="<tr><th>第一条边:</th>";
$str.="<td><input type='text' name='side1' value={$this->request['side1']}></td></tr>";
$str.="<tr><th>第二条边:</th>";
$str.="<td><input type='text' name='side2' value={$this->request['side2']}></td></tr>";
$str.="<tr><th>第三条边:</th>";
$str.="<td><input type='text' name='side3' value={$this->request['side3']}></td></tr>";
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
}elseif($this->request["action"] == 3){
$str.="<tr><th>圆的半径:</th>";
$str.="<td><input type='text' name='radius' value={$this->request['radius']}></td></tr>";
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
}
return $str;
}
}
?>
你确定要die啊,php脚本后边没代码要跑了啊?
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
// }else{
// die ("<script language='javascript'> alert('计算所需的值必须不能为空!');</Script>");
额 isset也是一样的,获取输入的值是利用这个<input type='hidden' name='act' value={$this->request['action']}>,但是获取之后我才能检测是否存值。现在问题是我打开页面就提示JS脚本:计算所需的值必须不能为空!而不会载入表单.
die没问题,因为我是切换_self页面来计算不同图形的area()和perimeter(),计算时只能每次计算一种图形
notice错误。
可以通过
if(isset($this->request['height'])&&isset($this->request['width'])&&$this->request['height'] && $this->request['width'])
http://cn.php.net/__toStringclass Form{
private $formName;
private $request;
private $action;
private $method;
private $target;
function __construct($formName,$request,$action="index.php",$method="get",$target="_self"){
$this->formName=$formName;
$this->request=$request;
$this->action=$action;
$this->method=$method;
$this->target=$target;
}
function abcccc(){
$str="<table align='center' border='0' width='500'>";
$str.="<caption><h3>{$this->formName}</h3></caption>";
$str.="<form action={$this->action} method={$this->method} target={$this->target}>";
if($this->request["action"] == 1){
$str.="<tr><th>矩形高度:</th>";
$str.="<td><input type='text' name='height' value={$this->request['height']}></td></tr>";
$str.="<tr><th>矩形宽度:</th>";
$str.="<td><input type='text' name='width' value={$this->request['width']}></td></tr>";
// if($this->request['height'] && $this->request['width']){
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
// }else{
// die ("<script language='javascript'> alert('计算所需的值必须不能为空!');</Script>");
}elseif($this->request["action"] == 2){
$str.="<tr><th>第一条边:</th>";
$str.="<td><input type='text' name='side1' value={$this->request['side1']}></td></tr>";
$str.="<tr><th>第二条边:</th>";
$str.="<td><input type='text' name='side2' value={$this->request['side2']}></td></tr>";
$str.="<tr><th>第三条边:</th>";
$str.="<td><input type='text' name='side3' value={$this->request['side3']}></td></tr>";
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
}elseif($this->request["action"] == 3){
$str.="<tr><th>圆的半径:</th>";
$str.="<td><input type='text' name='radius' value={$this->request['radius']}></td></tr>";
$str.="<tr><td align='center' colspan='2'><input type='submit' value='计算'></td></tr>";
$str.="<input type='hidden' name='act' value={$this->request['action']}>";
$str.="<input type='hidden' name='action' value={$this->request['action']}>";
$str.="</form></table>";
}
return $str;
}
}
可以显示的调用$form = new ($formName,$request,$action="index.php",$method="get",$target="_self");
$form->abcccc();
<html>
<body>
<?php
function __autoLoad($className){
include("class_".ucfirst($className).".php");
}
?>
<center>
<h2>图形的周长和面积计算器</h2>
<hr width="60%">
<a href="index.php?action=1">矩形</a> ||
<a href="index.php?action=2">三角形</a> ||
<a href="index.php?action=3">圆形</a>
<hr width="60%">
</center>
<?php
switch($_REQUEST["action"]){
case 1:
$form=new Form("矩形",$_REQUEST,"index.php");
echo $form;
break;
case 2:
$form=new Form("三角形",$_REQUEST,"index.php","post");
echo $form;
break;
case 3:
$form=new Form("圆形",$_REQUEST,"index.php","post");
echo $form;
break;
default:
echo "请先选择一个图像形状!<br>";
}
if(isset($_REQUEST["act"])){
switch($_REQUEST["act"]){
case 1:
$shape=new Rect($_REQUEST);
break;
case 2:
$shape=new Triangle($_REQUEST);
break;
case 3:
$shape=new Circle($_REQUEST);
break;
}
echo "面积为:{$shape->area()}<br>";
echo "周长为:{$shape->perimeter()}<br>";
}
?>
</body>
</html>
还有几个抽象类和抽象方法就不用贴出来了吧