質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

セレクタの選択状態を維持したい

hitonoko
hitonoko

総合スコア42

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

3回答

0リアクション

0クリップ

273閲覧

投稿2022/09/01 03:53

編集2022/09/01 06:30

前提

csvファイルを用いてスケジュール帳を作成しています。
年と月を選択するセレクタの選択状態を維持する機能の実装ができません。
原因や解決策などのご指摘をお願いします。

実現したいこと

年と月を選択するセレクタの選択状態を維持できるようにする。

発生している問題・エラーメッセージ

選択状態が保持されない
エラーメッセージなし

該当のソースコード

php

<?php $year =''; $month= ''; $class="hide"; if(isset($_POST["open"],$_POST["month"],$_POST["year"])){ $class="open"; $month = $_POST["month"]; $year = $_POST["year"]; $filename = 'calendar.csv'; // ファイルを開く('a'は追記モード) $fp = fopen($filename, 'a'); // ファイルに書き込む $add_data ="\n$year,$month,"; fputs($fp, $add_data); // ファイルを閉じる fclose($fp); } $answer = ''; if(isset($_POST["select"],$_POST["num1"],$_POST["add"])){ $num1 = $_POST["num1"]; $num2 = $_POST["select"]; if($num2 >= 32){ $answer = "不明な日付"; }else if($num1 == "" || ctype_space($num1)){ $answer = "入力してください"; $num1 ="^(\s| )+$"; }else if(mb_ereg_match(' ',$num1)){ $answer = "入力してください"; $num1 = $_POST["num1"]; }else{ $filename = 'calendar.csv'; // ファイルを開く('a'は追記モード) $fp = fopen($filename, 'a'); // ファイルに書き込む $add_data ="$num2,$num1\n"; fputs($fp, $add_data); // ファイルを閉じる fclose($fp); if($add_data ="$num2,$num1\n"){ $answer = "入力成功"; } header('Location:http://localhost/practice2/calendar.php'); exit(); } } ?> <html> <style> .tr{ display:flex; } .deco{ display:flex; } .hide{ display:none; } .open{ display:block; } </style> <form action="/practice2/calendar.php" method="post" > <select name="year" > <?php for($y=2000; $y<=2100; $y++){ if($year == $y){ echo "<option value='$value' selected >".$y."</option>"; }else{ $selected=$y==2022?" selected":""; echo "<option value=\"$y\"$selected >".$y."</option>"; } } ?> </select> <select name="month" id=""> <?php for($m=1; $m<=12; $m++){ if($year == $m){ echo "<option value='$value' selected >".$m."</option>"; }else{ $selected=$m==9?" selected":""; echo "<option value=\"$m\"$selected>".$m."</option>"; } } ?> </select> <input type="submit" value="表示" name="open" method="post"> </br> </br> <br/><?php echo $answer ?> <div class="<?PHP echo $class; ?>"> <?php echo $year; ?><?php echo $month; ?> </br> </form> <form action="/practice2/calendar.php" method="post" > <select name="select" id="" > <?php if($month == 4 || $month == 6 || $month == 9 || $month == 11 ){ for($i=1; $i<=30; $i++){ echo '<option>'.$i.'</option>'; } }else if($month == 2 && $year % 4 == 0){ for($i=1; $i<=29; $i++){ echo '<option>'.$i.'</option>'; } }else if($month == 2){ for($i=1; $i<=28; $i++){ echo '<option>'.$i.'</option>'; } } else{ for($i=1; $i<=31; $i++){ echo '<option>'.$i.'</option>'; } } ?> </select> <input type="text" name="num1"> <input type="submit" value="登録" name="add" method="post"> <br/> <?php if($month == 4 || $month == 6 || $month == 9 || $month == 11 ){ for($i=1; $i<=30; $i++){ ?> <tbody> <table id="targetTable" border="1"> <tbody> <tr class="tr"> <td style="margin-right:2px;"> <?php echo $i ?> </td> <td> <?php $fp = fopen('calendar.csv', 'r'); $td_txt = ','; $txt = ''; while(($data = fgetcsv($fp)) !== false){ if($year == $data[0] && $month == $data[1] && $i == $data[2]){ if($txt == ""){ $txt = htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); } } } echo $txt; ?> </td> <?php fclose($fp); } }else if($month == 2 && $year % 4 == 0){ for($i=1; $i<=29; $i++){ ?> <tbody> <table id="targetTable" border="1"> <tbody> <tr class="tr"> <td style="margin-right:2px;"> <?php echo $i ?> </td> <td> <?php $fp = fopen('calendar.csv', 'r'); $td_txt = ','; $txt = ''; while(($data = fgetcsv($fp)) !== false){ if($year == $data[0] && $month == $data[1] && $i == $data[2]){ if($txt == ""){ $txt = htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); } } } echo $txt; ?> </td> <?php fclose($fp); } }else if($month == 2){ for($i=1; $i<=28; $i++){ ?> <tbody> <table id="targetTable" border="1"> <tbody> <tr class="tr"> <td style="margin-right:2px;"> <?php echo $i ?> </td> <td> <?php $fp = fopen('calendar.csv', 'r'); $td_txt = ','; $txt = ''; while(($data = fgetcsv($fp)) !== false){ if($year == $data[0] && $month == $data[1] && $i == $data[2]){ if($txt == ""){ $txt = htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); } } } echo $txt; ?> </td> <?php fclose($fp); } } else{ for($i=1; $i<=31; $i++){ ?> <tbody> <table id="targetTable" border="1"> <tbody> <tr class="tr"> <td style="margin-right:2px;"> <?php echo $i ?> </td> <td> <?php $fp = fopen('calendar.csv', 'r'); $td_txt = ','; $txt = ''; while(($data = fgetcsv($fp)) !== false){ if($year == $data[0] && $month == $data[1] && $i == $data[2]){ if($txt == ""){ $txt = htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[3], ENT_QUOTES, "UTF-8"); } } } echo $txt; ?> </td> <?php fclose($fp); } } ?> </tr> </tbody> </table> </div> </form> </body> </html>

calendar.csv

試したこと

入力した年or月とセレクタに設定してある値が一致した場合にselectedを追加して値が保持されるようにした
79,92行目

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

m.ts10806

2022/09/01 06:19

>発生している問題・エラーメッセージ >なし では起きている問題はない状態で、質問はないということになりませんか?
hitonoko

2022/09/01 06:31

大変申し訳ございません。修正いたしました。
yambejp

2022/09/01 06:47

calendar.csvは空なんですか?
hitonoko

2022/09/01 07:41

はい、年月や記入した内容がボタンを押すと追加されていく形になっております

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。