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

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

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

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

PHP

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

Q&A

解決済

2回答

7581閲覧

更新、削除を一つのページで処理したい。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

PHP

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

0グッド

0クリップ

投稿2017/05/18 18:52

###前提・実現したいこと

php,mysqlにてHTMLの<input type="submit" name="">から、

<form method="post" action="schedule_edit_done.php">にnameによる判定で飛ばして情報の更新、削除の処理を同ページで行いたいです。

更新、削除の処理後は一覧に戻る仕組みです。

###発生している問題・エラーメッセージ

PHP Notice: Undefined index: edit in /home/vagrant/schedule_kadai/schedule_edit_done.php on line 24
と出て、どうやら更新を押した時は$delete = $_POST['delete']が、
削除を押した時は$edit = $_POST['edit']が交互にこのメッセージになります。
処理に応じて変数が使われていないため出るのかと思いましたが、更新と削除自体は出来てはいます。
ただ、このエラーメッセージがにならない方法はあるのでしょうか?

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

<!DOCTYPE html> <html> <body> 途中省略、、、 <form method="post" action="schedule_edit_done.php"> <input type="submit" name="edit" value="登録"> <input type="submit" name="delete" value="削除"> <table> <tr> <td>スケジュールID</td> <td><#SCHEDULEID#></td> </tr> <tr> <td>スケジュール名</td> <td><input type="text" name="name" value="<#NAME#>"></td> </tr> <tr> <td>開始日時</td> <td><input type="number" name="start_year" value="<#STARTYEAR#>">年</td> </tr> <tr> <td>終了日時</td> <td><input type="number" name="end_year" value="<#ENDYEAR#>">年</td> </tr> <tr> <td> <input type="hidden" id="schedule_id" name="schedule_id" value="<#SCHEDULEID#>"> <input type="button" onclick="history.back()" value="戻る"> </form> </td> </tr> </table> </body> </html> <?php $schedule_id = $_POST['schedule_id']; $name = $_POST['name']; $start_year = $_POST['start_year']; $end_year = $_POST['end_year']; $edit = $_POST['edit'];//←ここが削除を選んだ時はPHP Notice: Undefined indexと出ます。 $delete = $_POST['delete'];//ここも更新を選ぶと同じエラーが出ます。 $link = mysqli_connect(DB_SERVER,DB_ACCOUNT_ID,DB_ACCOUNT_PW,DB_NAME); if(!$link){ echo "データベースに接続できていません。"; exit; } mysqli_set_charset($link,"utf8"); if($edit == "登録"){ $query = 'update schedule_info set name = "'.$name.'",start_year= "'.$start_year.'", end_year= "'.$end_year.'" where schedule_id ='.$schedule_id; if($result = mysqli_query($link,$query)){ } else { echo "更新できませんでした。"; exit; } } if($delete == "削除"){ $query_delete = 'delete from schedule_info where schedule_id = "'.$schedule_id.'"'; if($result = mysqli_query($link,$query_delete)){ } else { echo "削除できませんでした。"; exit; } } mysqli_close($link); header('location:./schedule_list.php'); exit(); ?>

###試したこと

最初は

<form method="post" action="edit_complete.php"> <input type="submit" name="edit" value="更新"> </form> <form method="post" action="delete_complete.php"> <input type="submit" name="edit" value="削除"> </form> とformとsubmitを二つ記載してやろうとしたらうまくいかず、formを二つ記入すること自体が正しくないのか、更新処理だけされて、削除ボタンを押しても何も反応がなかったです。

###補足情報(言語/FW/ツール等のバージョンなど)
macOS、ATOM、cyberduck、ローカル環境にて利用

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

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

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

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

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

guest

回答2

0

ベストアンサー

<input type="submit" name="edit" value="登録">
<input type="submit" name="delete" value="削除">

submit自体は排他的なのでnameを同じものをつければよいでしょう

HTML

1<input type="submit" name="s" value="登録"> 2<input type="submit" name="s" value="削除">

PHP

1$s=filter_input(INPUT_POST,"s"); 2if($s=="登録") 登録処理 3if($s=="削除") 削除処理 4

投稿2017/05/19 00:17

yambejp

総合スコア114779

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

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

退会済みユーザー

退会済みユーザー

2017/05/19 04:46

ありがとうございました。 上記内容に変更したら機能しました。
guest

0

If文でeditなりdeleteがpostされた値に存在するかを確認すれば良いだけの話ですね。

投稿2017/05/18 18:57

harashow1701

総合スコア854

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

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

kogure

2017/05/19 01:59

これダメなんですか? 私も最初にemptyやissetなどで$_POST['hoge']の存在確認するようにすればいいと思ったのですが。。。 とりあえずぶっこんで、中身見るとか怖すぎる><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問