質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4807閲覧

データベースに登録データが反映されません。

Tomoaki_Fukuda

総合スコア75

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/10/19 13:40

編集2015/10/19 14:55

webサービスのユーザー登録画面を作成中ですが、
登録フォームから各項目の入力を行ってもデータベースに反映されません。
この原因をご教示頂けませんでしょうか?
2つ目の「check.php」に原因があるように思われます。

・データベース
phpmyadminをしております。下記添付のような状態です。
イメージ説明

コードは下記4つです。
1.index.php

コード
<?php session_start(); if (!empty($_POST)) { //エラー項目の確認 if ($_POST['name'] == '') { $error['name'] = 'blank'; } if ($_POST['mail'] == '') { $error['mail'] = 'blank'; } if (strlen($_POST['pass']) < 4) { $error['pass'] = 'length'; } if ($_POST['pass'] == '') { $error['pass'] = 'blank'; } if (empty($error)) { $_SESSION['ドットインストール'] = $_POST; header('Location: check.php'); exit(); } } // 書き直し if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'rewrite') { $_POST = $_SESSION['ドットインストール']; $error['rewrite'] = true; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <p>必要事項をご記入ください</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ユーザー名<font color="red"> 必須</font></dt> <dd> <input type="text" name="name" size="35" maxlength="255" value="<?php if (isset($error['name'])) { echo htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); } ?>"> <?php if (isset($error['name']) && $error['name'] == 'blank'): ?> <p><font color="red">* ユーザー名を入力してください</font></p> <?php endif; ?> </dd> <dt>メールアドレス<font color="red"> 必須</font></dt> <dd> <input type="text" name="mail" size="35" maxlength="255" value="<?php if (isset($error['mail'])) { echo htmlspecialchars($_POST['mail'], ENT_QUOTES, 'UTF-8'); } ?>"> <?php if (isset($error['mail']) && $error['mail'] == 'blank'): ?> <p><font color="red">* メールアドレスを入力してください</font></p> <?php endif; ?> <?php if (isset($error['mail']) && $error['mail'] == 'duplicate'): ?> <p><font color="red">* 指定されたメールアドレスは既に登録されています</font></p><?php endif; ?> </dd> <dt>パスワード<font color="red"> 必須</font></dt> <dd> <input type="password" name="pass" size="10" maxlength="20" value="<?php if (isset($error['pass'])) { echo htmlspecialchars($_POST['pass'], ENT_QUOTES, 'UTF-8'); } ?>"> <?php if (isset($error['pass']) && $error['pass'] == 'blank'): ?> <p><font color="red">* パスワードを入力してください</font></p> <?php endif; ?> <?php if (isset($error['pass']) && $error['pass'] == 'length'): ?> <p><font color="red">* パスワードは4文字以上で入力してください</font></p> <?php endif; ?> </dd> </dl> <div><input type="submit" value="入力内容を確認"></div> </form> </body> </html>

2.check.php

コード
<?php session_start(); require('dbconnect.php'); if(!isset($_SESSION['ドットインストール'])){ header('Location: index.php'); exit(); } if(!empty($_POST)){ //登録処理をする $sql = sprintf('INSERT INTO users SET name="", mail="%s", pass="%s"', mysqli_real_escape_string($db, $_SESSION['ドットインストール']['name']), mysqli_real_escape_string($db, $_SESSION['ドットインストール']['mail']), mysqli_real_escape_string($db, sha1($_SESSION['ドットインストール']['pass'])) ); mysqli_query($db, $sql) or die(mysqli_error($db)); unset($_SESSION['ドットインストール']); header('Location: thanks.php'); exit(); } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <form action="" method="post"> <dl> <dt>ユーザー名</dt> <dd> <?php echo htmlspecialchars($_SESSION['ドットインストール']['name'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>メールアドレス</dt> <dd> <?php echo htmlspecialchars($_SESSION['ドットインストール']['mail'], ENT_QUOTES, 'UTF-8'); ?> </dd> <dt>パスワード</dt> <dd> 【表示されません】 </dd> </dl> <div><a href="index.php?action=rewrite">&laquo;&nbsp;書き直す</a> <input type="submit" value="登録する"></div> </form> </body> </html>

3 thanks.php

コード
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>新規会員登録</title> </head> <body> <p>ユーザー登録が完了しました</p> <p><a href="../">ログインする</a></p> </body> </html>

4 dbconnect.php

コード
<?php $db = mysqli_connect('localhost', 'root', '', 'Loginpage') or die(mysqli_connect_error()); mysqli_set_charset($db, 'utf8'); ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

少し厳しい意見になるかと存じますが、
デバックはされておられるでしょうか?

データベースにデータが登録されない要因は大きく2つございます。

1.パラメータの受け渡し失敗要因
check.php でINSERT のSQL文を流していますが、実際に流しているSQL文をvar_dump等で表示し確認されておられるでしょうか?

たとえばカンマが2つ連続していたり、文法エラーとなるような要素は無いでしょうか?
また、そもそもその部分まで処理が到達してるでしょうか?

2.データベースのパラメータエラー要因
データベースコネクト時、データインサート時に、MYSQLからのエラーコードを確認しておられるでしょうか?

$sts = mysqli_connet();
$sts = mysqli_query();
という風に、処理結果をとり、$sts != true の場合、何かしらのエラーが発生しています。

var_dump(mysqli_error($db));
で、エラーメッセージを表示させることができるので、何エラーが発生しているかを確認されてはいかがでしょう。

また、mysqli_select_dbまたは、mysqli_connectで、データベース名の選択がなされていないのも気になります。

投稿2015/10/20 04:29

KenjiObata

総合スコア440

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

いろいろとおかしなところがあります。
動かしていないから詳細は分かりませんが、

① セッションがなかったら index.php に飛んでいる
そもそもセッションはどこかでセットしているかもしれませんが、上記ソースでは読み取れないです
check.php が、ユーザ登録の最初の画面でしょうか?

② だとすると、check.php のアクションが設定されていない

<form action="" method="post"> アクションが指定されていないので呼び出せません。 アクションはちゃんとセットしましょう

③ dbconnect.php でパスワードがセットされていない
構文の利用方法はあってますか?
mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

そもそもですが、、、
商品一覧の index.php は質問に不要なソースですし、
ユーザ登録する最初のページ(HTML)も記載していないです。
(HTMLならセッションがセットされてないので①に該当して、そもそも表示されないはずです)

上記ソースにはいろんな機能が詰まってます。
・フォームのデータ授受(HTML→PHP)
・データ授受の方法(リンクのGETとデータのPOST)
・文字コード変換
・DB接続
・DB登録
・外部ファイル読み込み(require)
・セッション管理

まずは「ユーザ登録」機能に絞り、HTMLからPHPへのページ遷移・データ授受と
順にソースを作成していった方が良いです。

ガムバッテください

投稿2015/10/19 14:18

kurosawa

総合スコア780

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tomoaki_Fukuda

2015/10/19 14:56

申し訳ございません。 「index.php」の内容が異なっておりましたので、訂正させて頂きました。 こちらの内容では如何でしょうか? もしお手すきでしたら、再度ご確認頂けますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問