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

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

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

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

PHP

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

Q&A

2回答

3746閲覧

就職活動の一環で就労支援サービスのシステムを作っているが、ユーザー一人だけの個人情報を表示したい

rura

総合スコア70

MySQL

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

PHP

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

0グッド

0クリップ

投稿2016/07/16 12:39

編集2016/07/18 00:10

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
PHPで就労移行支援での勤怠と就労移行支援提供実績記録表を登録した内容で印刷できるシステムを作成してます。
私はPHP初心者なのですが、今回は利用者さんが引越し等を行った際に登録内容をシステム責任者側からマイページの編集で変更できるようにしたいと考えています。

就労支援実績記録表
http://www.kaigo-wel.city.nagoya.jp/_files/00015271/syuroikosien_jisseki.pdf
###発生している問題・エラーメッセージ

今回のerrorですが、SQL文の書き方が良くないのか、このままだとユーザー全員分が表示されたり、セキュリティ的に良くないという状態になってます。これの直し方がよく分からず困っております。
PHPとMYSQLが得意な方よろしくお願いします

###該当のソースコード

//connection.php(データベース連携)userform.php(登録画面)からの出力結果 include ('connection.php');// $q = "SELECT company, id,password,last_name,first_name,gender,age,zip,prefecture,city, addressnam,bill,tell,fax,email,registration_date, id FROM users ORDER BY registration_date ASC"; /*$q =mysqli_query($dbc , "UPDATE `users` SET id='$id_user',company=[value-2], `first_name`=[value-3], `last_name`=[value-4], `tell`=[value-5], `fax`=[value-6], `email`=[value-7], `gender`=[value-8], `age`=[value-9], `zip`=[value-10], `prefecture`=[value-11], `city`=[value-12], `addressnam`=[value-13], `bill`=[value-14], `coments`=[value-15], `password`=[value-16], `registration_date`=[value-17] WHERE 1);*/ $r = mysqli_query($dbc, $q); $num = mysqli_num_rows($r); if ($num > 0) {//出力結果を一覧表示 echo "<br><div class='dbs'>"; echo "<table border > <tr> "; while ($row = mysqli_fetch_array($r)) { echo "<tr> <th><a href='edit_user.php?user_id =". $row['id']."'>編集</a></th>//編集で内容を変更 <th><a href='delete.php?user_id =".$row['id']."&fname=".$row['first_name']."&lname=".$row['last_name']."'>削除</a></th>//削除で内容を削除 <tr> <th colspan='2'>所属先企業名</th> <td> ".$row['company']."</td> </tr> <tr> <tr> <th colspan='2'>入社日と時間</th> <td> ".$row['registration_date']."</td> </tr> <tr> <th colspan='2'>会員番号</th> <td> ".$row['id']."</td> </tr> <tr> <tr> <th colspan='2'>所属先選択</th> <td> ".$row['id']."</td> </tr> <tr> <th colspan='2'>名前</th> <td>".$row['first_name']." ". $row['last_name']."</td> </tr> <tr> <th colspan='2'>年齢</th> <td> ".$row['age']."</td> </tr> <tr> <th colspan='2'>性別</th> <td> ".$row['gender']."</td> </tr> <tr> <th colspan='2'>パスワード</th> <td> ".$row['password']."</td> </tr> <th rowspan='3'>連絡先</th> <th>電話番号</th> <td> ".$row['tell']."</td> <tr> <th>FAX</th> <td> ".$row['fax']."</td> <tr> <th>メール</th> <td> ".$row['email']."</td> </tr> <tr> <th rowspan='5'>ご住所</th> <th>郵便番号</th > <td> ".$row['zip']."</td> </tr> <tr> <th >都道府県</th > <td> ".$row['prefecture']."</td> </tr> <tr> <th >市区町村</th > <td> ".$row['city']."</td> </tr> <tr> <th >番地番号</th > <td> ".$row['addressnam']."</td> </tr> <tr> <th >アパート・マンション</th > <td> ".$row['bill']."</td> </tr> <tr> <th colspan='2'>コメント</th> <td></textarea></td> </tr> </tr>"; } echo "</table>"; echo "</div><br>"; }else { echo "<p>There are currently no registrated users .</p>"; } mysqli_close($dbc); ?>

###試したこと
課題に対してアプローチしたことを記載してください
元のデータから表のレイアウトを変更してあります。
###補足情報(言語/FW/ツール等のバージョンなど)
php,phpMyAdmin

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

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

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

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

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

Mr_Roboto

2016/07/16 12:45

