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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

HTML

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

Q&A

解決済

1回答

2707閲覧

プルダウン型で選択したものを、データベースから削除したい

mattsu

総合スコア10

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

HTML

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

0グッド

0クリップ

投稿2017/04/22 02:17

編集2017/04/23 01:30

・前提

htmlのコードが無茶苦茶ですが
他者から引き継いだものなのでコードに対する突っ込みはナシでお願いします 笑
また、phpはほぼ触ったことがないです。

データベースに登録されているご褒美をプルダウン型のメニューから選択すると
そのご褒美を得られる仕組みになっているようです。
(ご褒美を得るにはポイントが必要)

・実現したいこと

プルダウン型のメニューから、データベースに登録されているご褒美を選択すると
登録されていたご褒美がデータベースから削除されるものを作りたいです。

・参考コード
ご褒美を選んで登録ボタンを押すコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>date.php</title> </head> <body> <?php $time = date("Y年n月j日 Ah:i"); print($time); ?> </body> </html> <br /> <br /> <html> <body> <form action="reward_ex_to.php" method="post" name="form" > <h1 class="contact-title">ご褒美</h1> <select name = "gohoubi"> <?php $dbcon = pg_connect("dbname=ossdb user=postgres password=password"); $sql = "select content from reward;"; $col = pg_query($dbcon, $sql);; while($data = pg_fetch_array($col)){ ?> <OPTION VALUE="<?php echo $data['content'] ?>"><?php echo $data['content'] ?></OPTION> <?php } pg_close($dbcon); ?> </select><br> <input type="submit" value="登録する" /> </body> </html> <br><br>

登録したものを確認するコード

<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $gohoubi = $_POST["gohoubi"]; } ?> <title>routine_2.php</title> 登録内容は下記でよろしいですか? <form action="reward_tha.php" method="post"> <br><br> <?php echo $_POST[gohoubi]; $dbcon = pg_connect("dbname=ossdb user=postgres password=password"); if (!$dbcon) { die("<hr>pg_connect 失敗<hr>"); } $sql = "select point from reward where content = '$gohoubi'"; $result = pg_query ($dbcon, $sql); if (!$result) { pg_last_error($dbcon); die( "<br>pg_exec 失敗"); } $numrows = pg_num_rows($result); $fnum = pg_num_fields($result); for ($i = 0; $i < $numrows; $i++) { $row = pg_fetch_object($result, $i); echo "<tr align='center'>"; for ($x = 0; $x < $fnum; $x++) { $fieldname = pg_field_name($result, $x); $point = htmlspecialchars($row->$fieldname); } } echo $point; ?> <form action="reward_tha.php" method="post"> <input type="hidden" name="point" value="<?php echo $point; ?>"> <input type="hidden" name="action" value="<?php echo $gohoubi; ?>" </form> <form action="reward_tha.php" method="post"> <input type="hidden" name="action" value="<?php echo $gohoubi; ?>"> <input type="hidden" name="point" value="<?php echo $point; ?>" </form> <input type="button" value="内容を修正する" onclick="history.back(-1)"> <button type="submit" name="submit">確定</button>

・質問
ご褒美を登録する、の逆をやればいいので簡単かと思ったのですが
自分の知識と経験不足によりなかなか上手くいきません。
そこで質問です。

1 上記のコードでデータベースに登録される処理が行われるのはどこか?
2 データベースから削除する場合
delete from 表明
where 条件
だと思うのですが

プルダウン型のメニューから相手が選んだものを条件にする方法が分かりません。

以上、宜しくお願いします。

ーーーーーーーーーーーーー追記------------
reward_tha.phpのページに質問の答えになりそうなものがあるとアドバイス頂いたので掲載しておきます。

<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $koudou = $_POST["action"]; $point = $_POST["point"]; } ?> <html lang="ja"> <head> <meta charset="UTF-8"> <title>確認フォーム</title> <link rel="stylesheet" href="style.css"> </head> <body> <div> <p>登録ありがとうございました。</p> <div> <div> <label>行動</label> <p><?php echo $koudou; ?></p> </div> <div> <label>ポイント</label> <p><?php echo $point; ?></p> </div> </div> <?php $dbcon = pg_connect("dbname=ossdb user=postgres password=password"); if (!$dbcon) { die("<hr>pg_connect 失敗<hr>"); } $sql1 = "SELECT total FROM routine order by day desc limit 1"; $result1 = pg_query ($dbcon, $sql1); if (!$result1) { pg_last_error($dbcon); die( "pg_exec 失敗<hr>" ); } $numrows1 = pg_num_rows($result1); $fnum1 = pg_num_fields($result1); for ($i1 = 0; $i1 < $numrows1; $i1++) { $row1 = pg_fetch_object($result1, $i1); echo "<tr align='center'>"; for ($x1 = 0; $x1 < $fnum1; $x1++) { $fieldname1 = pg_field_name($result1, $x1); $tasu = htmlspecialchars($row1->$fieldname1); } } $total = ($point + $tasu); $sql2 = "insert into routine values (now(),'','$koudou','$point','$total')"; $result2 = pg_query ($dbcon, $sql2); if (!$result2) { pg_last_error($dbcon); die( "pg_exec 失敗だよ<hr>"); } pg_close($dbcon); ?> <a href="toppage.php">トップページへ</a>

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

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

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

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

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

guest

回答1

0

ベストアンサー

1 上記のコードでデータベースに登録される処理が行われるのはどこか?
→このコードにはありません。おそらく、reward_tha.phpというコード上にそれっぽい記述があると思います。

<form action="reward_tha.php" method="post">というコードがありますが、これはこの画面で入力されたものを次のreward_tha.phpという処理にpostメソッドで受け渡すということです。

2 データベースから削除する場合
→それでよいかと思います。メニューから選んだものを使う処理は恐らくreward_tha.phpにあるのではないかと予想しますので、それを真似すれば良いかと思います。

投稿2017/04/23 00:52

akabee

総合スコア1947

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

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

mattsu

2017/04/23 01:34

丁寧にアドバイスして頂きありがとうございます。 参考までにreward_tha.phpも追記で掲載しました。 もし宜しければお時間ある時に相手してやってください 笑 私も自分なりに調べてみます。 (postgreも分からないので正直ちんぷんかんぷんです)
akabee

2017/04/23 02:09

最初のコードで前画面のデータを受け取って$koudou、$pointに格納していると思います。 if ($_SERVER["REQUEST_METHOD"] == "POST") { $koudou = $_POST["action"]; $point = $_POST["point"]; } 登録自体は以下の箇所だとは思います。routineというテーブルに何かデータを追加しているようです。 $sql2 = "insert into routine values (now(),'','$koudou','$point','$total')"; $result2 = pg_query ($dbcon, $sql2); if (!$result2) { pg_last_error($dbcon); die( "pg_exec 失敗だよ<hr>"); } pg_close($dbcon); あとは「削除する」という機能を追加するにはデータベースの定義、実際のデータを見ながらどういう作りになっているのか解読していかないといけないかもしれませんね。
mattsu

2017/04/23 07:13

akabeeさんありがとうございます! 1つ1つ解読してなんとかakabeeさんが仰っているポイントまで辿り着きました!これでなんとかなりそうです。 この度は丁寧にコメントくださってありがとうございました!
akabee

2017/04/23 07:16

前任者のものを引き継ぐのは大変ですね。上手く動かせることを祈っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問