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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1220閲覧

PHP データの読み書き

hiro_2020

総合スコア7

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/04/20 05:35

前提・実現したいこと

datデータの読込・更新作業
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)でシステムを作っています。
派遣会社のシフト管理を会社⇔現場 でPC/タブレット/スマホ間でやり取りするためにPHPにチャレンジしています。
カレンダー・他マスター登録は完了しました。
現状では編集作業は該当日のデータを直接手作業でタグを入れたりしています。
そこで、編集メニューを新しく作成中ですが日付の変数への代入方法で躓いています。
直接、手書きすればきちんと読み込めています。
なお、カレンダーは「input type="text" id="ndt"」でフォーマットも「'2020-4-3'」に変更は終わっております。
2020-03-02,・〇さん 休<br />××さん 休<br />□さん 待機:コメントコメントコメントコメントコメントコメント
一日のデータは1件だけです。
カレンダーから選択した日付のデータの読込・更新が目的です。

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

フーム自体が立ち上がりません(汗)

該当のソースコード

中略-----
#設定ファイルインクルード
require_once('./config2.php');
$commentFilePath = dirname(FILE).'/data/comment_set.dat';
$commentArray = file($commentFilePath);

$getYmd=echo '<p class="text">'.$ndt<p>';  ← ここがネック??(汗) $getYmd ='2020-4-3';  ← これだと正常です。(2020-04-03でもどちらでも正常) $day=$_GET[$getYmd]; $commentTag = ''; if(count($commentArray) > 0){ foreach($commentArray as $commentArrayVal){ $commentArrayExp = explode(',',$commentArrayVal); if(strtotime($getYmd) == strtotime($commentArrayExp[0]) ){ $commentTag = '<textarea name="scheduleComment" rows="7" cols="45" style="width:100%; font size:12px;>'.rtrim($commentArrayExp[1]).'</textarea>'; break; } } }

//$lines = file($timeListFilePath); //ここでインプット
echo <<<EOM
$commentTag
EOM;

ソースコード

試したこと

$getYmd ='2020-4-3';  ← これだと正常です。(2020-04-03でもどちらでも正常)

補足情報(FW/ツールのバージョンなど)

サーバーのPHPバージョンは7.?でした。
ここにより詳細な情報を記載してください。
PHPの初心者ですのでお手数ですがよろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/20 06:03

わかりづらさ、伝わりづらさを軽減するためにも、 「ここに質問の内容を詳しく書いてください。 (例)PHP(CakePHP)でシステムを作っています。」 「ここにより詳細な情報を記載してください。」 みたいな、テンプレの文言を放置せず削除してください。 「フーム」ってなんですか。 ソースコード、のくくりの中に正しくソースコードを配置してください。 ぶっちゃけ、何がどうトラブル発生しているのかわからないです。読む気がしない。
hiro_2020

2020/04/20 06:30

早速のご指摘ありがとうございます。 何分にも初めてのことでしてご容赦ください。 再度、仕切り直します。ほんとにすみませんでした。
退会済みユーザー

退会済みユーザー

2020/04/20 06:44

何回でも、質問文は修正・更新ができます。 改めて質問を起こす必要はありません。
hiro_2020

2020/04/21 20:23

m6uさま、k011510 さま、本当にありがとうございました。 PHPにチャレンジを初めて約2週間ですが、今回のしたかった事、解決いたしました。 いくら不慣れとはいえ、大変な失礼があったと反省しています。今回のアドバイスに改めて感謝申し上げます。今後tもご指導のほどよろしくお願いいたします。
guest

回答1

0

ベストアンサー

phpのコードを実行する前に、文法チェックをしてください。
文法エラーが発生するうちは、webブラウザに対してろくに出力できません。

PHPのエラー表示設定について - Qiita
を参考に、
phpコードの冒頭に

php

1<?php 2ini_set('display_errors', "On"); 3ini_set('error_reporting', E_ALL); 4

などと記述しても、そもそも文法エラーが有ると実行すらしないため、
webサーバープロセスが出力する error_log ファイルをチェックする必要が生じて面倒です。

そのため、面倒でも、php.iniファイルを特定して
php.iniファイル上に

display_errors = On
error_reporting = E_ALL

を書いて、とにかくwebブラウザ向けにエラー表示できるようにしちゃえばいいです。

そして、phpファイル自体の文法チェックを
コマンドラインから実行する方法も知っておくと良いです。
PHP: オプション - Manual

php -l ファイル名

などとすれば、-lエルのオプションで文法チェックをします。
文法エラーがないことを確認してから、
webブラウザから呼び出してみてください。


$day=$_GET[$getYmd];で受け取るデータを可変でやろうというのであれば、
<input type="text" name="comment_20200420" value="" />
みたいな日付をname属性に持たせる方法で構築するなら、
$dt = new DateTime();的なDateTimeクラスのインスタンスだとして
echo 'comment_' . $dt->format('Ymd') みたいなのをname属性の中に埋め込めば経路はできそう。


あるいは、単に

php

1<?php 2 3for ($d = 1; $d <= 30; ++$d) : 4?><tr> 5 <td><input type="hidden" name="date[]" value="2020-04-<?php printf("%02d", $d); ?>" /><?php echo $d?> </td> 6 <td><input type="text" name="comment[]" value="" /> </td> 7</tr> 8<?php 9endfor;

みたいに、name属性を工夫して「date[]」「comment[]」などとして、
同じ添字で日付と入力データをリンクさせるなど。

設計次第です。

投稿2020/04/20 07:48

編集2020/04/20 08:12
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro_2020

2020/04/21 05:05

大変ご丁寧なご説明、ありがとうございました。 phpの初心者でして、不慣れな点が多くありますが一つずつクリアしていきたいと思います。日中では集中できませんので夜間にでも落ち着いて状態でチャレンジしてみます。改めて感謝申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問