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

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

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

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

PHP

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

解決済

phpでcsvにセレクターの値を出力できない

hitonoko
hitonoko

総合スコア42

CSV

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

PHP

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

2回答

0リアクション

1クリップ

250閲覧

投稿2022/09/05 04:54

前提

csvファイルを用いてスケジュール帳を作成しています。
年と月の値をcsvに追加できません。
原因や解決策などのご指摘をお願いします。

実現したいこと

年と月の値をcsvに追加できるようにする。

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

年と月の値がcsvに追加できない

エラーメッセージ

該当のソースコード

php

<?php $year =''; $month= ''; $class="hide"; if(isset($_GET["open"],/*$_GET["month"],$_GET["year"]*/)){ $class="open"; /*$month = $_GET["month"]; $year = $_GET["year"];*/ } $answer = ''; if(isset($_POST["select"],$_POST["num1"],$_POST["add"],$_POST["month"],$_POST["year"])){ $month = $_POST["month"]; $year = $_POST["year"]; $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 ="\n$year,$month,$num2,$num1\n"; fputs($fp, $add_data); // ファイルを閉じる fclose($fp); 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="get" > <select name="year" > <?php for($y=2000; $y<=2050; $y++){ if ($y == $year && isset($_GET["open"])) { $selected = "selected"; } elseif ($y == 2022 && $year == "" ){ $selected ="selected"; }else{ $selected =""; } echo "<option value='$y' $selected>".$y."</option>"; } ?> </select> <select name="month" id=""> <?php for($m=1; $m<=12; $m++){ if ($m == $month && isset($_GET["open"])) { $selected = " selected"; }elseif ($m == 9 && $month == ""){ $selected = "selected"; } else { $selected = ""; } echo "<option value='$m' $selected>".$m."</option>"; } ?> </select> <input type="submit" value="表示" name="open" method="post"> </form> <br/><?php echo $answer ?> <div class="<?PHP echo $class; ?>"> <?php echo $year; ?><?php echo $month; ?> <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"> </form> <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($y == isset($_GET["year"]) && $m == isset($_GET["month"]) && $i == $data[0]){ if($txt == ""){ $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[1], 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($y == $year && $m == $month && $i == $data[0]){ if($txt == ""){ $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[1], 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($y == $year && $m == $month && $i == $data[0]){ if($txt == ""){ $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[1], 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($y == $year && $m == $month && $i == $data[0]){ if($txt == ""){ $txt = htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); }else{ $txt .= $td_txt.htmlspecialchars($data[1], ENT_QUOTES, "UTF-8"); } } } echo $txt; ?> </td> <?php fclose($fp); } } ?> </tr> </tbody> </table> </div> </body> </html>

試したこと

$month = $_POST["month"];
$year = $_POST["year"];

$month = $_GET["month"];
$year = $_GET["year"];
に変更した

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

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

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

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

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

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

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

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

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

2022/09/05 05:10

こちらの質問が複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

hitonoko

2022/09/05 05:21

自己解決いたしました。申し訳ございません。
m.ts10806

2022/09/05 05:44

ではついた回答から選ぶのではなく、自己解決の形をとってください。 https://teratail.com/help#resolve-myself いずれにしても私がした回答は理解されたほうが実装としてはのぞましい方向になると思いますが・・・。
hitonoko

2022/09/05 08:30

承知しました。回答の方、勉強させていただきます。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

CSV

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

PHP

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