こんばんは、大変見づらいのでコードはコードタグで囲んでくださいね ^^
Mr_Roboto

2016/07/16 12:48

あとセキュリティ的によくないという表現は曖昧すぎるので、どうしてそう思うのかも書いたほうがいいと思いますよ
退会済みユーザー

退会済みユーザー

2016/07/17 02:39 編集

質問投稿した後に、確認くらいできないものなんですかね…就職活動の一環なら、ソースが書けることより、そういう配慮ができることの方がよっぽど大切なことでは?
guest

回答2

0

とりあえず、sql文を見つけたので、コメントします。

sql

1$q = "SELECT company,id,password,last_name,first_name,gender,age,zip,prefecture,city,addressnam,bill,tell,fax,email,registration_date, id FROM users ORDER BY registration_date ASC";

WHEREがないので全員分表示されます。

投稿2016/07/16 13:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/07/17 11:23

ちょっとかみ合っていないので、どうコメントすればよいか分かりませんが、まずは質問を見やすいように修正して下さい。 あと、こちらの件は所属先に相談されていますか? 記述内容が、無修正のものだとすると、google にもコードがインデックスされてしまっているのですが。 表に出るスクリプトではなさそうとはいえ、所属先としてまずければ、teratail さんに削除依頼を出す必要があります。
rura

2016/07/17 11:37

知り合いに頼まれてやってますが、この人はこれで良いと言っております。
rura

2016/07/17 11:42

修正したいのは山々ですが、 テラテイルは初めてです。 改行入れて見やすくしようとすルのをここ見ていますが、 うまく出来ません
rura

2016/07/17 11:44

<?php //connection.php(データベース連携)userform.php(登録画面)からの出力結果 include ('connection.php');// $q = "SELECT company,id,password,last_name,first_name,gender,age,zip,prefecture,city,addressnam,bill,tell,fax,email,registration_date, id FROM users ORDER BY registration_date ASC"; /*$q =mysqli_query($dbc , "UPDATE `users` SET id='$id_user',company=[value-2],`first_name`=[value-3],`last_name`=[value-4],`tell`=[value-5],`fax`=[value-6], `email`=[value-7],`gender`=[value-8],`age`=[value-9],`zip`=[value-10],`prefecture`=[value-11],`city`=[value-12],`addressnam`=[value-13], `bill`=[value-14],`coments`=[value-15],`password`=[value-16],`registration_date`=[value-17] WHERE 1);*/ $r = mysqli_query($dbc, $q); $num = mysqli_num_rows($r); if ($num > 0) {//出力結果を一覧表示 echo "<br><div class='dbs'>"; echo "<table border > <tr> "; while ($row = mysqli_fetch_array($r)) { echo "<tr> <th><a href='edit_user.php?user_id =". $row['id']."'>編集</a></th>//編集で内容を変更 <th><a href='delete.php?user_id =".$row['id']."&fname=".$row['first_name']."&lname=".$row['last_name']."'>削除</a></th>//削除で内容を削除 <tr> <th colspan='2'>所属先企業名</th> <td> ".$row['company']."</td> </tr> <tr> <tr> <th colspan='2'>入社日と時間</th> <td> ".$row['registration_date']."</td> </tr> <tr> <th colspan='2'>会員番号</th> <td> ".$row['id']."</td> </tr> <tr> <tr> <th colspan='2'>所属先選択</th> <td> ".$row['id']."</td> </tr> <tr> <th colspan='2'>名前</th> <td>".$row['first_name']." ". $row['last_name']."</td> </tr> <tr> <th colspan='2'>年齢</th> <td> ".$row['age']."</td> </tr> <tr> <th colspan='2'>性別</th> <td> ".$row['gender']."</td> </tr> <tr> <th colspan='2'>パスワード</th> <td> ".$row['password']."</td> </tr> <th rowspan='3'>連絡先</th> <th>電話番号</th> <td> ".$row['tell']."</td> <tr> <th>FAX</th> <td> ".$row['fax']."</td> <tr> <th>メール</th> <td> ".$row['email']."</td> </tr> <tr> <th rowspan='5'>ご住所</th> <th>郵便番号</th > <td> ".$row['zip']."</td> </tr> <tr> <th >都道府県</th > <td> ".$row['prefecture']."</td> </tr> <tr> <th >市区町村</th > <td> ".$row['city']."</td> </tr> <tr> <th >番地番号</th > <td> ".$row['addressnam']."</td> </tr> <tr> <th >アパート・マンション</th > <td> ".$row['bill']."</td> </tr> <tr> <th colspan='2'>コメント</th> <td></textarea></td> </tr> </tr>"; } echo "</table>"; echo "</div><br>"; }else { echo "<p>There are currently no registrated users .</p>"; } mysqli_close($dbc); ?>
退会済みユーザー

