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

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

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

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

HTML

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

Q&A

解決済

1回答

1634閲覧

$_POST[],for文の併用

KOSUKE.

総合スコア6

PHP

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

HTML

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

0グッド

0クリップ

投稿2020/05/05 13:26

編集2020/05/05 13:40

前提・実現したいこと

phpの練習として、簡単なプログラムを作成しています。
しかし、思うようにプログラムが実行されないので、皆様にご教授頂きたく質問しました。
まだ知識不足ですのが、説明ができていない部分があればご指摘頂けると幸いです。

やりたいことは下記の通りです。

1.表内にinputタグで入力欄を生成
2.これに数字を入力
3.表外の送信ボタンを押すと変数に数値が格納され、表内にinputタグで生成した入力欄には送信ボタンを押す前の数字がそのまま表示

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

エラーメッセージはないが、送信ボタンを押すとinputタグで生成した入力欄にボタンを押す前の数字が表示されない。

該当のソースコード (html.php)

php

1<?php for ($i=1; $i<=10; $i++): ?> 2<!-- 変数の定義 --> 3<?php $varOfPrograming = programingStudyHour.$i; ?> 4 5<table> 6 <tr> 7 <!-- プログラミング行のデータ入力 --> 8 <td> 9 <?php 10 if(isset($_POST[$varOfPrograming])) { 11 $varOfPrograming = $_POST[$varOfPrograming]; 12 }else{ 13 $varOfPrograming = ""; 14 } 15 ?> 16 <form action="" method="POST" class="form_sample"> 17 <input type="text" name=<?=$varOfPrograming?> value=<?=$varOfPrograming?> > 18 </td> 19 </tr> 20</table> 21 22<?php endfor ?> 23<input type="submit" value="送信">

試したこと

for文を使わずに$_POST[]の中身を定数で与えるとうまく行きますが、変数を使用するとうまく行きません。
$_POST[]での値の受け渡しに問題があるのでしょうか?ネット記事を参考にいじっているのですが、うまくいきません。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2020/05/05 13:29

コードやエラーはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/questions/238564 また 定数:programingStudyHour の定義もご提示ください。
m.ts10806

2020/05/05 13:30

それにこの内容だけだとforを使っている意味が分かりません。 どこにもそのようなnameを指定している箇所がありません。 コードは全体の流れが分かる状態でご提示ください。
Yasumichi

2020/05/05 13:36

name と value の両方に varOfPrograming を使う実装がまずそうな気がします。
Yasumichi

2020/05/05 13:50

> エラーメッセージはないが、 デバッグ出力が抑制されているからですかね。私の環境では、for の回数分、変数が未定義だよ、っていうエラーが表示されました。
KOSUKE.

2020/05/05 13:50

ご指摘ありがとうございます。 ・code機能使用しました。 ・$programingStudyHourは$_POST[]で得た値をinputのvalueで表示させるために使用しています。$programingStudyHourは数値を想定しておりますが、特別に定義はしておらずここで初めて出てくるものです。 ・for文はコードを短くするために。また、表の行数を変更する際にも簡単に修正できるようにするために使用しております。 ・「どこにもそのようなnameを指定している箇所がありません。」については申し訳ありませんが、質問を理解することができませんでした。 回答になっていないようでしたら申し訳ありません。
Yasumichi

2020/05/05 13:55

一応、修正案を回答に載せましたが、"programingStudyHour1" から "programingStudyHour10" を $_POST[] の引数にしたかったのですよね。  若干、その辺がごっちゃになっているような気がします。
m.ts10806

2020/05/05 13:58

programingStudyHour.$i; という書き方だと、 「programingStudyHour」という定数と「$i」という変数を文字列で結合しているということになります。 エラーが出ないはずはないです。未定義の定数ですから。
KOSUKE.

2020/05/05 14:15

m.ts10806様 ご丁寧にありがとうございます。
m.ts10806

2020/05/05 14:32

まだ「受付中」となっているようですが、解決されたのでしたら所定の手順に沿って「解決済み」とされてはいかがでしょうか。 https://teratail.com/help/question-tips#questionTips4 Yasumichiさん 今回のように単体実行で済む場合、確認するのに重宝してます。
guest

回答1

0

ベストアンサー

以下のように修正してみました。

php

1<?php for ($i=1; $i<=10; $i++): ?> 2<!-- 変数の定義 --> 3<?php $varOfPrograming = "programingStudyHour".$i; ?> 4 5<table> 6 <tr> 7 <!-- プログラミング行のデータ入力 --> 8 <td> 9 <?php 10 if(isset($_POST[$varOfPrograming])) { 11 $value = $_POST[$varOfPrograming]; 12 }else{ 13 $value = ""; 14 } 15 ?> 16 <form action="" method="POST" class="form_sample"> 17 <input type="text" name=<?=$varOfPrograming?> value=<?=$value?> > 18 </td> 19 </tr> 20</table> 21 22<?php endfor ?> 23<input type="submit" value="送信">

修正箇所は、

php

1 <?php 2 if(isset($_POST[$varOfPrograming])) { 3 $value = $_POST[$varOfPrograming]; 4 }else{ 5 $value = ""; 6 } 7 ?>

php

1 <input type="text" name=<?=$varOfPrograming?> value=<?=$value?> >

の部分です。変数名を保持する $varOfPrograming とその値を保持する $value (仮)に分離してみました。

【追記】
一番大事な修正箇所を忘れていました。

php

1<?php $varOfPrograming = "programingStudyHour".$i; ?>

のように "programingStudyHour" と文字列に変更しました。

【エラーについて】

エラーメッセージはないが、

とありましたが、XAMPP 素の環境だと以下のようなエラーメッセージが 10 回分、表示されました。

イメージ説明

開発環境ではあれば、php の設定を見直した方が良いと思います。

投稿2020/05/05 13:44

編集2020/05/05 13:58
Yasumichi

総合スコア1773

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

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

KOSUKE.

2020/05/05 13:57

Yasumichi様 ご指摘いただいたように修正したら問題解決しました。 初歩的な質問にお時間を割いていただきありがとうございました。 大変助かりました。
Yasumichi

2020/05/05 14:07

いえいえ、こういう実験の積み重ねは好きですよ。応用が期待できますから。 いずれ、回答者側に回られることを期待しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問