プロが教えるわが家の防犯対策術!

学校のPHPの課題でPHPmyadminを使ってユーザー情報の登録画面を作っています。プログラムは大体できたのですがうまく動いてくれません。自分の作ったプログラムのどこが間違っているか教えていただけないでしょうか?
できればどのように直したらいいか教えていただけたらと思います。
↓が作ったプログラムです。

<?php
$host = "localhost";
if (!$conn = mysql_connect($host,"root","admin")){
die("データベース接続エラー.<br />");
}
mysql_select_db("kisop", $conn);

$name = mysql_real_escape_string($_POST['name']);
$postal_code = mysql_real_escape_string($_POST['postal_code']);
$state = mysql_real_escape_string($_POST['state']);
$city = mysql_real_escape_string($_POST['city']);
$street = mysql_real_escape_string($_POST['street']);
if ($name == ""){
exit ("名前が入力されていません");
}

$sql = "INSERT INTO user_table(name,postal_code,state,city,street) VALUES('$name', '$postal_code', '$state', '$city' ,'$street')";

mysql_query($sql, $conn) or die("登録できませんでした");
print("登録しました。<a href=\"user.php\">user.php</a>で確認してください。");
?>

<html>
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
</head>
<body>
<table width="100%">
<tr><td align="center"><h1>ユーザ情報登録</h1></td></tr>
</table>

<table width="100%">
<tr>

<td valign="top">

<form action="user.php" method="post">
<table border align="center">
<tr><td>名  前</td><td><input type=\"text\" name=\"name\"></td>
<tr><td>郵便番号</td><td><input type="text" name="postal_code"></td></tr>
<tr><td>都道府県</td><td><input type="text" name="state"></td></tr>
<tr><td>市 町 村</td><td><input type="text" name="city"></td></tr>
<tr><td>番  地</td><td><input type="text" name="street"></td></tr>
<tr><td colspan="4" align="center"><input type="submit" value="登録"></td></tr>
</table>
</form>
</td>

</tr>
</table>
</body>
</html>

phpmyadminにはkisopというデータベースを作りuser_tableというテーブルを作りました。user_tableにはname postal_code state city streetという項目を作りました

A 回答 (4件)

> 学校のPHPの課題で


うは~。。最近って学校でPHP教えてるのね。。。とい俺の感想は置いときます。
いぁ、まぁ、専門学校とかなんでしょうけど、俺の時代は情報処理科すらなかったもんですからね。。。

んー、で、見た感じなんですけど、特におかしげなトコはないように思いました。
特に 検証とかもしてないんで よく分かりませんけどね。
ただ、サニタイズもしっかり押さえてるのは、ちゃんとしてるなと思いました。

> プログラムは大体できたのですがうまく動いてくれません。
具体的に どう動いてくれないんでしょう?

このデータベースに対してadminってユーザー作ってないとすれば、
多分、分かる形でエラー出てると思いますし。
    • good
    • 0

#1です。



ふと思ったんですけど、フィールドの型はあってますか?
string を int型に 入れようとしてたりすると、エラー出さずに DBにも その項目だけ 入らないはずです。

この回答への補足

すみません。初歩的な質問で申し訳ないのですがフィールドの型ってのはphpmyadminに作ったuser_tableの'種別'のところをおっしゃているのでしょうか?

補足日時:2010/02/09 12:24
    • good
    • 0

#1です。



> user_tableの'種別'のところをおっしゃているのでしょうか?

はい。
phpMyAdminだと、テーブルの構造の種別のところになりますね。
int とか varchar とか です。

この回答への補足

user_tableには、id, name, postal_code, state, city, street, write_flg, admin_flgという項目があるのですが、write_flgとadmin_flgがintで他がvarcharです。

補足日時:2010/02/09 15:38
    • good
    • 0

#1です。



> user_tableには、id, name, postal_code, state, city, street, write_flg, admin_flgという項目があるのですが、write_flgとadmin_flgがintで他がvarcharです。

テーブルに関しては、細かいツッコミはあるものの、動作に関しては問題ないと思われます。

> うまく動いてくれません。

具体的な状況説明がないので、もう放置しようかと思いましたが、
乗りかかった船なので、実際に動かしてみました。

最初のアクセスで、いきなり「名前が入力されていません」で、exitされました。
そりゃそうです。最初のアクセスなんですから。
これに気がつかない俺もどうなんだって話ですが。

これぐらいのスクリプト書けるのであれば、説明だけで十分だと思いますので、
ここら辺の処理を$_POSTがあった場合のみ実行するようにしてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!