データベースに打ち込んだデータが反映されない
PHP初心者です。
ドットインストールのPHPの講座
「PHPでTodo管理アプリを作ろう」
を参考に、フォームの送信ボタンを押すとデータベースに値が代入されて、指定したデザインで、データベースの値が反映されるというプログラミングを制作しました。
しかし、全く反映されません。
コード
1部を取り出したものが以下のコードです。
PHP
1 2<h2>デッキ登録</h2> 3 <form action = "" id = "write" method = "post"> 4 <h3>デッキ名</h3> 5 <input id = "name" type = "text"> 6 <h3>リーダー</h3> 7 <select id = "reader"> 8 <option disabled selected value>選択してください。</option> 9 <?php foreach ($leaders as $leader): ?> 10 <option id = "chara_<?php echo h($leader->id) ?>" vlaue = "<?php echo h($leader->character_name) ?>"><?php echo h($leader->character_name) ?></option> 11 <?php endforeach; ?> 12 </select> 13 <h3>デッキタイプ</h3> 14 <select id = "dekki_type"> 15 <option disabled selected value>選択してください。</option> 16 <?php foreach ($types as $type): ?> 17 <option id = "type_<?php echo h($leader->id) ?>" vlaue = "<?php echo h($type->type) ?>"><?php echo h($type->type) ?></option> 18 <?php endforeach; ?> 19 </select> 20 <h3>デッキURL</h3> 21 <input id = "url" type = "text"> 22 <input type = "submit" id = "ragistration" value = "登録"> 23 </form> 24<h2>デッキ一覧</h2> 25 <div id = "decklist_template" class = "select"> 26 <h4 class = "deckName"></h4> 27 <p class = "detail">リーダー:<span class = "leaderName"></span></p> 28 <p class = "detail">タイプ:<span class = "typeName"></span></p> 29 <div class = "btn">デッキを確認</div> 30 <div class = "btn">詳細</div> 31 <div class = "btn">削除</div> 32 </div> 33
jquery
1 $("#registration").on('submit',function(){ 2 var name = $('#name').val(); 3 var leader = $('#reader').val(); 4 var type = $('#dekki_type').val(); 5 var url = $("#url").val(); 6 7 $.post('_ajax.php',{ 8 name:name, 9 leader:leader, 10 type:type, 11 url:url, 12 mode:'reg' 13 },function(res){ 14 var $div = $('#decklist_template').clone; 15 $div 16 .attr('id','deck_'+res.id); 17 .find('.deckName').text(name); 18 .find('.leaderName').text(leader); 19 .find('.typeName').text(type); 20 $("#deck_list").prepend($div.fadeIn()); 21 $('#name').val(''); 22 $('url').val(''); 23 }) 24 })
PHP
1require_once('config.php'); 2require_once('function.php'); 3require_once('management.php'); 4 5$ajax_processing = new DB(); 6 7//今回はmanagementクラスのインスタンスを作って、post()というメソッドを呼び出す処理を書いている 8 9if ($_SERVER['REQUEST_METHOD'] === 'POST') { 10 try { 11 $res = $ajax_processing->post(); 12 //jsonであることを知らせている 13 header('Content-Type: application/json'); 14 echo json_encode($res); 15 exit; 16 } catch (Exception $e) { 17 header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); 18 echo $e->getMessage(); 19 exit; 20 } 21}
PHP
1public function post(){ 2 switch ($_POST['mode']){ 3 case 'reg'; 4 return $this->_registration(); 5 } 6 } 7 8 9 public function registration(){ 10 $sql = "insert into deck_data(name,leader,type,url) values (:name,:leader,:type,:url)"; 11 $stmt = $this->_db->prepare($sql); 12 $stmt->execute(array 13 ':name'=>$_POST['name'], 14 ':leader'=>$_POST['reader'], 15 ':type'=>$_POST['dekki_type'], 16 ':url'=>$_POST['url'] 17 ); 18 19 return[ 20 'id' => $this->_db->lastInsertId() 21 ]; 22 } 23 24 }
バグの原因考察
コンソールを見ると
「main.js:21 Uncaught SyntaxError: Unexpected token .」
と出ています。
main.js21 の行はjqueryの「.find('.deckName).text(name)」の部分です。この部分が間違えているんでしょうが、その原因は全くわかりません。
jsが反映されていない、jqueryが反応していない、php同士のファイルがしっかりと動いていないということはないと思います。
おそらく原因はjqueryの書き方だと思っています。Ajaxを処理している間に何かおかしなことになってのではないかと思っています。
※2019年5月18日11:55
追加情報を入力しました。postメソッドについてです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/17 11:15
2019/05/17 11:22
2019/05/17 23:47 編集
2019/05/17 23:56
2019/05/18 02:56 編集
2019/05/21 05:10
2019/05/21 07:24
2019/05/21 07:26
2019/05/22 00:37
2019/05/22 00:39