テキストエリアに入力した値をmysqlに格納したいのですが、うまくできず躓いています。
データベースには接続できていているのにも関わらず、テキストエリアに入力し、送信してもNullが格納されてしまいます。
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title>Bootstrap Sample</title> 8 <!-- BootstrapのCSS読み込み --> 9 <link href="css/bootstrap.css" rel="stylesheet"> 10 <!-- jQuery読み込み --> 11 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 12 <!-- BootstrapのJS読み込み --> 13 <script src="js/bootstrap.min.js"></script> 14 <style media="screen"> 15 .pink{ 16 background: black; 17 height: 700px; 18 } 19 .pink2{ 20 background: gray; 21 height: 200px; 22 } 23 </style> 24 </head> 25 <body> 26 <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> 27 <a class="navbar-brand" href="#">Java学習</a> 28 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 29 <span class="navbar-toggler-icon"></span> 30 </button> 31 32 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 33 <!-- メニュー部分--> 34 <ul class="navbar-nav mr-auto"> 35 <li class="nav-item active"> 36 <a class="nav-link" href="index.html">ホーム<span class="sr-only">(current)</span></a> 37 </li> 38 <li class="nav-item"> 39 <a class="nav-link" href="menu.html">学習状況</a> 40 </li> 41 <li class="nav-item dropdown"> 42 <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 43 Dropdown 44 </a> 45 <div class="dropdown-menu" aria-labelledby="navbarDropdown"> 46 <a class="dropdown-item" href="#">Action</a> 47 <a class="dropdown-item" href="#">Another action</a> 48 <div class="dropdown-divider"></div> 49 <a class="dropdown-item" href="#">Something else here</a> 50 </div> 51 </li> 52 <li class="nav-item"> 53 <a class="nav-link disabled" href="#">Disabled</a> 54 </li> 55 </ul> 56 <ul class="navbar-nav"> 57 <li class="nav-item"> 58 <a class="nav-link" href="#">ログイン</a> 59 </li> 60 </ul> 61 <!-- フォームを削除 --> 62 </div> 63</nav> 64 65 <!-- ここにメインの処理を書く --> 66 <!-- 見出し --> 67 <div class="jumbotron jumbotron-fluid"> 68 <div class="container"> 69 <h3 class="display-6">問題の追加</h3> 70 <div class="text-right"> 71 <button type="button" class="btn-primary" onclick="history.back()">前のページに戻る</button> 72 </div> 73 <p class="lead"></p> 74 </div><!-- /.container --> 75 </div><!-- /.jumbotron --> 76 <div class="container"> 77 </div><!-- /.container --> 78 <div class="col-12 d-flex"> 79 <div class="col-5"> 80 <div class="card"> 81 <div class="card-header bg-primary">トップページ文</div> 82 <div class="card-body"> 83 <div class="form-group"> 84 <textarea name="top" class="form-control" rows="3"></textarea> 85 </div> 86 </div> 87 </div> 88 <div class="card"> 89 <div class="card-header bg-primary">実行例</div> 90 <div class="card-body"> 91 <div class="form-group"> 92 <textarea name="source1" class="form-control" rows="3"></textarea> 93 </div> 94 </div> 95 </div> 96 <div class="card"> 97 <div class="card-header bg-primary">問題文</div> 98 <div class="card-body"> 99 <div class="form-group"> 100 <textarea name="question" class="form-control" rows="3"></textarea> 101 </div> 102 </div> 103 </div> 104 </div> 105 <div class="col-6"> 106 107 <div class="card"> 108 <div class="card-header bg-primary">ソースコード</div> 109 <div class="card-body"> 110 <div class="form-group"> 111 <textarea name="source2" class="form-control" rows="9"></textarea> 112 </div> 113 </div> 114 </div> 115 <div class="card"> 116 <div class="card-header bg-primary">解答</div> 117 <div class="card-body"> 118 <div class="form-group"> 119 <textarea name="answer" class="form-control" rows="3"></textarea> 120 </div> 121 <div class="text-right"> 122 <button type="button" class="btn-primary btn-lg" onclick="location.href='test01.php'">送信</button> 123 </div> 124 </div> 125 </div> 126 </div> 127 </div> 128 </body> 129</html>
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <meta name="description" content="このページの説明文"> 6 <title>このページのタイトル</title> 7 <link rel="stylesheet" href="/main.css"> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 9 </head> 10 <body> 11 12 <?php 13 try { 14 15 ini_set('display_errors', "On"); 16 //DB名、ユーザー名、パスワード 17 $dsn = 'mysql:dbname=test_01;host=localhost'; 18 $user = 'root'; 19 $password = 'root'; 20 21 $PDO = new PDO($dsn, $user, $password); //MySQLのデータベースに接続 22 $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //PDOのエラーレポートを表示 23 24 //input_post.phpの値を取得 25 $top = $_POST['top']; 26 $source1 = $_POST['source1']; 27 $question = $_POST['question']; 28 $source2 = $_POST['source2']; 29 $answer = $_POST['answer']; 30 31 $sql = "INSERT INTO mondai (top, source1, question, source2, answer) VALUES (:top, :source1, :question :source2, :answer)"; 32 // INSERT文を変数に格納。:nameや:categoryはプレースホルダという、値を入れるための単なる空箱 33 $stmt = $PDO>prepare($sql); //挿入する値は空のまま、SQL実行の準備をする 34 $params = array(':top' => $top, ':source1' => $source1, ':question' => $question,':source2' => $source2,':answer' => $answer); // 挿入する値を配列に格納する 35 $stmt->execute($params); //挿入する値が入った変数をexecuteにセットしてSQLを実行 36 37 echo '<p>で登録しました。</p>'; // 登録完了のメッセージ 38 } catch (PDOException $e) { 39 exit('データベースに接続できませんでした。' . $e->getMessage()); 40 } 41 42 ?> 43 </body> 44</html>
Notice: Undefined index: top in /Applications/MAMP/htdocs/test/public/test/test01.php on line 25 Notice: Undefined index: source1 in /Applications/MAMP/htdocs/test/public/test/test01.php on line 26 Notice: Undefined index: question in /Applications/MAMP/htdocs/test/public/test/test01.php on line 27 Notice: Undefined index: source2 in /Applications/MAMP/htdocs/test/public/test/test01.php on line 28 Notice: Undefined index: answer in /Applications/MAMP/htdocs/test/public/test/test01.php on line 29 Fatal error: Uncaught Error: Call to undefined function prepare() in /Applications/MAMP/htdocs/test/public/test/test01.php:33 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/test/public/test/test01.php on line 33
回答1件
あなたの回答
tips
プレビュー