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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

解決済

掲示板で投稿を編集する際、データベースから指定された番号の名前だけ取り出し投稿フォームに表示したい。

ryosuke197
ryosuke197

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

2回答

0評価

0クリップ

921閲覧

投稿2019/11/25 11:07

php5.2.4(指定による)
テキスト保存で作った掲示板を今度はMySQLに保存する形の課題に取り組んでいます。
編集機能の作成をしていますが、
編集番号をpost送信すると、投稿用フォームに名前とコメントが表示されるようにしたいです。
現在作業中なのは名前の表示で、今はこの問題だけ解決したいです。
それができればコメントもできるだろうと考えています。

表示されるエラーはNotice: Undefined index: name 省略 on line 54
調べてみると未定義の変数のようですが、なぜ出るのかわかりません。
54行目は$edit_name = $edit_select['name'];のところです。

サーバー情報は伏せてあります。
テーブルの項目はnum,name,comment,date,passwordです。
現在途中のため保存内容は名前とコメントのみで、行番号は自動で増える形を取っています。

php

<?php ini_set( "display_errors", 1 ); error_reporting( E_ALL ); //変数の定義 $name = filter_input( INPUT_POST, "name" ); //投稿者の名前 $comment = filter_input( INPUT_POST, "comment" ); //投稿したコメント $delete_no = filter_input( INPUT_POST, "delete_no" ); //削除指定番号 $edit_no = filter_input( INPUT_POST, "edit_no" ); //編集指定番号 $edit_decision = filter_input( INPUT_POST, "edit_decision" ); //投稿と編集の判別用のhidden送信 $password = filter_input( INPUT_POST, "password" ); //送信するpassword $check_password = filter_input( INPUT_POST, "check_password" ); //照合するパスワード $date = date( "Y-m-d H:i:s" ); //投稿日時 $replace_search = array( "\r\n", "\r", "\n" ); //置き換えのための改行コードの検索 $replace = array( "<<改行win>>", "<<改行mac>>", "<<改行unix>>" ); //改行コードを置き換える文字 $replace_name = str_replace( $replace_search, $replace, $name ); //改行を置き換えた名前 $replace_comment = str_replace( $replace_search, $replace, $comment ); //改行を置き換えられたコメント //MySQL接続情報 $servername = ""; $username = ""; $serverpassword = ""; $dbname = ""; //編集時の表示用名前とコメントの初期化 $edit_name = ""; //書き込み内容のsql文 $insert_sql = "INSERT INTO toko( name, comment ) VALUES ( '$replace_name', '$replace_comment' )"; //削除のsql文 $delete_sql = "DELETE FROM toko WHERE num='$delete_no'"; //データベースに接続 try { $db = new PDO( "mysql:dbname=$dbname;host=$servername;charset=utf8mb4", $username, $serverpassword, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ] ); //投稿機能 if ( !empty( $name ) && !empty( $comment ) ) { $insert = $db->query( $insert_sql ); //書き込みsql実行 //リロードし二重書き込み防止 header( 'Location: keijiban_mysql.php', true, 303 ); exit; } //削除機能 elseif ( !empty( $delete_no ) ) { $delete = $db->query( $delete_sql ); } //編集番号指定 elseif ( !empty( $edit_no ) ) { $edit_select = $db->prepare("SELECT * FROM toko WHERE num = '$edit_no'"); $edit_select->execute(); $edit_select = $edit_select->fetchAll(PDO::FETCH_ASSOC); $edit_name = $edit_select['name']; echo $edit_name; } } catch ( PDOException $e ) { print( "エラー:" . $e->getmessage() ); die(); //リロードし二重書き込み防止 header( 'Location: keijiban_mysql.php', true, 303 ); exit; } ?> <!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>簡易掲示板MySQL保存版</title> <script> window.addEventListener('DOMContentLoaded', function(){ document.querySelector('#delbtn').addEventListener('click',function(e){ if(!confirm('本当に削除しますか?')){ alert('キャンセルされました'); e.preventDefault(); } }); }); </script> <style> .akaji { color : red; } .komoji { font-size: 0.8em; } </style> </head> <body> <?php //XSS対策 function h( $str ) { return nl2br( htmlspecialchars( $str, ENT_QUOTES, 'UTF-8' ) ); } //改行の置き換え $replace_seach = array( "<<改行win>>", "<<改行mac>>", "<<改行unix>>" ); //改行の置き換え文字の検索 $replace = array( "\r\n", "\r", "\n" ); //改行コードへの置き換え /*$replace_edit_name = str_replace( $replace_search, $replace, $edit_name);//改行コードに置き換えられた編集時の表示用の名前 $replace_edit_comment = str_replace( $replace_search, $replace, $edit_comment );//改行コードに置き換えられた編集時の表示用のコメント*/ ?> <!--投稿フォーム--> <form method="post" > <label for="name">お名前<span class="akaji">【必須】</span></label> <br> <input type="text" name="name" id="name" required="required" value="<?php echo $edit_name; ?>" > <br> <label for="comment">コメント<span class="akaji">【必須】</span></label> <br> <textarea name="comment" cols="30" rows="3" id="comment" required="required"></textarea> <br> <input type="submit" value="投稿"> </form> <br> <!--削除番号指定用フォーム--> <form method="post" name="delete"> <label for="delete_no">削除対象番号</label> <br> <input type="number" name="delete_no" id="delete_no" required="required"> <br> <input type="submit" value="削除" name="btn" id="delbtn"> </form>  <br> <!--編集番号指定用フォーム--> <form method="post"> <label for="edit_no">編集対象番号(半角)</label> <br> <input type="number" name="edit_no" id="edit_no" required="required"> <br> <input type="submit" value="編集"> </form> <br> <?php //投稿内容の表示 try { //テーブルの行数取得 $sql = 'select count(*) from toko'; $count = $db->query( $sql ); $count = $count->fetchColumn(); $select = "SELECT * FROM toko"; //テーブルデータの取得のクエリ $select = $db->query( $select ); //クエリの実行 if ( $count == 0 ) { echo "<p>投稿はまだありません</p>"; } else { foreach ( $select as $row ) { //ループして表示 echo "<span class='komoji'>No</span>:" . h( $row[ 'num' ] ) . "&emsp;&emsp;" . "<span class='komoji'>名前</span>: " . h( $row[ 'name' ] ) . "<br>" . h( $row[ 'comment' ] ) . "<br>" . h( $row[ 'date' ] ) . "<br>"; } } } catch ( PDOException $e ) { print( "表示エラー:" . $e->getmessage() ); die(); } ?> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。