はじめに
こちらではphpについて問合せがきた内容について書いていきたいと思います。
(適切な題名が思い浮かばなかったためその1といたします)
はじめはどう書いたらいいのかわからなく、初歩的な内容だとそもそもググっても出てこず、挫折することもあると思います。
こちらではその内容を解決する手助けができればと思います。
コードは問合せ者からいただいたものを部分的に抽出し、書き換えたものです。
自分のコードと置き換えつつ解決できればとおもいます。
またこれは1つの案にすぎません。
こんなやり方もあるんだなと参考程度になればと思います。
また、もっとスマートな方法があるとは思いますが、ご容赦いただければと思います。
環境
CentOS
Apache
Vagrant
※こちらは筆者の環境であり問合せ者の環境ではありません
内容
問合せ:htmlから取得した内容をフィールドに反映したいが一つの
フィールドに複数の要素を反映したい。
いただいたコード(実際はもっとながいですがこん今回は一部抜粋)
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>index</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<h1>インプット</h1>
<header>
<form action="test.php" method="post">
<table border="3">
<tbody>
<tr>
<td align="left" valign="top" class="title">name</td>
<td><input type="text" name="comment"></td>
</tr>
<tr>
<td align="left" valign="top" class="title">checkbox</td>
<td>
<input name="checkbox" type="hidden" value="">
<input type="checkbox" name="checkbox[]" value="checkbox1">checkbox1</input>
<br>
<input type="checkbox" name="checkbox[]" value="checkbox2">checkbox2</input>
</td>
</tr>
</tbody>
</table>
<input type="submit" value="送信" class="button">
</form>
</body>
</html>
test.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<h1>確認画面</h1>
</header>
<table border="2">
<?php
$Array = $_POST;
foreach ($Array as $key => $value) {
if ($key == 'comment') {
echo "<tr>";
echo "<td class='title'>" . $key . "</td>";
echo "<td>" . $value . "</td>";
echo "</tr>";
}
if ($key == 'checkbox') {
echo "<tr>";
echo "<td class='title'>".$key."</td>";
for ($i = 0; $i < count($value);++$i) {
echo "<td>".$value[$i]."</td>";
}
}
}
?>
</table>
</body>
</html>
画面1
遷移後画面
フィールドが新しく作られるようになっています。
なのでコードの内容を噛み砕いていきたいお思います。
test.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<h1>確認画面</h1>
</header>
<table border="2">
<?php
#入力内容の取得
$Array = $_POST;
foreach ($Array as $key => $value) {
#コメントレコードの作成
if ($key == 'comment') {
echo "<tr>";
echo "<td class='title'>" . $key . "</td>";
echo "<td>" . $value . "</td>";
echo "</tr>";
}
#チェックボックスレコードの作成
if ($key == 'checkbox') {
echo "<tr>";
#kayフィールドの作成
echo "<td class='title'>".$key."</td>";
#valueフィールドの作成
echo "<td>"/*ここに書く*/"</td>";
}
}
}
?>
</table>
</body>
</html>
test.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
<h1>確認画面</h1>
</header>
<table border="2">
<?php
$Array = $_POST;
foreach ($Array as $key => $value) {
if ($key == 'comment') {
echo "<tr>";
echo "<td class='title'>" . $key . "</td>";
echo "<td>" . $value . "</td>";
echo "</tr>";
}
if ($key == 'checkbox') {
echo "<tr>";
echo "<td class='title'>".$key."</td>";
echo "<td>";
#for文の配置変更
for ($i = 0; $i < count($value);++$i) {
#ここから加えたコード
if($i==0){
echo $value[$i];
}else{
echo ",".$value[$i];
}
#ここまで
}
echo "</td>";
}
}
?>
</table>
</body>
</html>
まとめ
いかがだったでしょうか、なるべく変更を加えることなく期待結果になるようにしてみました。
解説が下手でわかりにくかもしれませんが少しでも助けになればと思います。