環境
AWScloud9
やろうと思っていること
プログラミング言語の難しさを自由に投稿できる掲示板を作ろうと思っている
項目→プログラミング言語(htmlのinput のPOSTで送る)
→その言語の難易度やコメント(htmlのinput のPOSTで送る)
困っていること
上手くPHPとMySQLは連携できて、データベースとの接続も成功したのだが、
掲示板でsubmitとすると変な形で表示するようになってしまう。
変な感じというのは、2つのカラム(プログラミング言語を書いたカラムとその言語に対するコメントを書いたカラム)に文字を入力してsubmitしても、どちらの項目も片方ずつしか表示されない。
例えば、
プログラミング言語の場所に”PHP"と入力
プログラミング言語の難易度について一言に”少なからず〜”と入力してsubmitすると以下のようになってしまう。
これを無くして、一度のsubmitでどちらも表示できるようにする方法を知りたい
現在の様子
PHP
1<?php 2$username = 'root'; 3$password = 'orehakami'; 4 5$link = new PDO('mysql:host=localhost;dbname=difficulty;charset=UTF8;',$username, $password); 6 7 8if (array_key_exists('comment',$_POST)) { 9 $sql = 'INSERT INTO programing (comment) VALUES(:comment)'; 10 $result = $link->prepare($sql); 11 $result->bindParam(':comment',$_POST['comment']); 12 $result->execute(); 13 $result = null; 14 15} 16if (array_key_exists('language',$_POST)) { 17 $sql = 'INSERT INTO programing (language,comment) VALUES($_POST[language],$_POST[comment])'; 18 $result = $link->prepare($sql); 19 $result->bindParam(':language',$_POST['language']); 20 $result->execute(); 21 $result = null; 22 23} 24$sql = 'SELECT * FROM programing ORDER BY created_at DESC'; 25 26 27 28 29 30 31 32$result = $link->query($sql); 33 34$records = $result->fetchAll(); 35 36$result = null; 37 38$database = null; 39 40?> 41 <!DOCTYPE html> 42 <html lang="ja"> 43 <head> 44 <meta charset="utf-8"> 45 <title>Programing Language Difficulty</title> 46 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 47 <link href="style.css" rel="stylesheet"> 48 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> 49 </head> 50 <body class="mt-4"> 51 <div class="container"> 52 <h1><a href="booklist.php">Programing Difficulty</a></h1> 53 54 <h1>プログラミング言語の登録フォーム</h1> 55 <ul> 56 <ol> 57 <form action="index.php" method="POST" class="form-inline mb-2"> 58 <label>プログラミング言語</label> 59 <div class="form-group mr-2"> 60 <input type="text" name="language" class="form-control" placeholder="言語を入力" required > 61 </div> 62 </ol> 63 <ol> 64 <label>プログラミングの難易度について一言</label> 65 <div class="form-group mr-2"> 66 <input type="text" name="comment" class="form-control" placeholder="コメント" required > 67 </div> 68 </ol> 69 </div> 70 <button type="submit" name="submit_add_language" class="btn btn-primary">登録</button> 71 </form> 72 </ul> 73 <hr /> 74 75 <h2>プログラミングと難易度</h2> 76 <ul> 77 <?php 78 if($records) { 79 foreach ($records as $record) { 80 $language = $record['language']; 81 $comment = $record['comment']; 82 ?> 83 <h3>言語名:<?php print htmlspecialchars($language, ENT_QUOTES,"UTF-8"); ?></h3> 84 <p>難易度:<?php print htmlspecialchars($comment, ENT_QUOTES,"UTF-8"); ?></p> 85 <?php 86 } 87 } 88 ?> 89 </ul> 90 </div> 91 92 <!-- BootstrapなどのJavaScript --> 93 <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> 94 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> 95 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> 96 <script defer src="https://use.fontawesome.com/releases/v5.2.0/js/all.js" integrity="sha384-4oV5EgaV02iISL2ban6c/RmotsABqE4yZxZLcYMAdG7FAPsyHYAPpywE9PJo+Khy" crossorigin="anonymous"></script> 97 </body> 98 </html>
また
データベース名:difficulty
テーブル名:programing
という風になっておりテーブルのカラムは
+------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| language | varchar(100) | YES | | NULL | |
| comment | varchar(200) | YES | | NULL | |
| created_at | timestamp | NO | | CURRENT_TIMESTAMP | |
+------------+--------------+------+-----+-------------------+----------------+
このような感じになっている
試したこと
上記のコードで
PHP
1if (array_key_exists('comment',$_POST)) { 2 $sql = 'INSERT INTO programing (comment) VALUES(:comment)'; 3 $result = $link->prepare($sql); 4 $result->bindParam(':comment',$_POST['comment']); 5 $result->execute(); 6 $result = null; 7 8} 9if (array_key_exists('language',$_POST)) { 10 $sql = 'INSERT INTO programing (language,comment) VALUES($_POST[language],$_POST[comment])'; 11 $result = $link->prepare($sql); 12 $result->bindParam(':language',$_POST['language']); 13 $result->execute(); 14 $result = null; 15 16} 17
これが2つあるのが原因かと思い、1つにまとめるやり方を検索してみて色々と試行錯誤してみたものの原因が掴めなかった。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。