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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

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

Q&A

0回答

1459閲覧

for文を用いてform内の複数データを受け渡したい

hkfree95

総合スコア8

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

HTML

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

0グッド

0クリップ

投稿2020/03/16 02:53

フォーム内に複数ある同一データをfor文を用いて受け渡したいのですが、nameで変数の書き方が分からず、試行錯誤を続けております。
for文内で定義した$iをnameで使いpostで受け渡しを行いたいのですが可能でしょうか。
またformで送信するデータがデータベースに保存されている物と一致しているか、送信先のファイルで確認したいと思っています。
お知恵を拝借したく存じます。よろしくお願いいたします。

PHP

1<データ送信ファイル> 2<?php 3// DB接続 4$host = 'localhost'; 5$dbname = 'original'; 6$dbuser = 'root'; 7$dbpass = 'root'; 8try { 9 $dbh = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8mb4", $dbuser, $dbpass, array(PDO::ATTR_EMULATE_PREPARES => false)); 10} catch (PDOException $e) { 11 var_dump($e->getMessage()); 12 exit; 13} 14// セレクト用データ取得 15 16 17?> 18<!DOCTYPE html> 19<html> 20 21<head> 22 <meta charset="utf-8"> 23 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 24 <title>Ajax、PHP、MySQLの連携</title> 25 <link rel="stylesheet" href=""> 26 27</head> 28 29<body> 30 <form action="check.php" method="post"> 31 <?php for ($i = 1; $i <= 10; $i++) : ?> 32 <label for="food_name">食べ物<?php echo $i; ?></label> 33 <select name="food_name<?php echo $i; ?>"> 34 <?php 35 // DBから食べ物情報取得 36 $records = $dbh->query('SELECT * FROM foods'); 37 // 取得した食べ物情報を全て表記 38 foreach ($records as $record) : ?> 39 <option value="<?php $name = $record['name']; 40 echo htmlspecialchars($name, ENT_QUOTES); 41 ?>"> 42 <?php echo htmlspecialchars($name, ENT_QUOTES); ?> 43 </option> 44 <?php endforeach; ?> 45 </select> 46 <label for="food_amount">数量を入力:</label> 47 <input name="food_amount<?php echo $i; ?>" type="number"><br> 48 <div id="result"> 49 </div> 50 <?php endfor; ?> 51 <p>数値を入力してボタンを押してください。</p> 52 <input type="submit" value="計算する"> 53 </form> 54 55 56 57</body> 58 59</html>

PHP

1<データ受信ファイル> 2<?php 3// DB接続 4$host = 'localhost'; 5$dbname = 'original'; 6$dbuser = 'root'; 7$dbpass = 'root'; 8try { 9 $dbh = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8mb4", $dbuser, $dbpass, array(PDO::ATTR_EMULATE_PREPARES => false)); 10} catch (PDOException $e) { 11 var_dump($e->getMessage()); 12 exit; 13} 14 15$food_name = $_POST['food_name$i']; 16$food_amount = $_POST['food_amount$i']; 17 18?> 19 20<!DOCTYPE html> 21<html lang="ja"> 22 23<head> 24 <meta charset="UTF-8"> 25 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 26 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 27 <title>Document</title> 28</head> 29 30<body> 31 <!-- 名前を基にカロリーを引き出す --> 32 <?php for ($i = 1; $i <= 10; $i++) : ?> 33 <?php 34 35 $sql = "SELECT * FROM foods WHERE name = ?"; 36 $stmt = ($dbh->prepare($sql)); 37 $stmt->execute(array($_POST['food_name$i'])); 38 $data = $stmt->fetch(); 39 $sum = $data['cal'] * $food_amount; 40 41 42 ?> 43 <p>合計カロリー:<?php echo $sum; ?>kcalです。</p> 44 <p>合計カロリー:<?php print(htmlspecialchars($food_amount, ENT_QUOTES)); ?></p> 45 <?php endfor; ?> 46</body> 47 48</html> 49 50 51 52```<データベース> 53|id|name|nutrients|unit|cal 54|:--|:--:|--:| 551|卵|Protein|1個あたり|91.0 562|くるみ|Fat|100gあたり|674.0

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

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

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

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

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

yambejp

2020/03/16 02:59

全体的に何をやりたいかわらかないです どういったデータからどういった結果を導き出したいのでしょうか?
hkfree95

2020/03/16 03:03

実現したいことはDBのnameからcalを取り出し、送信ファイルで打ち込んだ数量とカロリーを計算して、合計カロリーを算出したいと考えています。
yambejp

2020/03/16 03:05

SELECT * FROM foodsが膨大なデータになりませんか? 絞り込んでいるようにも見えませんが・・・
hkfree95

2020/03/16 03:06

まずは小さいモデルを検討しています。
m.ts10806

2020/03/16 03:58

'food_name$i' 上記、あくまで変数展開できない書き方をしてるだけですが、そこは認識ありますか? PHPマニュアルでは「文字列」のところです。
hkfree95

2020/03/16 05:35

いえ、認識ありませんでした。 同じ処理なので、for文を使いたいのですが、1つ1つ打つしかないでしょうか?
m.ts10806

2020/03/16 06:13

過去質問にも頻出ですけど、試してみると良いですよ。 echo 'food_name$i'; echo 'food_name'.$i; echo "food_name$i"; echo "food_name{$i}"; echo "food_name".$i;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問