ホームページ >バックエンド開発 >PHPチュートリアル >本に従ってグラフの面積を計算するプログラムを書いたのですが、どこで間違ったのか聞いてもいいですか?

本に従ってグラフの面積を計算するプログラムを書いたのですが、どこで間違ったのか聞いてもいいですか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 14:03:531134ブラウズ

「PHPを考える」第8章の最後の例。フォームは作成できますが、「計算」をクリックするとエラーが発生します。アドバイスをお願いします
インターフェース: class__Shape.php
7c2e141444389dfd2cd7a89989c494c4
Rectangle: class__Rect.php
4261c0bd94eca3937f7d9ae052932ec2 =$size["長さ"];
}
関数 area(){
return $this->length * $this->width;
}
function perimeter(){
return 2 * ($this-> ;width + $this->length);
}
}
Triangle: class__Triangle.php
43bba1b207bc703bc8c5845c9452d89b
Circle: class__Circle.php
8fe31e10f5e311a9621efa0e793b90f5radius = $size["radius"]
}
function area(){
return pi(); radius * $this->radius;
}
function perimeter(){
return 2* pi() * $this->radius;
}
}
フォーム: class__Form.php
< ;? php
クラス フォーム{
プライベート $リクエスト;
プライベート $メソッド;
関数 __construct($formName,$request,$action=", $method="get",$target="_self"){
$this->formName=$formName;
$this->action=$action; this->method=$method;
$this->target=$target;
関数 __toString(){
$str="bfec29971cd4bec108bbd003dc462f17"; str.="63bd76834ec05ac1f4c0ebbeaafb0994c1a436a314ed609750bd7c7d319db4da".$this->formName."2e9b454fa8428549ca2e64dfac4625cd63bd76834ec05ac1f4c0ebbeaafb0994"; $str.="730936d1d88aaaf2125cb023e32f06cab4d429308760b6c2d20d6300079ed38e長方形の長さ:01c3ce868d2b3d9bce8da5c1b7e41e5bb6c5a531a458a2e790c1fd6421739d1c"; $str.="b22586223b6427943e580a9606305b26request["length"].">b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5"; $str.="a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e長方形の幅:01c3ce868d2b3d9bce8da5c1b7e41e5bd9c9ebfb0012d59c7ec92d753a85c7farequest["width"].">b90dd5946f0946207856a8a37f441edf< ;";
ブレーク;
ケース 2:
$str.="a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e三角形の辺の長さ 1: 01c3ce868d2b3d9bce8da5c1b7e41e5bb6c5a531a458a2e790c1fd6421739d1c";
$str.="18d46200615862dd2286aaf89d960d02request["length1"].">b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5";
$str.="a34de1251f0d9fe1e645927f19a896e8 th>三角形の辺の長さ 2:

";
$str.="4d5dbf8bc2cbc6c5e5998b4a4e542a96request["length2"].">b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5";
$str.="a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e三角形边长3:01c3ce868d2b3d9bce8da5c1b7e41e5bb6c5a531a458a2e790c1fd6421739d1c";
$str.="b0bec113ecaccd628c860c6bb1dbc4darequest["length3"].">b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5";
休憩;
ケース 3:
$str.="a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e圆形半径:01c3ce868d2b3d9bce8da5c1b7e41e5bb6c5a531a458a2e790c1fd6421739d1c";
$str.="31380512d2c583938523506a5c477202request["radius"].">b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5";
休憩;
}
$str.="a34de1251f0d9fe1e645927f19a896e87661698da30bd265d563bfa5e26c825915dd2978dccb2135811bf9fb8db45c50b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5";
$str.="26b11a7f62efa2c298718e4eba715eacrequest["action"].">";
$str.="4f1fbc11377803797bc3166daf3a6ee9request["action"].">";
$str.="f5a47148e367a6035fd7a2faa965022ef16b1740fad44fb09bfe928bcc527e08";

$str; を返す
}
}
?>
制御程序:index.php
100db36a723c770d327fc0aef2ce13b1

b2386ffb911b14667cb8f0f91ea547a7図形計算器6e916e0f7d1e588d4f442bf645aedb2f
9c3bca370b5104690d9ef395f2c5f8d1

6b082ea62da9ae866a9cde44d54ef00c

224ce85e5538806589d407ee51d66c35四角形5db79b134e9f6b82c0b36e0489ee08ed||
2fe1ff642d6158c8e3dec86177470f3e三角形5db79b134e9f6b82c0b36e0489ee08ed||
fc65449f410ed967031039f789a2b95f圆形5db79b134e9f6b82c0b36e0489ee08eddf250b2156c434f3390392d09b1c9563
adca8a5fa06ffeafb062c2e3f274b930
switch ($_REQUEST["action"]){
case 1:
$form=new Form("四角形",$_REQUEST,"index.php");
echo $form;
休憩;
ケース 2:
$form=new Form("三角形",$_REQUEST,"index.php");
echo $form;
休憩;
ケース3:
$form=new Form("圆形",$_REQUEST,"index.php");
echo $form;
休憩;
デフォルト:
echo "请选择一个図形df250b2156c434f3390392d09b1c9563";
}

