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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

588閲覧

PHPで配列の受け渡し、CSVへの書き込みをしたい

officeyuyu3

総合スコア4

PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/12/26 04:49

input3が入力フォーム、check3が確認画面1、submit3が確認画面です。
check3まではうまくいっていますが、var_dump()で調べてみると、submit3()に配列の値がわたっていない、したがって書き込みもできない状況です。配列の受け渡しについてご教示ください。

<input3>

<!doctype html> <html lang="ja"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> <link rel="stylesheet" href="style.css"> <title>メールフォーム</title> </head> <body> <div class="container mt-3 mb-5"> <h1>メールフォーム</h1> <form method="POST" action="check3.php" enctype="multipart/form-data"> <div class="form-group mb-4"> <label class="col-md-3 col-form-label text-md-right " for="gender">性別</label> <div class="col-md-1 form-check form-check-inline mr-4"> <input class="form-check-input" type="radio" name="gender[]" value="男" id="gender_male" checked> <label class="form-check-label" for="male">男</label> </div> <div class="col-md-2 form-check form-check-inline mr-4"> <input class="form-check-input" type="radio" name="gender[]" value="女" id="gender_female" checked> <label class="form-check-label" for="female">女</label> </div> </div> <div class="form-group mb-4"> <label class="col-md-3 col-form-label text-md-right " for="gift"> オプションの選択</label> <div class="form-check form-check-inline mr-4"> <input class="form-check-input" type="checkbox" name="gift[]" value="あ"> <label class=" form-check-label">あ</label> </div> <div class="form-check form-check-inline mr-4"> <input class="form-check-input" type="checkbox" name="gift[]" value="い"> <label class=" form-check-label">い</label> </div> <div class="form-check form-check-inline mr-4"> <input class="form-check-input" type="checkbox" name="gift[]" value="う"> <label class=" form-check-label">う</label> </div> </div> <div class="row"> <div class="col-12 text-right"> <button type="submit" class="btn btn-primary">送信</button> </div> </div> </form> </div> <!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> </body> </html>
<check3> ```ここに言語を入力 <?php // check.phpに直接アクセスされたときの対策  if (empty($_POST)) { header('Location: input2.php'); exit(); }

session_start();
?>

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<title>メールフォーム</title>
</head> <body> <div class="container"> <h1>ご入力内容</h1> <p>内容を確認してください。</p> <?php //チェックボックスの配列が未定義またはNULLではないか、また配列かどうかを確認 if (isset($_POST['gender']) && is_array($_POST['gender'])) { $gender = $_POST['gender']; } if (isset($_POST['gift']) && is_array($_POST['gift'])) { $gift = $_POST['gift']; } ?> <form method="POST" action="submit3.php"> <table class="table"> <tbody> <tr> <td>性別</td> <td><?php foreach ($gender as $gender_name) { echo '<span>' . $gender_name . '</span>'; } ?></td> </tr> <tr> <td>オプションの選択</td> <td><?php foreach ($gift as $gift_name) { echo '<span>' . $gift_name . "、".'</span>'; } ?></td> </tr> <td align="right" colspan="2"> <input type="submit" name="sub1" value="送信する"> </td> </tr> </table> </form> </div> </body> </html>
``` <?php // submit.phpに直接アクセスされたときの対策  if (empty($_POST)) { header('Location: input3.php'); exit(); } session_start() ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> <title>メールフォーム</title> </head> <body> <?php //配列が未定義またはNULLではないか、また配列かどうかを確認 if (isset($_POST['gender']) && is_array($_POST['gender'])) { $gender = $_POST['gender']; } if (isset($_POST['gift']) && is_array($_POST['gift'])) { $gift = $_POST['gift']; } // 回答を書き込む準備 $line = array($gender, $gift); //ファイルへの書き込み $file_name="answer.csv"; $fp = fopen($file_name,"a"); //fopen(開くファイル名,追記モード) $return = fputcsv($fp, $line); fclose($fp); ?> </body> </html> ``` ``` ``` ``` ``` ``` ```

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

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

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

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

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

takasima20

2021/12/26 06:50

check3 に inputタグが無いようですが?
guest

回答1

0

<form>タグに所属する入力コントロールを送信する機能なので、入力コントロールがなければ何も送信しません(submitボタンがあるならsubmitボタンの設定値のみ送信する)。 「確認画面」を挟んで送信したいのでしたら、全部hiddenで持つとか、セッションに入れるとか工夫が必要です。

投稿2021/12/26 11:08

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問