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

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

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

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

PHP

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

Q&A

解決済

2回答

370閲覧

PHPでそれぞれの編集画面に行けません。

dog57

総合スコア131

MySQL

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

PHP

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

0グッド

0クリップ

投稿2017/12/13 13:23

PHPで編集機能を作成していますが、それぞれの編集画面にいけません。

トップ画面→編集画面→編集完了 という順番なのですが、
トップ画面の1位、2位、3位、4位、5位それぞれの編集画面にいけるようにしたいのですが、
どうようにしたらいけますか?

現状では、1位〜5位のどの編集リンクをクリックしても
編集画面では1位の内容が表示されます。

2位の編集リンクをクリックしたらちゃんと2位の編集内容が
3位の編集リンクをクリックしたらちゃんと3位の編集内容がでるようにさたいのですが
どのようにしたら良いでしょうか?

ご教授いただけると嬉しいです。
よろしくお願いします

・トップ画面
イメージ説明

・編集画面
イメージ説明

トップ画面 index.php

php

1<?php 2ini_set("display_errors", 1); 3error_reporting(E_ALL); 4 5// 文字化け対策 6header("Content-type: text/html; charset=utf-8"); 7 8function h($string) { 9 return htmlspecialchars($string, ENT_QUOTES, "UTF-8"); 10} 11 12require_once(__DIR__. "/db.php"); 13 14//例外処理を投げる(スロー)ようにする 15$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 16 17$sql = "SELECT * FROM country"; 18$statement = $dbh->query($sql); 19 20// 結果の取得 21$country = array(); 22 23foreach ($statement as $row) { 24 $country[] = $row; 25} 26 27// データベース切断 28$dbh = null; 29 30 ?> 31 32<!DOCTYPE html> 33<html lang="ja"> 34 35<head> 36 <meta charset="utf-8"> 37 <title>行ってみたい国一覧</title> 38 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 39 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen"> 40 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"> 41 <link href="org.css" rel="stylesheet" media="screen"> 42</head> 43 44<body> 45 46<!-- テーブル(表) --> 47 <div class="table-responsive" style="margin-top:60px;"> 48 <table id="table1" class="table table-hover"> 49 <form action="update.php" method="post" name="update"> 50 <!-- ここは基本記述 --> 51 <thead> 52 <tr> 53 <th>順位</th> 54 <th>国名</th> 55 <th>食べたい食べ物</th> 56 <th>理由</th> 57 <th></th> 58 </tr> 59 </thead> 60 61 <?php foreach ($country as $row) { 62 ?> 63 64 <tbody> 65 66 <tr> 67 <td><?php echo h($row["rank"]); ?></td> 68 <td><?php echo h($row["nation"]); ?></td> 69 <td><?php echo h($row["food"]); ?></td> 70 <td><?php echo h($row["reason"]); ?></td> 71 <td> 72 <a href="update.php" onclick="document.update.submit();return false;">編集</a> 73 <a href="#" onclick="document.リンク先.submit();return false;">削除</a> 74 </td> 75 76 <form action="update.php" method="post"> 77 <input type="hidden" name="rank" value="<?php echo $row["rank"]; ?>"> 78 <input type="hidden" name="nation" value="<?php echo $row["nation"]; ?>"> 79 <input type="hidden" name="food" value="<?php echo $row["food"]; ?>"> 80 <input type="hidden" name="reason" value="<?php echo $row["reason"]; ?>"> 81 </form> 82 </tr> 83 84 </tbody> 85 86 87 <?php 88 } 89 ?> 90 91 92 </table> 93 </div> 94 95<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 96 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 97</body> 98 99</html>

編集画面 update.php

php

