みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

FORMからPHP処理  

こんにちわ ある参考書をみながらスクリプトを打ち込んでいるのですがFORM(touroku.html)で登録ボタンを押すと(touroku.php)にpostで送信されデータベース処理をした結果(登録完了)と表示されるはずなのですが何も表示されません。参考書ではhttp://touroku.htmlからhttp://touroku.phpに移動しているのですけど自分のはC:\www\touroku.htmlからC:\www\touroku.phpに移動しています。このあたりが何か関係あるのでしょうか?サーバーはANHTTPDを使用しています。なにか設定が間違っているのでしょうか?スクリプトは以下の様です。
<html>
<body>
<?php
if(!$con=mysql_connect("localhost,"mysql","****")){
echo"接続エラー";
exit;
}
if (!mysql_select_db("****",$con)){
echo"データベース選択エラー";
exit;
}
$sql = "insert into ****_tbl(name,age) values('$nm',$age)";
//sqlを実行
if(!$res=mysql_query($sql)){
echo "Sql実行時エラー";
exit;
}
mysql_close($con);
echo "登録完了";
?>
</body>
</html>

投稿日時 - 2005-05-21 07:54:45

QNo.1400436

すぐに回答ほしいです

質問者が選んだベストアンサー

補足です。

> このスクリプトは参考書付属のCDからコピーしたものだからsql文は間違ってないと思います

参考書がすべて正しいとは限りません
チェックに抜けがあり、動かない場合もあります。
しかしほとんどの場合動かないときはコピーミスであったり、書き換えるときに余計な文字を消してしまったりすることが多いです。


>ただ参考書にはセキュリティー上の問題で$nmで参照できない場合は$val=$http_post_vars["nm"]で参照できると書いてあるのですが...

これはPHP3とかのころの話です。
現在は
$_POST['nm'] とするのが標準となっています。
下位互換性のために使えますが。

本当に分からないときはまた最初から作り直せばすんなり動く場合もあります。

投稿日時 - 2005-05-23 10:22:07

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.5

No3.の方が4行目あたりでエラーが出ていると言っていますよね。

if(!$con=mysql_connect("localhost,"mysql","****")){

うーん、よく見ると「"」が5個しかないような…。

あと途中でエラーになった場合「exit」してしまうと
最後の「</body>」や「</html>」まで辿り着かないと思います。

投稿日時 - 2005-05-23 10:01:47

ANo.4

>Sql実行時エラーが出てしまいます
>テーブル名も間違っていないし全く解りません
エラーが出るからにはsql文が間違っているのでしょう。
$sql をmysqlに渡す前にprintしてみてください。
また、mysql_error() というmysqlからのエラー内容を返す関数があったはずですが。
phpマニュアルに、mysqlとの通信関数がいっぱい載ってますよ。

http://www.php.net/manual/ja/

参考URL:http://www.php.net/manual/ja/

投稿日時 - 2005-05-21 21:18:39

補足

ありがとうございます
このスクリプトは参考書付属のCDからコピーしたものだからsql文は間違ってないと思います
ただ参考書にはセキュリティー上の問題で$nmで参照できない場合は$val=$http_post_vars["nm"]で参照できると書いてあるのですが...$nmが参照出来てないのでしょうか?その場合$sql = "insert into ****_tbl(name,age) values('$nm',$age)";はどの様に変更すれば良いのでしょうか?

投稿日時 - 2005-05-21 21:56:10

ANo.3

>ブラウザのURLにhttp://localhost/touroku.phpと打ち込むと
>Parse error: parse error in c:\php\touroku.php on line 4

英語を読みましょう。
c:\php\touroku.php の 4行目辺りでエラーが起きています。
要するに記述ミスです。

ページを表示できない場合はどこかにミス(バグ)があるためだと思われます。

投稿日時 - 2005-05-21 16:11:21

補足

ありがとうございます
皆様の回答を参考にして途中まで解決したのですが
Sql実行時エラーが出てしまいます
テーブル名も間違っていないし全く解りません
ご指導お願いします

投稿日時 - 2005-05-21 20:00:12

ANo.2

PHPの動作環境は整っていますか?とりあえずPHPが動作する仕組みを理解しないといけないようですね。

PHPでWEBページを表示させようとする場合、(表現は不適切かも知れませんが)WEBサーバーがPHPを起動します。apache、IIS、PWSなどという名前のやつですね。ですのでまず最初にPHPをインストールして、WEBサーバーからPHPが動くように設定をしないといけません。参考書にはこのあたりの事は書かれていませんか?

そしてスクリプトのテストですが、ブラウザに「C:\www~」と打ち込んでも、それはローカルのファイルを単にブラウザで表示させようとしているだけで、PHPは起動してくれません。WEBサーバーに対してリクエストしないといけません。これがhttp://~というリクエストです。スクリプトを打ち込んでいる自分のマシンにPHPの設定があるのなら、恐らくhttp://localhost/~です。

設定が済んだらいきなりスクリプトを打ち込む前にmoon nightさんが指摘されてるように<?phpinfo()?>の1行だけを書いたスクリプトを任意の名前.phpで作って、それをhttp://localhost/スクリプト名で表示させてみましょう。設定が正常に出来ていればWEBサーバーやPHPのインストール状況などが表示されるはずです。もし表示できないようでしたら、スクリプト以前に設定をもう一度確認しましょう。

投稿日時 - 2005-05-21 12:01:52

ANo.1

>C:\www\touroku.htmlからC:\www\touroku.phpに移動しています。

C\:からのアドレスではPHPは動きません。
http://からのアドレスにしてください。
http://localhost/で自分のローカルアドレス(ANHTTPDで指定したルートアドレス)が表示されるはずです。

また、PHPを最初テストするときは打ち込みミスやその他の要因が多大に関係してくるので、

<?php phpinfo() ?>

とだけ記述したのもでテストをしてみましょうね。

投稿日時 - 2005-05-21 10:25:39

補足

ありがとうございます
PHPの動作テストは完了しています。
ANHTTPDも動作しています。
動作環境はANHTTPD PHP4.3.11 MYSQL4.0.24
フォームは以下のスクリプトです
<html>
<body>
<form action="touroku.php" method="post">
名前:<input type="text" name="nm">
年齢:<input type="text" name="age">
<input type="submit" name="exec" value="登録">
</form>
</body>
</html>
登録ボタンを押すとPHPの処理によってtouroku.php
のスクリプトが自動的に処理されるのではないのですか?
ブラウザのURLにhttp://localhost/touroku.phpと打ち込むと
Parse error: parse error in c:\php\touroku.php on line 4
と表示されますhttp://localhost/test.php(<?phpinfo();?>)
では正常に動作しています
touroku.html及びtouroku.phpはhttpd.exeが置いてあるフォルダにありますtest.phpはphp.exeが置いてあるフォルダに格納してあるのでtouroku.phpもこのフォルダに入れて登録ボタンを押してみたらページを表示できませんとでます???

投稿日時 - 2005-05-21 13:15:17

あなたにオススメの質問