🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

2回答

1544閲覧

codeナンバーが表示されない。また登録されたデータが出力されない。

of_the_Europa

総合スコア66

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2019/12/18 14:26

編集2019/12/20 09:06

前提・実現したいこと

スタッフ情報の修正画面を作成しております。
スタッフリストを修正すると、修正したcodeの値が数字ではなく「on」と表示され、更にスタッフ名の項目が本来はtext内に自動で出力されなければならないのですが、そこに名前の表記はありませんでした。

今回のエラー表示は下記のとおりです。↓↓↓
イメージ説明

※これまでの処理の流れ
スタッフを追加する(staff_add.php) → スタッフ情報の確認画面(staff_add_check.php) → 情報の追加を完了させる画面(staff_add_done.php)→ 登録されたスタッフ一覧画面(staff_list.php) → スタッフ情報の修正画面(staff_edit.php)

発生している問題

修正画面にて名前が自動で出力されない。またcodeの値がブラウザ表記で「on」になる。

この2点を教えていただけたら幸いです。

該当のソースコード

<?php try { $staff_code=$_POST['staffcode']; ...... //データベース接続記入欄 $sql='SELECT name FROM mst_staff WHERE code=?'; $stmt=$dbh->prepare($sql); $data[]=$staff_code; $stmt->execute($data); $rec=$stmt->fetch(PDO::FETCH_ASSOC); $staff_name=$rec['name']; $dbh=null; } catch(Exeption $e) { print'ただいま障害により大変ご迷惑をお掛けしております。'; exit(); } ?> スタッフ修正<br/> <br/> スタッフコード<br/> <?php print $staff_code;?> <br/> <br/> <form method="post"action="staff_edit_check.php"> <input type="hidden"name="code"value="<?php print $staff_code;?>"> スタッフ名<br/> <input type="text"name="name"style="width:200px"value="<?php print $staff_name;?>"><br/> パスワードを入力してください。<br/> <input type="password"name="pass"style="width:100px"><br/> パスワードをもう一度入力してください。<br/> <input type="password"name="pass2"style="width:100px"><br/> <br/> <input type="button"onclick="history.back()"value="戻る"> <input type="submit" value="OK"> </form>

試したこと

●$staff_code=$_POST['staffcode']; → 'staffcode'のところを単に'code'としてみた。
●スタッフを追加する(staff_add.php)項目にて →
スタッフ名を入力してください。<br/>
<input type="text" name="name" style="width: 200px"><br/>のところに、value="name"と加えてみた。
●phpmyadminでの確認
1、AUTO_INCREMENTにはチェックが入っている
2、各レコードにcodeの番号が振られている。 

……ずぶの素人なので、試したことの意味がまるで理に適っていないかもしれません。その点は特に気にしていただかない方が良さそうです(混乱させてしまうので)。

補足情報(FW/ツールのバージョンなど)

phpmyadminに関してはxamppのバージョン7.2.3を利用しています。

更に補足です ↓↓↓
ご指摘にありました、staffcodeというnameがinputされたのは、上記(staff_edit.php)の一つ前の画面、登録されたスタッフの一覧画面(staff_list.php)からでした。そのstaff_list.phpの記述を念のため下記に記しておきます。staffcodeはこの中では後半のwhile処理のif文に登場します。

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ろくまる農園</title> </head> <body> <?php ini_set('display_errors', "On"); ?> <?php error_reporting(E_ALL & ~ E_DEPRECATED & ~ E_USER_DEPRECATED & ~ E_NOTICE); ?> <?php try { $dsn='mysql:dbname=shop;host=localhost;charset=utf8'; $user='root'; $password=''; $dbh=new PDO($dsn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql='SELECT code,name FROM mst_staff WHERE 1'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh=null; print'スタッフ一覧<br/><br/>'; print'<form method="post"action="staff_edit.php">'; while(true) { $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false){break;} print'<input type="radio" name="staffcode" value"'.$rec['code'].'">'; print $rec['name'];print'<br/>'; } print'<input type="submit"value="修正">'; print'</form>'; } catch(Esception $e) { print'ただいま障害により大変ご迷惑をお掛けしております。';exit(); } ?> </body> </html>

もしおかしな点がございましたら、ご回答のご協力をいただければと思います。

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

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

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

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

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

of_the_Europa

2019/12/18 15:01

修正のご依頼について、これで良いか不安なのですが、お手隙でありましたら確認の方お願い致します。
guest

回答2

0

staffcodeというnameのinputが提示コード内には見受けられません。
そもそもundefined indexのNoticeが出るコードに思います。
エラー表示ONにして確認してみてください。

蛇足。
""が半角なので特に問題は起きないようには思いますが、
全体的に属性と属性値が隣接しすぎているので、1つでもいいので半角スペース入れてあげてください。
method="post"action="staff_edit_check.php"

method="post" action="staff_edit_check.php"

投稿2019/12/18 21:18

編集2019/12/18 21:22
m.ts10806

総合スコア80875

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

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

of_the_Europa

2019/12/20 09:23

御返答ありがとうございます。 staffcodeというもののinputは前のページから定義したものでした。ただご回答に対する自分の解釈は見当違いかもしれませんのでご了承ください。 そしてエラー表示に関しては、エラー表示のレベルも設定したうえでstaff_edit.phpの冒頭にこのように記載しました。↓↓↓ <body> // staff_edit.phpの冒頭にエラー表示とエラー表示レベルの設定を記載 <?php ini_set('display_errors', "On"); ?> <?php error_reporting(E_ALL & ~ E_DEPRECATED & ~ E_USER_DEPRECATED & ~ E_NOTICE); ?> <?php try { $staff_code = $_POST['staffcode']; これとは別のエラー表示とエラー表示レベルの設定も試してみましたが、結果はどれもエラーの記述はなく、ブラウザ表示はこの質問の最初に貼っておいた画像と変わりありませんでした。 ご足労お掛けしております。
guest

0

自己解決

今回のエラーは初歩的な確認不足でした。エラートラップを捕捉するchatchの例外クラス名"Exception"のスペルミスでした。しかも、上記2ページとも間違っていて、間違った二つともスペルが一致しないものでした。それに対して明確なエラー表示が出なかったことに、xamppのバージョンが違うのではないかと一度ソフトを入れ直してみたりと見当違いなことばかりしておりました。
気にしてくださった方、回答してくださったm.ts10806様、お手間をとらせてしまい申し訳ありません。

他にはあまり気にされている方はいらっしゃらないと思いますが、自らの戒めとして記録させてもらいます。

投稿2019/12/23 13:55

of_the_Europa

総合スコア66

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問