if(isset($_REQUEST["act"])){
switch($_REQUEST["act"]){
case 1:
$shape=new Rect($_REQUEST);
休憩;
ケース 2:
$shape=new Triangle($_REQUEST);
休憩;
ケース 3:
$shape=new Circle($_REQUEST);
休憩;
}
echo "面积範囲:".$shape->area()."
";
echo "周长:".$shape->perimeter()."0c6dc11e160d3b678d68754cc175188a";
}
?>
36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e


回复讨论(解决方案)

没人看?都还没睡眠吗?

class__Form.php 中

$str.="9b8a096bbad2b6118ee9a67d6687fb07action ."メソッド=".$this->メソッド."ターゲット=$this->ターゲット";

$str.="9b8a096bbad2b6118ee9a67d6687fb07action." method=".$this->method." target=$this->target";
少抄了空格

class__Circle.php 中
function __construce($size=""){
应です
function __construct($size=""){
抄错了一个字符

$str.="<form action=".$this->action."method=".$this->method."target=$this->target";


この文には問題があります。アクションはindex.php、メソッドはパラメータですが、インデックスに直接接続されています。 。 。
index.phpmethod=
これに変更します:
index.php?method=
function __construct($formName,$request,$action="index.php",$method="get",$target="_self") {
$this->formName=$formName;
$this->request=$action.'?';
$this->method=$method; $this->target=$target;
}

さらに、パラメータが渡されていないため、サークルに問題があるようです。
純粋に肉眼で見て、勝手に推測して、ご質問があればお知らせください~

実際に誰かが最初に回答しましたが、私はまだ見ていません。 。 。恥ずかしい

class__Form.php 内

$str.="9b8a096bbad2b6118ee9a67d6687fb07action."method=".$this->method."target=$this->target";

$str.="9b8a096bbad2b6118ee9a67d6687fb07action." method=".$this->method." target=$this->ta...

私修正後、円と三角形は出力できるのですが、「四角形」は出力できないのですか?テストしたところ、「rectangle」に問題はありませんでした。問題は、
フォームは正常に作成できましたが、「計算」をクリックしても何も起こりませんでした。また、
$str.="67ff9fa8ff77a60e0b9acdb35ee610aerequest["action. "].">";
$str.="4f1fbc11377803797bc3166daf3a6ee9 request["action"].">";
これら 2 つは何に使用されますか?

Windows でテストしていない場合は、ファイル名の大文字と小文字に注意する必要があります

class__Rect.php は使用できませんclass__rect.php またはその他の

action はフォーム読み込みの制御に使用されます
act はクラス読み込みの制御に使用されます


Windows でテストしていない場合は、ファイル名の大文字と小文字に注意する必要があります

class__Rect.php class__rect.php などは使用できません

アクションはフォームの読み込みを制御するために使用されます
act はクラスの読み込みを制御するために使用されます
Windows なので、大文字と小文字が区別されます
問題はありません。私のテストでは、何が問題なのかをどうやって教えてもらえますか? class__rect.php などは使用できません

action はフォームの読み込みを制御するために使用されます

act はクラスの読み込みを制御するために使用されます

Windows なので、大文字と小文字も区別されます あなたのコンピュータでテストしても大丈夫ですか?
四角形を含むコードを実行することもできます

もう一度書いたのですが、今度はまた三角形が出力されませんでした。混乱しています、何が問題ですか?
class__form.php:
f6266b7c40652c33737f222df98157ceformName=$formName;
$this->request=$request;
$this->action=$アクション;
$this->method =$method;
$this->target=$target;
関数 __toString(){
$str="bfec29971cd4bec108bbd003dc462f17 63bd76834ec05ac1f4c0ebbeaafb0994c1a436a314ed609750bd7c7d319db4da計算 ".$this->formName."2e9b454fa8428549ca2e64dfac4625cd63bd76834ec05ac1f4c0ebbeaafb0994";
$str.="ca39d4e3d98415dcdd39a3a67af6718aアクション." メソッド=" .$this->メソッド." ターゲット=".$this->target.">"

switch($this->request["action"]) {
ケース 1:
$str.="a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e長方形の長さ: 01c3ce868d2b3d9bce8da5c1b7e41e5bb6c5a531a458a2e790c1fd6421739d1c";
$str.="adb0a6728b4d8572bdbc6c3b9ab87a99 request["length"].">";
$str.="b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e長方形の幅: 9375d169471c6c62713724bce1dedc1fb6c5a531a458a2e790c1fd6421739d1c";
$str.="df032da4fe1b0ffd6e625edd5b97f6b7request["width"].">";
$str .="b90dd5946f0946207856a8a37f441edf< ;/tr>";
ブレーク;
ケース 2:
$str.="a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e三角形の最初の辺の長さ: $str.= "515954e8c4692a43d13dd6625878e9earequest["length1"].">";
$str.= "b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e三角形の 2 番目の辺の長さ: 01c3ce868d2b3d9bce8da5c1b7e41e5bb6c5a531a458a2e790c1fd6421739d1c"; $str.="168283bf5f29a910cd4dd5aae11108a6";
$str.="b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5a34de1251f0d9fe1e645927f19a896e81fd6eab2a7ee2af6bf57203ef1271614三角形の 3 番目の辺の長さ: 01c3ce868d2b3d9bce8da5c1b7e41e5b< ;td>";
$str.="b0bec113ecaccd628c860c6bb1dbc4darequest ["length3"].">";
$str.="b90dd5946f0946207856a8a37f441edffd273fcf5bcad3dfdad3c41bd81ad3e5";
ケース 3:
$str.="a34de1251f0d9fe1e645927f19a896e8b4d429308760b6c2d20d6300079ed38e円の半径: 01c3ce868d2b3d9bce8da5c1b7e41e5bb6c5a531a458a2e790c1fd6421739d1c";
$str .="31380512d2c583938523506a5c477202request["radius"]."> ";
$str.="b90dd5946f0946207856a8a37f441edf ブレーク;
}
$str.="a34de1251f0d9fe1e645927f19a896e851e6443f39395b91158f533c3ec5423efb001364715aff0727ac121749879a31b90dd5946f0946207856a8a37f441edf5194ba175fd9c71e9a9f6e68244d73a8";
$str.="26b11a7f62efa2c298718e4eba715eacrequest[ "アクション"].">";
$str.="< ;input type=hidden name='action' value=".$this->request["action"].">"; str.="f5a47148e367a6035fd7a2faa965022ef16b1740fad44fb09bfe928bcc527e08";

return $str; }
}
6c04bd5ca3fcae76e30b72ad730ca86d
3dd732ea127be312a74acc653727f7f5
bacbf9e1ad7f40415ce1670e31edfee3 92e620bc402c4a61ef52e96b8b354a49長方形5db79b134e9f6b82c0b36e0489ee08ed|| 2fe1ff642d6158c8e3dec86177470f3e三角形714c6363a923e4797b068a50c5e22188圆形5db79b134e9f6b82c0b36e0489ee08edcdcaaee4c9b94464012808ae8e1b67a4
adca8a5fa06ffeafb062c2e3f274b930
e04ded29a95eb33dec3710531ce79e6aarea()."ff9d32c555bb1d9133a29eb4371c1213";
echo "周长:".$shape->perimeter()."ff9d32c555bb1d9133a29eb4371c1213";
}
?>
36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e
其他的代码没有变,到底问题出在哪啊??

