フォーム内に複数ある同一データを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
あなたの回答
tips
プレビュー