前提・実現したいこと
php初学者です。
phpで、記事を投稿/検索/新規作成/編集するプログラムを組んでます。
【伺いたい工程部分】
特定のidの記事の表示画面から、idを受け取りその記事を編集するための編集画面での出来事です。
ユーザーには、新しい情報を入れてもらい最後に更新ボタンを押してDB更新を完了してもう仕様です。
【イメージしている流れ】
① ユーザーが新たに入力した値を取得
それぞれ、inputとtextareaのvalueには初期値としてDBから取得した値が入っているのでchangeイベントで、
radioはclickイベントで、ユーザーがブラウザ上で編集して入力している値を確認しvarで変数に代入して値を保持
script
1$(function(){ 2 3 //ブラウザ上で更新された、input,textareaのvalueを変数に代入 4 $('#id_url').change(function() { 5 var $inputVal_url = $(this).val(); 6 }); 7 8 $('#id_wire_url').change(function() { 9 var $inputVal_wire_url = $(this).val(); 10 }); 11 12 $('#id_project').change(function() { 13 var $nputVal_project = $(this).val(); 14 }); 15 16 $('#id_coment').change(function() { 17 var $textareaVal_coment = $(this).val(); 18 }); 19 20 21 //ブラウザ上で選択された、ラジオボタンのvalueを変数に代入 22$(".page_name_btn").click( function() { 23 var $radioVal_page_name = $("input[name='style']:checked").val(); 24}); 25 26$(".job_btn").click( function() { 27 var $radioVal_job = $("input[name='style']:checked").val(); 28}); 29 30$(".style_btn").click( function() { 31 var $radioVal_style = $("input[name='style']:checked").val(); 32});
② phpに変数を渡す
ajaxで#ajaxクリック時に、update.phpに変数を渡す
script
1 $('#ajax').on('click',function(){ 2 3 //idを変数に代入 4 var $id_id = $('#id_id').val(); 5 6 $.ajax({ 7 url:'update.php', //送信先 8 type:'POST', //送信方法 9 datatype: 'json', //受け取りデータの種類 10 data:{ 11 id : $id_id, 12 url : $inputVal_url, 13 wire_url : $inputVal_wire_url, 14 project : $inputVal_project, 15 coment : $textareaVal_coment, 16 page_name :$radioVal_page_name, 17 job :$radioVal_job, 18 style :$radioVal_style 19 }, 20 // Ajax通信が成功した時 21 success : function(){ 22 alert('更新されました。\nありがとうございました。'); 23 console.log('通信成功'); 24 }, 25 // Ajax通信が失敗した時 26 error : function() { 27 alert('通信に失敗しました。\n通信環境を確認の上、もう一度更新ボタンを押してください。'); 28 console.log('通信失敗'); 29 } 30 }); 31 //submitによる画面リロードを防いでいます。 32 return false; 33 }); //#ajax click end
③ DBを更新する
update.phpで、sql実行して値を更新
php
1ini_set("display_errors", 1); 2error_reporting(E_ALL); 3 4//受け取った値を代入 5$id = $_REQUEST['id']; 6$project = $_REQUEST['project']; 7$url = $_REQUEST['url']; 8$wire_url = $_REQUEST['wire_url']; 9$page_name = $_REQUEST['page_name']; 10$job = $_REQUEST['job']; 11$style = $_REQUEST['style']; 12$coment = $_REQUEST['coment']; 13 14 15$pdo = new PDO(//接続情報); 16 17$sql = 'UPDATE articles SET project = :project and url = :url and wire_url = :wire_url and page_name = :page_name and job = :job and style = :style and coment = :coment 18 WHERE id = :id 19 '; 20 $statement = $pdo->prepare($sql); 21 $statement->bindValue(':id', $id, PDO::PARAM_INT); 22 $statement->bindValue(':project', $project, PDO::PARAM_STR); 23 $statement->bindValue(':url', $url, PDO::PARAM_STR); 24 $statement->bindValue(':wire_url', $wire_url, PDO::PARAM_STR); 25 $statement->bindValue(':page_name', $page_name, PDO::PARAM_STR); 26 $statement->bindValue(':job', $job, PDO::PARAM_STR); 27 $statement->bindValue(':style', $style, PDO::PARAM_STR); 28 $statement->bindValue(':coment', $coment, PDO::PARAM_STR); 29 $statement->execute(); 30 31 $statement = null; 32 $pdo = null;
(補足)
html
1<form> 2ajaxのクリックイベント部分のhtmlの記述 3<!--input,textarea,radioの入力コードの記述--> 4 5<input id="ajax" class="update-btn" type="submit" value="更新する"> 6</form>
発生している問題・エラーメッセージ
DBの更新がされず、ajax通信も成功しているのかが不明です。。。
申し訳ございません。ブラウザが更新されるだけで特に変化なしです。
試したこと
ググりました。
jqueryの変数をphpに渡すことと、その中でajaxを調べ、上記のソースコードはググりながらコピペしてカスタムしました。
補足情報(FW/ツールのバージョンなど)
php:5.7
mysql:5.7.28
ここにより詳細な情報を記載してください。
回答4件
あなたの回答
tips
プレビュー