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

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

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

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

PHP

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

HTML

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

Q&A

解決済

2回答

467閲覧

sbimitボタンを該当の番号に反映させる方法

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

PHP

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

HTML

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

0グッド

0クリップ

投稿2018/04/11 04:15

編集2018/04/11 05:09

ご教授宜しくお願い致します。

現在、顧客管理画面を作成しております。
ブラウザで表示されたデータの編集・削除をしたく、表の中に「編集ボタン」「削除ボタン」を
作り、そのボタンを押すと該当のデータが編集できるようにしたいと思っています。イメージ説明

「編集」「削除」ボタンをクリックしたときに、表の左にある「顧客No.」に反映させる方法を
お教えいただきたく質問させていただきます。

↓が上の表です

table.php

1//DB接続しています 2 3print '<table border ="" width = "90%"> 4<th height="20">顧客No.</th> 5<th>氏名</th> 6<th>電話番号</th> 7<th>コメント</th> 8<th>編集/削除</th>';//表のためのテーブルを作成 9 10 while($rec = $stmt->fetch(PDO::FETCH_ASSOC)){ 11 12 $customer = $rec['customer']; 13 $name = $rec['name']; 14 $tel = $rec['tel']; 15 $comment = $rec['comment']; 16 17 18 print '<tr>'; 19 print '<td align="center"> . $customer .'</td>'; 20 print "<td align='center'> $name 様</td>"; 21 print '<td align="center">'. $tel .'</td>'; 22 print '<td>'. $comment .'</td>'; 23 print '<td>' ?> 24 <form action="edit.php" method="GET">//編集画面へ 25 <input type="submit" name="edit" value="編集"></form> 26 <form action="delete.php" method="GET">//削除画面へ 27 <input type="submit" name="delete" value="削除"></form><?php '</td>'; 28 print '</tr>'; 29 } 30print '</table>';

編集画面

edit.php

1<form action="confi.php" method="POST"> 2 <b>顧客No.:</b><br> 3 <input type="int" name="customer" size="10" ><br> 4 <b>氏名:</b><br> 5 <input type="text" name="name" size="20" placeholder="カタカナで入力ください"><br> 6 <b>電話番号:</b><br> 7 <input type="tel" name="tel" size="20" placeholder="ハイフンも入力ください"><br> 8 <b>コメント:</b><br> 9 <textarea name="comment" rows="5" cols="40" placeholder="特徴などを記入ください"></textarea> 10 11 <input type="submit" value="編集内容を送信"> 12 <input type="submit" value="戻る" action="table.php"> 13</form>

ボタンと顧客No.の反映のさせ方がわからず、顧客No.も入力する形にしています

ここで内容を編集(テーブル「cm1」にUPDATE)

confi.php

