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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

1回答

923閲覧

for文で表示した日付のデータを1つずつデータベースに保存するには?

boron

総合スコア11

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2021/01/05 09:56

編集2021/01/06 23:38

・動作画面
イメージ説明
使用日の1月4日、11日、18日、25日の値を仮予約のボタンを押したときに全てデータベースに登録したい。

php

1<?php 2 3 require('dbconnect.php'); 4 require("nav_user.php"); 5 6 if(isset($_GET['y']) and isset($_GET['m']) and isset($_GET['d']) and isset($_GET['w']) and isset($_GET['s1']) and isset($_GET['s2']) and isset($_GET['btn'])){ 7 $y = $_GET['y']; 8 $m = $_GET['m']; 9 $d = $_GET['d']; 10 $w = $_GET['w']; 11 $s1 = $_GET['s1']; 12 $s2 = $_GET['s2']; 13 $every = $_GET['btn']; 14 } 15 if(!empty($_POST)){ 16 $statement = $db->prepare('insert into reservation set year=?,month=?,day=?,week=?,time1=?,time2=?,g_name=?,fee=(time2-time1)*1000,user_id=?,created_at=NOW(),id_facility=1'); 17 18 19 $statement->execute(array( 20 $_POST['year'], 21 $_POST['month'], 22 $_POST['day'], 23 $_POST['week'], 24 $_POST['time1'], 25 $_POST['time2'], 26 $_POST['g_name'], 27 $_SESSION['id'], 28 )); 29 header('Location: https://localhost/kenkyuu/reservation-apply.php'); 30 exit(); 31 } 32 33 34 35 ?> 36<!DOCTYPE html> 37 38<html> 39<head> 40<meta charset="UTF-8"> 41 42<meta http-equiv="X-UA-Compatible" content="IE=edge"> 43<meta name="viewport" content="width=device-width, initial-scale=1"> 44<title>セット予約</title> 45 46<style type="text/css"> 47 48</style> 49</head> 50 51<body> 52 <?php 53 54$year = $y; 55$month = $m; 56?> 57 58 <h2>予約・セット予約</h2> 59 <h3>野球場</h3> 60 <h3><?php echo''.$year.'年'.$month.'月';?></h3> 61 62 <h3>セット予約</h3> 63 <form action="" method="post" enctype="multipart/form-data"> 64 <button type=“button” onclick="location.href='reservation-apply2.php'">戻る</button> 65 66 <input type="submit" value="仮予約" /> 67 <p>利用施設<input type="text" name="facility" size="20" value="野球場"></p> 68 <p>行事名<input type="text" name="g_name" size="20" value="<?php $POST['g_name'] ;?>"></p> 69 70 71<?php 72// var_dump($month); 73// exit; 74$lastd = 31;//$yearと$monthから計算して求める 75$time = mktime(0, 0, 0, $month + 1, 0, $year); 76$lastd = date('d',$time); 77 78for ($d=1; $d<=$lastd; $d++){ 79 $time = mktime(0, 0, 0, $month, $d, $year); 80 $w2 = date('w',$time); 81 $wdays = array('日','月','火','水','木','金','土',); 82 // if($wdays[$w2] == $w){ 83 // echo ' '.$d.'('. $wdays[$w2].')'; 84 // }else{ 85 // echo ''; 86 // } 87 88 89 if($wdays[$w2] == $w): 90 echo '<p>使用日<input type="text" name="year" size="2" value="'.$year.'">年 91 92 <input type="text" name="month" size="1" value="'.$month.'">月'; 93 echo '<input type="text" name="day" size="1" value="'.$d.'">日'; 94 echo '<input type="text" name="week" size="4" value="'. $wdays[$w2].'">'; 95 else: 96 echo''; 97 endif; 98 } 99 100 ?> 101 </p> 102 103 <p>使用時間</p> 104 <select name="time1"> 105 <?php 106 $u1 = $s1; 107 $u2 = $s2; 108 for($u1;$u1<$u2;$u1++){ 109 print('<option value="' .$u1. '">' .$u1. ' 時</option> '); 110 } 111 ?> 112</select>~ 113 114<select name="time2"> 115 <?php for($u2;$u3<$u2;$u2--){ 116 print('<option value="' .$u2. '">' .$u2. ' 時</option>'); 117 } 118 119 ?> 120</select> 121 <table class="table table-striped table-bordered" > 122 <tr> 123 <td>土日予約セット</td> 124 </tr> 125 <tr> 126 <td> 127 <a href="#" class="btn btn-primary" role="button">4日(土)5日(日)</a> 128 </td> 129 </tr> 130 <tr> 131 <td>毎週予約セット</td> 132 </tr> 133 <tr> 134 <td> 135 <ul> 136 <li> 137 土曜日 138 <a href="#" class="btn btn-primary" role="button">4日(土)11日(土)18日(土)25日(土)</a> 139 </li> 140 </td> 141 </tr> 142 143 144</table> 145 146</body> 147</html> 148

