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

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

解決済みの質問

ユーザー登録画面

学校の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という項目を作りました

投稿日時 - 2010-02-04 17:30:09

QNo.5649042

すぐに回答ほしいです

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

#1です。

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

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

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

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

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

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

投稿日時 - 2010-02-09 17:54:54

ANo.4

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

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

回答(4)

ANo.3

#1です。

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

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

投稿日時 - 2010-02-09 13:58:59

補足

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

投稿日時 - 2010-02-09 15:38:09

ANo.2

#1です。

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

投稿日時 - 2010-02-04 18:28:00

補足

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

投稿日時 - 2010-02-09 12:24:05

ANo.1

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

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

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

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

投稿日時 - 2010-02-04 17:55:38

あなたにオススメの質問