退会済みユーザー

2016/07/17 11:45

そうですか。個人的には「Copyright©」あたりの表記は消しておきたいですが、問題ないと判断されているのであれば、仕方ないですね。 あと、コードタグで囲もうとしているのだと思いますが、結果が反映されていないですね。 多分、```の後の改行が抜けているのではないかと思います。
退会済みユーザー

退会済みユーザー

2016/07/17 11:48

編集時に右側の tips を消すとプレビューが出ます。 そちらを確認して投稿して下さい。
rura

2016/07/17 11:49

すいませんが、コードタグの使い方を知りません ただ分かっているのは、ここのページはユーザー1人様の個人情報を載せててほしいという依頼でした。
Mr_Roboto

2016/07/17 11:50

人の回答にすいません、お邪魔します。 初めてとおっしゃってますが、以前の質問でちゃんとコードタグ使えてますよね? https://teratail.com/questions/37388 コメントに書かずに質問の方をプレビュー見ながら編集しなおしたほうがいいと思いますよ。 きちんとした回答が欲しいのであれば、自分でもそれなりの労力を払うべきかと思いますよ ^^
rura

2016/07/17 12:00

ありがとうございます。何分テラテイルは苦手ですが、 頑張ります。
rura

2016/07/18 00:11

======================================== 会員登録画面 if ($_SERVER['REQUEST_METHOD'] == 'POST') { $company = $_POST['company']; $fname = $_POST['fname']; $lname = $_POST['lname']; $tell = $_POST['tell']; $fax = $_POST['fax']; $email = $_POST['email']; $gender = $_POST['gender']; $age = $_POST['age']; $belong = $_POST['belong']; $zip = $_POST['zip']; $prefecture = $_POST['prefecture']; $city = $_POST['city']; $addressnam = $_POST['addressnam']; $bill = $_POST['bill']; $comments = $_POST['comments']; $password = $_POST['password']; if (!empty($company) &&!empty($fname) && !empty($lname) && !empty($tell)&& !empty($fax)&& !empty($email) &&!empty($gender) && !empty($age)&& !empty($belong) && !empty($zip) && !empty($prefecture) && !empty($city)&& !empty($addressnam) && !empty($bill) && !empty($comments) && !empty($password)) { include ('connection.php'); mysqli_query($dbc,"INSERT INTO users(company,first_name,last_name,tell,fax,email,gender,age,belong,zip,prefecture,city,bill,addressnam,coments,password,registration_date) VALUES('$company','$fname','$lname','$tell','$fax','$email','$gender','$age','$belong','$zip','$prefecture','$city','$addressnam','$bill','$comments','$password',NOW())"); $registered = mysqli_affected_rows($dbc); echo $registered."件登録されました"; }else { echo "<p style='color:red';>ERROR:フォームがすべて入力されてません</p>"; } }else { echo "<h3>下記内容をご記入とご確認の上で会員登録を押してください。</h3>"; } ?> <form method="POST" action="userform.php" class="contact"> <table> <tr> <th colspan="2">所属先企業名</th> <td><input type="text" name="company" size="20" maxlength="50" value=""></td> </tr> <tr> <th colspan="2">名前</th> <td>名字:<input type="text" name="fname" size="20" maxlength="50" value=""><br> 名前;<input type="text" name="lname" size="20" maxlength="50" value=""></td> </tr> <tr> <th colspan="2">年齢</th> <td><select name="age"> <option value="18">18</option> <option value="19">19</option> <option value="20">20</option> <option value="21">21</option> <option value="22">22</option> <option value="23">23</option> <option value="24">24</option> <option value="25">25</option> <option value="26">26</option> <option value="27">27</option> <option value="28">28</option> <option value="29">29</option> <option value="30">30</option> <option value="31">31</option> <option value="32">32</option> <option value="33">33</option> <option value="34">34</option> <option value="35">35</option> <option value="36">36</option> <option value="37">37</option> <option value="38">38</option> <option value="39">39</option> <option value="40">40</option> <option value="41">41</option> <option value="42">42</option> <option value="43">43</option> <option value="44">44</option> <option value="45">45</option> <option value="46">46</option> <option value="47">47</option> <option value="48">48</option> <option value="49">49</option> <option value="50">50</option> <option value="51">51</option> <option value="52">52</option> <option value="53">53</option> <option value="54">54</option> <option value="55">55</option> <option value="56">56</option> <option value="57">57</option> <option value="58">58</option> <option value="59">59</option> <option value="60">60</option></td> </tr> <tr> <th colspan="2">所属先選択</th> <td><select name="belong"> <option value="選択">選択</option> <option value="スタッフ">スタッフ</option> <option value="A型">A型</option> <option value="B型">B型</option> <option value="移行支援">移行支援</option> <option value="その他">その他</option> </td> </tr> <tr> <th rowspan="3"><label for="zip1">連絡先</label></th> <th>電話番号</th> <td><input type="tel" name="tell" size="20" maxlength="15" value=""></td> <tr> <th>FAX</th> <td><input type="number" name="fax" size="20" maxlength="15" value=""></td> <tr> <th>メール</th> <td><input type="text" name="email" size="20" maxlength="50" value=""></td> </tr> <tr> <th colspan="2">性別</th> <td><input type="radio" name="gender" value="男">男 <input type="radio" name="gender" value="女">女 </td> </tr> <th colspan="2">パスワード</th> <td><input type="password" name="password" maxlength="50" value=""></td> </tr> <th rowspan="5"><label for="zip1">ご住所</label></th> <th>郵便番号</th > <td> <input type="text" name="zip" id="zip" size="12"><span class="supplement">(半角数字)</span></td> </tr> <tr> <th >都道府県</th > <td><select name="prefecture" id="prefecture"> <option value="">都道府県の選択</option> <option value="北海道">北海道</option> <option value="青森県">青森県</option> <option value="岩手県">岩手県</option> <option value="宮城県">宮城県</option> <option value="秋田県">秋田県</option> <option value="山形県">山形県</option> <option value="福島県">福島県</option> <option value="東京都">東京都</option> <option value="神奈川県">神奈川県</option> <option value="埼玉県">埼玉県</option> <option value="千葉県">千葉県</option> <option value="茨城県">茨城県</option> <option value="栃木県">栃木県</option> <option value="群馬県">群馬県</option> <option value="山梨県">山梨県</option> <option value="新潟県">新潟県</option> <option value="長野県">長野県</option> <option value="富山県">富山県</option> <option value="石川県">石川県</option> <option value="福井県">福井県</option> <option value="愛知県">愛知県</option> <option value="岐阜県">岐阜県</option> <option value="静岡県">静岡県</option> <option value="三重県">三重県</option> <option value="大阪府">大阪府</option> <option value="兵庫県">兵庫県</option> <option value="京都府">京都府</option> <option value="滋賀県">滋賀県</option> <option value="奈良県">奈良県</option> <option value="和歌山県">和歌山県</option> <option value="鳥取県">鳥取県</option> <option value="島根県">島根県</option> <option value="岡山県">岡山県</option> <option value="広島県">広島県</option> <option value="山口県">山口県</option> <option value="徳島県">徳島県</option> <option value="香川県">香川県</option> <option value="愛媛県">愛媛県</option> <option value="高知県">高知県</option> <option value="福岡県">福岡県</option> <option value="佐賀県">佐賀県</option> <option value="長崎県">長崎県</option> <option value="熊本県">熊本県</option> <option value="大分県">大分県</option> <option value="宮崎県">宮崎県</option> <option value="鹿児島県">鹿児島県</option> <option value="沖縄県">沖縄県</option> <option value="その他">その他</option> </select></td> </tr> <tr> <th >市区町村</th > <td><input type="text" name="city" size="20"><br> <span class="supplement">例) 千代田区</span></td> </tr> <tr> <th >番地番号</th > <td><input type="text" name="addressnam" id="address" size="50"><br> <span class="supplement">例) 大手町1-2-3</span></td> </tr> <tr> <th >アパート・マンション</th > <td><input type="text" name="bill" id="address" size="50"><br> <span class="supplement">○○ビル10F</span></td> </tr> <tr> <th colspan="2">コメント</th> <td><textarea name="comments" cols="55" rows="3"placeholder="何かあれば詳しく入力して下さい (10文字以上 1000文字以内)"></textarea></td> </tr> <tr> </table> <p><input type="reset" name="submit" value="やり直し"><input type="submit" name="submit" value="会員登録"></p> こちらが会員登録になってます
rura

2016/07/18 00:12

今の所、ここで入力したやつが別の会員登録一覧表というやつに入る予定です
退会済みユーザー

退会済みユーザー

2016/07/18 01:13

質問したい気持ちは分かりますが、質問したい内容が分かりません。 整理していただけますか? また、追加情報は個別にコメントするより、質問自体を編集/追記したほうが回答がつきやすくなります。 他の人の質問を参考にされてはいかがでしょうか? 編集された質問は、質問欄の名前の横「2016/07/18 09:10 編集」等のリンクをたどると、履歴を確認できるので、どのように質問が変更されたかみることが出来ます。 質問の仕方によって、回答の付き方は変わるので、工夫してみてください。
guest

0

紆余曲折?ありましたが、とりあえずコードはなんとか見られる状態になりましたね。

いろいろ整理すると、errorと書いていますが、
1.具体的なPHPのエラーが発生していますか?
2.それとも 全員分が表示されてしまうことをエラーと表現していますか?

2の場合は、既にte2jiさんがご回答されていますね。

このような機能を実現するためには、一般的にログインの仕組みが必要になりますが、
どのような動作になるのか、整理されていますか?

利用者さんが引越し等を行った際に登録内容をシステム責任者側からマイページの編集で変更できるようにしたいと考えています。

文章の意味が把握しづらいのですが、変更するのはシステム責任者ですか?
マイページと言っているのは、提示されているコードの画面のことですか?

この辺り、きちんと整理するなり設計書作るなりするほうがいいと思いますよ。
開発の経験がそれほどないのに漠然と作っても碌な物はできませんしね。

あと、タグにAtomを入れていますが、今回の件とは関連しないので、外しておいたほうがいいと思います。

それと 「phpマイアドムイン」 というのは、phpMyAdmin のことですか?
(ちょっと悩んだ^_^;)

テラテイルに不慣れなのは仕方ないとしても、質問の仕方の工夫・改善はできますよね。

ちなみに外部に公開する前提で作っているスクリプトだとすると
不安に感じますが、今回の主旨とは外れますので、言及しません。

投稿2016/07/17 12:22

Mr_Roboto

総合スコア2208

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

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

rura

2016/07/17 12:48

コメントありがとうございます 1.具体的なPHPのエラーが発生していますか? 現状の表記だとこうです。 編集 削除 所属先企業名 っっs 入社日と時間 2016-07-14 21:33:48 会員番号 63 所属先選択 63 名前 ああああ ああああああ 年齢 18 性別 女 パスワード ssss 連絡先 電話番号 2222 FAX 1111 メール earara@aaa ご住所 郵便番号 44444 都道府県 石川県 市区町村 千代田区 番地番号 ○○ビル10F アパート・マンション 大手町1-2-3 コメント 編集 削除 所属先企業名 ああ 入社日と時間 2016-07-16 20:59:45 会員番号 65 所属先選択 65 名前 ああ あああ 年齢 18 性別 女 パスワード raidax 連絡先 電話番号 0 FAX 0 メール jin@gmel.com ご住所 郵便番号 44444 都道府県 石川県 市区町村 千代田区 番地番号 ○○ビル10F アパート・マンション 大手町1-2-3 コメント これだと余計に登録した分だけ表示されてしまいます 変更するのはシステム責任者ですか? マイページと言っているのは、提示されているコードの画面のことですか? こちらのページの画面名はマイページです。 システム責任者がユーザー情報を変更する際に使います。
Mr_Roboto

2016/07/17 13:07

PHPのエラーが出ているわけではないのですね。 だいぶ情報が出てきましたが、問題の「ユーザ一人だけの表示」をどのように実現するかは、仕様を決めないと解決できないですね。 例えば、URLのパラメータで特定するとかであれば、単純ですがセキュリティ上は問題がでそうです。 やるなら http://example.com?id=1 みたいにして、URLのパラメータをSQLのパラメータとして渡します。 取得は、 $id = $_GET[''id]; みたいに取得して、id = $id のようにSQLに組み込みます。 ですが、普通は、先ほども書いたようにログインの仕組みを入れないといけないと思います。 これは、ここでの回答では書ききれないくらいのボリュームになるので書きません。 繰り返しになりますが、どのような仕様にするのかきちんと整理した方がいいと思いますよ。
rura

2016/07/18 00:25

仕様書の書き方がよく分からないので、このままやってます。 イメージ的にHTMLはこうで良いでしょうか? <p>first_name:<input type="text" name="first_name" value="<?php echo $_GET['fname']; ?>"></p> <p>last_name :<input type="text" name="last_name" value="<?php echo $_GET['lname']; ?>"></p>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問