・現状
イメージ説明
25日のデータのみ登録可能

ご教授よろしくお願い致します。

・変更したコード(name属性を配列に)

php

1for ($d = 1; $d <= $lastd; ++$d) { 2 $time = mktime(0, 0, 0, $month, $d, $year); 3 $w2 = date('w', $time); 4 $wdays = array('日','月','火','水','木','金','土'); 5 6 7 if ($wdays[$w2] == $w): 8 echo '<p>使用日<input type="text" name="year[]" size="2" value="'.$year.'">年'; 9 echo '<input type="text" name="month[]" size="1" value="'.$month.'">月'; 10 echo '<input type="text" name="day[]" size="1" value="'.$d.'">日'; 11 echo '<input type="text" name="week[]" size="4" value="'.$wdays[$w2].'">'; 12 else: 13 echo ''; 14 endif; 15}

・仮予約を押して、データベースに保存した結果
イメージ説明

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

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

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

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

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

guest

回答1

0

使用日、のimput要素にどういうname属性を与えているかみると、
yearとかmonthとかdayとかweekになっていて、
おそらく出現した最後の入力欄の値しか処理できていない状況です。

php

1for ($d = 1; $d <= $lastd; ++$d) { 2 $time = mktime(0, 0, 0, $month, $d, $year); 3 $w2 = date('w', $time); 4 $wdays = array('日','月','火','水','木','金','土'); 5 // if($wdays[$w2] == $w){ 6 // echo ' '.$d.'('. $wdays[$w2].')'; 7 // }else{ 8 // echo ''; 9 // } 10 11 12 if ($wdays[$w2] == $w): 13 echo '<p>使用日<input type="text" name="year[]" size="2" value="'.$year.'">年'; 14 echo '<input type="text" name="month[]" size="1" value="'.$month.'">月'; 15 echo '<input type="text" name="day[]" size="1" value="'.$d.'">日'; 16 echo '<input type="text" name="week[]" size="4" value="'.$wdays[$w2].'">'; 17 else: 18 echo ''; 19 endif; 20}

などとするとよいです。
参考事例:PHP - POSTによる配列の受け渡し | php Tutorial

投稿2021/01/05 10:06

編集2021/01/05 10:08
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

boron

2021/01/06 15:15

回答ありがとうございます。 name属性に配列を加えて実行しましたが上手くいきませんでした。 他にも何か加えないといけないのでしょうか? 実行結果を編集して表示させていただきます。
退会済みユーザー

退会済みユーザー

2021/01/07 00:12

参考事例、として紹介した記事もセットで見てください。 あるいは例えば print_r($_POST['year']); などをデバッグ的に仕込めばデータ構造を把握できます。 配列でフォーム送信データを受信するためには、アクセス方法も変わります。 例えば $_POST['year'] 自体が配列なのだから、1つ目の要素にアクセスするには $_POST['year'][0] になるなど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問