class__Form.php

<?phpclass 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=5 width=800>";$str.="<caption><h2>".$this->formName."</h2><caption>";$str.="<form action='$this->action' method='$this->method' target=$this->target";switch ($this->request["action"]){case 1:$str.="<tr><th>矩形长度:</th><td>";$str.="<input type='text' name='length' value=".$this->request["length"]."></td></tr>";$str.="<tr><th>矩形宽度:</th><td>";$str.="<input type='text' name='width' value=".$this->request["width"]."></td></tr>";break;case 2:$str.="<tr><th>三角形边长1:</th><td>";$str.="<input type=text name='length1' value=".$this->request["length1"]."></td></tr>";$str.="<tr><th>三角形边长2:</th><td>";$str.="<input type=text name='length2' value=".$this->request["length2"]."></td></tr>";$str.="<tr><th>三角形边长3:</th><td>";$str.="<input type=text name='length3' value=".$this->request["length3"]."></td></tr>";break;case 3:$str.="<tr><th>圆形半径:</th><td>";$str.="<input type=text name='radius' value=".$this->request["radius"]."></td></tr>";break;}$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;}}?>
index.php
<html><head><title>图形计算器</title></head><body><?php function __autoload($className){include ('class__'.ucfirst($className).'.php');}?><center><h2>图形周长和面积计算器</h2><hr><a href="index.php?action=1">矩形</a>||<a href="index.php?action=2">三角形</a>||<a href="index.php?action=3">圆形</a><br /></center><?php switch ($_REQUEST["action"]){case 1:$form=new Form("矩形",$_REQUEST,"index.php");echo $form;break;case 2:$form=new Form("三角形",$_REQUEST,"index.php");echo $form;break;case 3:$form=new Form("圆形",$_REQUEST,"index.php");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>

我这个眼神啊!搞定。犯了超级低级的错误。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。