実現したいこと
textareaでカレンダーに書き込みをしてスケジュールカレンダーのようなものを作りたいと考えています。
前提
php,mysqlで書き込めるカレンダースケジュールシステムを作っています。
発生している問題・エラーメッセージ
textareaの内容をformにて送信するのがうまくできておらず、困っております。いろいろと調べたのですが、なぜ送信が出来ていないのかがよくわからず、教えていただけましたら幸いです。
該当のソースコード
ソースコード
<!-----------カレンダープログラム---------------> <?php var_dump($_POST['text_msg']); //追加 $ym = null; $timestamp = null; $today = null; $html_title = null; $prev = null; $next = null; $day_count = null; $youbi = null; $weeks = null; $week = null; $day = null; $day_count = null; $option = null; $pdo = null; $text_msg = array(); session_start(); //タイムゾーンを設定 date_default_timezone_set('Asia/Tokyo'); //前月・次月リンクが選択された場合は、GETパラメーターから年月を取得 if(isset($_GET['ym'])){ $ym = $_GET['ym']; }else{ //今月の年月を表示 $ym = date('Y-m'); } //タイムスタンプ(どの時刻を基準にするか)を作成し、フォーマットをチェックする //strtotime('Y-m-01') $timestamp = strtotime($ym . '-01'); if($timestamp === false){//エラー対策として形式チェックを追加 //falseが返ってきた時は、現在の年月・タイムスタンプを取得 $ym = date('Y-m'); $timestamp = strtotime($ym . '-01'); } //今月の日付 フォーマット $today = date('Y-m-j'); //カレンダーのタイトルを作成 例)2020年10月 $html_title = date('Y年n月', $timestamp);//date(表示する内容,基準) //前月・次月の年月を取得 //strtotime(,基準) $prev = date('Y-m', strtotime('-1 month', $timestamp)); $next = date('Y-m', strtotime('+1 month', $timestamp)); //該当月の日数を取得 $day_count = date('t', $timestamp); //1日が何曜日か $youbi = date('w', $timestamp); //カレンダー作成の準備 $weeks = []; $week = ''; //第1週目:空のセルを追加 //str_repeat(文字列, 反復回数) $week .= str_repeat('<td></td>', $youbi); for($day = 1; $day <= $day_count; $day++, $youbi++) { $date = $ym . '-' . $day; //それぞれの日付をY-m-d形式で表示例:2020-01-23 //$dayはfor関数のおかげで1日づつ増えていく if($today == $date) { //もしその日が今日なら $week .= '<td class="today">' . $day . "<textarea name = 'text_msg'>" ; } else { //上2つ以外なら //修正 $week .= '<td>' . $day . "<textarea name = 'text_msg'>"; } $week .= '</textarea>'.'</td>'; if($youbi % 7 == 6 || $day == $day_count) {//週終わり、月終わりの場合 //%は余りを求める、||はまたは //土曜日を取得 if($day == $day_count) {//月の最終日、空セルを追加 $week .= str_repeat('<td></td>', 6 - ($youbi % 7)); } $weeks[] = '<tr>' . $week . '</tr>'; //weeks配列にtrと$weekを追加 $week = '';//weekをリセット } } ?> <?php //データベースの接続情報 define( 'DB_HOST', 'localhost'); define( 'DB_USER', 'root'); define( 'DB_PASS', 'growry1293'); define( 'DB_NAME' , 'calender'); try{ $option = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_MULTI_STATEMENTS => false); $pdo = new PDO('mysql:charset=UTF8;dbname='.DB_NAME.';host='.DB_HOST,DB_USER,DB_PASS, $option); }catch(PDOException $e){ $error_msg[]= $e -> getMessage(); } if (!empty(($_POST['update']))) { //修正 $text_msg = preg_replace('/\A[\p{C}\p{Z}]++|[\p{C}\p{Z}]++\z/u', '',$_POST['text_msg']); echo $text_msg; if(empty($text_msg)){ $error_msg[] = '内容を入力してください。' ; }else{ $_SESSION['text_msg'] = $text_msg; } if(empty($error_msg)){ $pdo -> beginTransaction(); try{ // SQL作成 $stmt = $pdo->prepare("INSERT INTO msg_box (text_msg) VALUES ( :text_msg)"); // 値をセット $stmt->bindParam( ':text_msg', $text_msg, PDO::PARAM_STR); //sqlクエリの実行 $res = $stmt->execute(); //コミット $res = $pdo->commit(); }catch(Exception $e){ $pdo -> rollBack(); } if($res){ $_SESSION['success_msg'] = "書き込みに成功しました"; }else{ $error_msg[] = "書き込みに失敗しました。"; } $stmt = null; header('Location:[""]'); exit; } }else{ echo "データが送信されていない"; } if( !empty($pdo)){ //メッセージのデータを取得する $sql = "SELECT text_msg FROM msg_box"; $message_array = $pdo->query($sql); } ?> <!-----------カレンダープログラム---------------> <!-----------データベースに接続--------> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>PHPカレンダー</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet"> <style> .container { font-family: 'Noto Sans', sans-serif; margin-top: 80px; width: 80vw; margin: 0 auto; } h3 { margin-bottom: 30px; } th { height: 30px; text-align: center; } td { height: 100px; } textarea{ height: 100px; width: auto; } .today { background: orange; } th:nth-of-type(1), td:nth-of-type(1) { color: red; } th:nth-of-type(7), td:nth-of-type(7) { color: blue; } .holiday{ color: red; } .update_box{ text-align: center; } .submit_box{ width: 120px; height: 50px; margin: 50px auto; } </style> </head> <body id=""> <div class="container"> <h3><a href="?ym=<?php echo $prev; ?>"><</a><?php echo $html_title; ?><a href="?ym=<?php echo $next; ?>">></a></h3> <form action="" method = "POST"> <table class="table table-bordered"> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> <?php foreach ($weeks as $week) { echo $week; } ?> </table> <div class = "update_box"> <input type="submit" name = "update" class = "submit_box" value = "更新する"></input> </div> </form> </div> </body> </html> ```ここに言語名を入力

回答3件
あなたの回答
tips
プレビュー