1<?php 2ini_set("display_errors", 1); 3error_reporting(E_ALL); 4 5// 文字化け対策 6header("Content-type: text/html; charset=UTF-8"); 7 8require_once(__DIR__. "/db.php"); 9 10 11 12$_SESSION["rank"] = filter_input(INPUT_POST, 'rank'); 13$_SESSION["nation"] = filter_input(INPUT_POST, 'nation'); 14$_SESSION["food"] = filter_input(INPUT_POST, 'food'); 15$_SESSION["reason"] = filter_input(INPUT_POST, 'reason'); 16 17 18 19function h($string) { 20 return htmlspecialchars($string, ENT_QUOTES, "UTF-8"); 21} 22 23 24?> 25 26<!DOCTYPE html> 27<html lang="ja"> 28 29<head> 30 <meta charset="utf-8"> 31 <title>編集画面</title> 32 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 33 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen"> 34 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"> 35 <link href="org.css" rel="stylesheet" media="screen"> 36</head> 37 38<body> 39 40 41 <!-- テーブル(表) --> 42 <div class="table-responsive" style="margin-top:60px;"> 43 <table id="table1" class="table table-hover"> 44 <form action="#" method="post"> 45 <!-- ここは基本記述 --> 46 <thead> 47 <tr> 48 <th>順位</th> 49 <th>国名</th> 50 <th>食べたい食べ物</th> 51 <th>理由</th> 52 <th></th> 53 </tr> 54 </thead> 55 56 57 58 <tbody> 59 60 <tr> 61 <td><input type="text" name="rank" value="<?php echo h($_SESSION["rank"]); ?>"></td> 62 <td><input type="text" name="nation" value="<?php echo h($_SESSION["nation"]); ?>"></td> 63 <td><input type="text" name="food" value="<?php echo h($_SESSION["food"]); ?>"</td> 64 <td><input type="text" name="reason" value="<?php echo h($_SESSION["reason"]); ?>"></td> 65 <td> 66 <button type="button" class="btn btn-primary btn-xs">変更する</button> 67 </td> 68 </tr> 69 70 </tbody> 71 72 73 74 75 </form> 76 </table> 77 </div> 78 79 80 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 81 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 82 </body> 83</html> 84

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

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

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

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

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

guest

回答2

0

ベストアンサー

<a href="update.php" onclick="document.update.submit();return false;">編集</a>

のところを

HTML

1 <a href="update.php?method=edit&amp;id=1">編集</a> 2

のようなupdate.phpに「id=1のデータを編集してください」という情報を
投げてやるのが妥当です

投稿2017/12/14 00:35

yambejp

総合スコア114769

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

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

dog57

2017/12/14 00:55 編集

トップページでDBかテーブルら情報を持ってきているのですが、例えば、これから削除や追加があった場合にID番号がぐちゃぐちゃになると思います。 そういった場合は、どうしたらよいでしょうか? id = 1 と指定した場合は1しか編集できなくなりますよね?
yambejp

2017/12/14 01:21

当然id=1の部分はPHPでループしている部分なので それぞれのレコードのidもらって割り当てるものとします
dog57

2017/12/14 01:31 編集

わかりました。 ちなみにですが、 method=edit&amp の edit&amp はどういう意味でしょうか?
yambejp

2017/12/14 01:41

update.php?method=edit&amp;id=1 は update.php?method=edit&id=1 つまり update.phpにパラメータmethod=editとid=1を わたすという意味です。 アンカー(aタグ)のhrefにテキストでパラメータを記載するときは 原則「&」を「&amp;」に書き換えるほうがよいとされています
dog57

2017/12/14 01:47

そういうことなのですね。 編集する用の edit メソッドがあるのですね。
yambejp

2017/12/14 01:52

もちろんupdate.phpの仕様次第です idがパラメータとしてついていたら編集だと判断してもいいですし method的な何をするか指示してもいいでしょう それならmethod=deleteのような汎用性もだせます。 またupdate.phpでやらずにedit.php的なものを用意して 更新と編集を完全にきりわけるてもよいでしょう
guest

0

TOP画面の一覧作成しているループでformが複数出来ているので最初のformが発火しているのでしょう。
formは一つにして、countryテーブルにユニークキーがあるならそれをパラメータにして編集画面で拾った方がよくないですか?

投稿2017/12/13 13:34

BECK_

総合スコア94

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

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

dog57

2017/12/13 13:51

編集画面でも、PDOを使ってselect文を使うということですか?
BECK_

2017/12/13 14:08 編集

はい。 僕ならTOP画面の表示内容が最新である保証はないので再度SELECTして最新内容をセットします。 複数人での利用するシーンだとデータの整合性を考慮するとシビアにチェックする方がよいと思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問