1 $customer = htmlspecialchars($_POST['customer']); 2 $name = htmlspecialchars($_POST['name']); 3 $tel = htmlspecialchars($_POST['tel']); 4 $comment = htmlspecialchars($_POST['comment']); 5 6 7try{//DB接続 8 $pdo = new PDO(";","",""); 9 $pdo ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 10 11 $sql = "UPDATE cm1 SET name = $name, tel = $tel, comment = $comment WHERE customer = $customer "; 12 $stmt = $pdo->prepare($sql);//sql文の実行 13 $stmt ->bindparam(0,$customer,PDO::PARAM_INT); 14 $stmt ->bindparam(1,$name,PDO::PARAM_STR); 15 $stmt ->bindparam(2,$tel,PDO::PARAM_STR); 16 $stmt ->bindparam(3,$comment,PDO::PARAM_STR); 17 $stmt ->execute(); 18 $id = $pdo->lastinsertid(); 19 20 }catch (PDOException $e){ 21 print "データベースエラー"; 22 var_dump($e->getMessage()); 23 throw $e; 24 }

丸投げな質問であることは承知しておりますが、どうしてもわからず質問させていただきました。
簡単なアドバイスでもヒントでもいただけましたら幸いです。

何卒、よろしくお願い致します。

(追記)table.php(入力画面)→kakunin.php(確認画面)→table.phpに戻る(表示画面)

table.php

1<!DOCTYPE html> 2<html> 3<head> 4 <title>顧客管理画面1</title> 5 <link rel="stylesheet" type="text/css" href="cms.css"> 6</head> 7<body> 8 9<div class="aaa"> 10<h1 align="center">【顧客管理1】</h1> 11<h2>[顧客追加]</h2> 12 13<form action="kakunin.php" method="POST"> 14<b>氏名:</b><br> 15<input type="text" name="name" size="20" placeholder="カタカナで入力ください"><br> 16<b>電話番号:</b><br> 17<input type="tel" name="tel" size="20" placeholder="ハイフンも入力ください"><br> 18<b>コメント:</b><br> 19<textarea name="comment" rows="5" cols="40" placeholder="特徴などを記入ください"></textarea><br> 20<input type="submit" value="追加"> 21<input type="reset" value="修正"> 22</form> 23<br> 24<br> 25 26<?php 27 28try{//DBに接続 29 $pdo = new PDO(";","",""); 30 $pdo ->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 31 $pdo->beginTransaction(); 32 $sql = 'SELECT * from cm1';//sql文の準備、cm1テーブルからデータを取得 33 34 $stmt = $pdo->query($sql);//sql文の実行 35 $stmt -> execute(); 36 37print '<table border ="" width = "90%"> 38<th height="20">顧客No.</th> 39<th>氏名</th> 40<th>電話番号</th> 41<th>コメント</th> 42<th>編集/削除</th>';//表のためのテーブルを作成 43 44 while($rec = $stmt->fetch(PDO::FETCH_ASSOC)){//クエリ結果を1行ずつ取得して連想配列として返す、をwhile文でループさせる 45 46 $customer = $rec['customer']; 47 $name = $rec['name']; 48 $tel = $rec['tel']; 49 $comment = $rec['comment']; 50 51 52 print '<tr>'; 53 print '<td align="center">' . $customer .'</td>'; 54 print "<td align='center'> $name 様</td>"; 55 print '<td align="center">'. $tel .'</td>'; 56 print '<td>'. $comment .'</td>'; 57 print '<td>' ?> 58 59 <form action="edit.php" method="GET">//編集画面へ 60 <input type="submit" name="edit" value="編集"></form> 61 <form action="delete.php" method="GET">//削除画面へ 62 <input type="submit" name="delete" value="削除"></form><?php '</td>'; 63 print '</tr>'; 64 } 65print '</table>'; 66 67}catch (PDOException $e) { 68 echo mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win'); 69} 70$pdo = null; 71 72</body> 73</html>

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

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

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

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

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

guest

回答2

0

PHP

1<form action="edit.php" method="GET"> 2<input type="hidden" name="customer" value="<?PHP echo htmlspecialchars($customer); ?>">//調整しました 3<input type="submit" name="edit" value="編集"> 4<input type="submit" name="delete" value="削除"> 5</form>

として受け側で
isset($_GET["edit"])もしくはdeleteをチェックして処理すればよいでしょう。

投稿2018/04/11 04:25

編集2018/04/11 05:07
yambejp

総合スコア115010

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

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

退会済みユーザー

退会済みユーザー

2018/04/11 04:33

早速のご回答、誠にありがとうございます。 トライしてみてまたコメントさせていただきます。
退会済みユーザー

退会済みユーザー

2018/04/11 04:59

コメント失礼いたします。 ご教授いただいたやり方で顧客No.を拾うことができました! ただ顧客No.2以降の編集ボタンをクリックしても顧客No.1が表示されてしまいます。 これは上記いただいた「エスケープ処理」が原因ということでしょうか?
yambejp

2018/04/11 05:06 編集

失礼しました、ちょっと勘違い、もとの回答を調整します
退会済みユーザー

退会済みユーザー

2018/04/11 06:40

この度は、ご教示いただき誠にありがとうございました。 お教えいただいたやり方で無事叶いました。 ベストアンサーはmts10806様にさせていただきましたがフォローさせていただきます。 今後また何かありましたらお力貸してくださると幸いです。
guest

0

ベストアンサー

削除はどうか知りませんが、編集は一度編集したい情報をとってくる必要がありますので、
そのとってくる情報に必要なキー(ここでは顧客No.でしょうか)

よくやるのがGETで渡す方法。

php

1 2 print '<td>'; ?> 3 <form action="edit.php" method="GET"> 4 <input type="submit" name="edit" value="編集"> 5 <input type="hidden" name="customer" value="<?php print $customer; ?>"></form>

単に画面遷移するだけなのでformでbutton囲わなくてもaタグでも同じです。
ボタンタグだと「何か処理する」というイメージがあるので私はあまりこの状態でボタンタグは使いません。

php

1 print '<td>'; ?> 2 <a href="edit.php?customer=<?php print $customer; ?>">編集</a> 3

あとはedit.phpで

php

1$_GET["customer"]

とすれば、その顧客No.とやらが取得できるはず。
そしてその顧客No.でSELECTして編集したい顧客情報?を取得して
それぞれのinputのvalueに初期値として設定すれば編集画面ができます。

削除の場合も同じようにしてください。

※削除するだけならIDだけPOSTして削除するだけでも良いとは思いますが、
削除の仕様次第なので現状はここらへんで。

余談

2点気になったことがあります。
下記ですが、

php

1 $customer = htmlspecialchars($_POST['customer']); 2 $name = htmlspecialchars($_POST['name']); 3 $tel = htmlspecialchars($_POST['tel']); 4 $comment = htmlspecialchars($_POST['comment']); 5

htmlspecialchars()はhtmlに埋め込むとき、要は画面に表示させたいときに利用するもので、
SQLに対するエスケープの効果はありません。
DB毎に用意されているエスケープを利用するか(例:mysqli_real_escape_string())、PDOで用意されている機能を使いましょう

また下記のようにそのまま埋め込んでいては、bindparam()の意味がありません。

php

1 $sql = "UPDATE cm1 SET name = $name, tel = $tel, comment = $comment WHERE customer = $customer ";

マニュアル(bindparam())にもありますが、:name など名称をつけるか、番号でする場合は、? を使いましょう。

投稿2018/04/11 04:23

編集2018/04/11 05:29
m.ts10806

総合スコア80861

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

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

退会済みユーザー

退会済みユーザー

2018/04/11 04:33

早速のご回答、誠にありがとうございます。 トライしてみてまたコメントさせていただきます。
退会済みユーザー

退会済みユーザー

2018/04/11 05:00

コメント失礼いたします。 ご教授いただいたやり方で顧客No.を拾うことができました! ただ顧客No.2以降の編集ボタンをクリックしても顧客No.1が表示されてしまいます。 これはyambejpが回答くださった「エスケープ処理」が原因ということでしょうか?
m.ts10806

2018/04/11 05:01

いえ、関係ないと思います。 具体的にどのようなコードで顧客情報を取得されているのでしょうか?
m.ts10806

2018/04/11 05:07 編集

edit.php?customer={ココ} {ココ} の部分にはちゃんと意図通りのコードがそれぞれ入っていますか? 表示されたHTMLのソースを確認してください。
退会済みユーザー

退会済みユーザー

2018/04/11 06:34 編集

追記にコードを載せましたがこちらでよろしいでしょうか? <form action="edit.php?customer=<?php print $customer; ?>" method="GET">(table.php)と書き、 $customer = isset($_GET["edit"]);(edit.php)で受け取りました。 URLには、edit.php?edit=編集と表示されております。
m.ts10806

2018/04/11 05:17

B&Bedit.phpってなんでしょうか? ひとまず顧客No.を受け取りたいのであれば $_GET["customer"] ですね。 形式は {実行ファイル・スクリプト名}?name=value&name2=value2 で valueを取得したい場合は$_GET["name"] value2を取得したい場合は$_GET["name2"] 取得したい情報の左辺を指定する必要があります。
m.ts10806

2018/04/11 05:21

edit.php?edit=編集&customer=1 のようにはなってないですか?
m.ts10806

2018/04/11 05:23

ちょっと勘違いしてたかもしれませんので1つ目を修正しました。
m.ts10806

2018/04/11 05:32

formでsubmitすると全てのinput要素を送信するのでURLの見栄え的にも効果的にもaタグでの遷移を使われた方がいいかもしれません。 ボタンのように装飾することで見た目は同じようにできますし。
退会済みユーザー

退会済みユーザー

2018/04/11 06:01

ご回答いただきありがとうございます。 申し訳ございませんが所要にて席を外しますのでまたコメントさせていただきます。 少しお時間ください。
m.ts10806

2018/04/11 06:09

いえ、こちらは特に急ぎ等ないので、質問者さんのペースで対応されると良いかと。
退会済みユーザー

退会済みユーザー

2018/04/11 06:39

この度は、ご教示いただき誠にありがとうございました。 お教えいただいたやり方で無事叶いました。 また、htmlspecialchars()やbindparam()などもお教えいただきありがとうございます。 マニュアルを勉強したいと思います。 ベストアンサーとフォローさせていただきます。 今後また何かありましたらお力貸してくださると幸いです。
m.ts10806

2018/04/11 06:43

解決したようで何よりです。 私のちょっとした勘違いで長引いてしまい、申し訳なかったです。
退会済みユーザー

退会済みユーザー

2018/04/11 06:46

とんでもないです。 まだ初心者で質問の仕方も稚拙なためご迷惑おかけいたしました。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問