現在、2ページに跨るページ遷移について詰まっており相談させて頂きました。
下記に現在の流れを記載しましたが、indexからimportには値が渡せていますが、importからinsertには値を渡せていません。これは何故でしょうか?
ページ遷移 index.php(選択) →import.php(確認) →insert.php(登録)
index.php
1<form enctype="multipart/form-data" action="import.php" method="post"> 2<select name="location"> 3<option value="test">テスト</option>
import.php
1<head> 2 <link rel="stylesheet" href="css/import.css" type="text/css"> 3 <link href="https://fonts.googleapis.com/css?family=M+PLUS+1p&display=swap" rel="stylesheet"> 4 <title>インポート確認</title> 5 <script type="text/javascript"> 6 function submitChk () { 7 /* 確認ダイアログ表示 */ 8 var flag = confirm ("この内容で登録して宜しいですか?\n\n登録したくない場合は[キャンセル]ボタンを押して下さい"); 9 /* send_flg が TRUEなら送信、FALSEなら送信しない */ 10 return flag; 11 } 12 function set2fig(num) { 13 // 桁数が1桁だったら先頭に0を加えて2桁に調整する 14 var ret; 15 if( num < 10 ) { ret = "0" + num; } 16 else { ret = num; } 17 return ret; 18 }//時計 19 function showClock2() { 20 var nowTime = new Date(); 21 var nowHour = set2fig( nowTime.getHours() ); 22 var nowMin = set2fig( nowTime.getMinutes() ); 23 var nowSec = set2fig( nowTime.getSeconds() ); 24 var msg = nowHour + ":" + nowMin + ":" + nowSec; 25 document.getElementById("RealtimeClockArea").innerHTML = msg; 26 }//時計 27 setInterval('showClock2()',1000); 28 </script> 29</head> 30<?php 31try{ 32$pdo = new PDO('mysql:host=localhost;dbname=workinfo;charset=utf8', 'root','root', 33array(PDO::ATTR_EMULATE_PREPARES => false)); 34} catch (PDOException $e) { 35 exit('データベース接続失敗。'.$e->getMessage()); 36} 37 38//工場を取得 39$location = $_REQUEST['location']; 40//理念を取得' 41$philosophy = $_REQUEST['philosophy']; 42//変数に配列を代入 43$data = array(); 44function add_person($workday, $workgroup, $personal, $product, $create, $unit, $exp, $remarks, $worktime, $breaktime) 45{ 46global $data; 47 48//配列にヘッダーの列名を代入 49$data []= array( 50'workday' => $workday, 51'workgroup' => $workgroup, 52'personal' => $personal, 53'product' => $product, 54'create' => $create, 55'unit' => $unit, 56'exp' => $exp, 57'remarks' => $remarks, 58'worktime' => $worktime, 59'breaktime' => $breaktime 60); 61} 62//ファイルの読み込み 63if ( $_FILES['file']['tmp_name'] ) 64{ 65$dom = DOMDocument::load( $_FILES['file']['tmp_name'] ); 66$rows = $dom->getElementsByTagName( 'Row' ); 67//日付に項目がある場合の処理(基本) 68$workday_row = true; 69//繰り返し 70foreach ($rows as $row){ 71if ( !$workday_row ){ 72 $workday = ""; 73 $workgroup = ""; 74 $personal = ""; 75 $product = ""; 76 $create = ""; 77 $unit = ""; 78 $exp = ""; 79 $remarks = ""; 80 $worktime = ""; 81 $breaktime = ""; 82 83$index = 1; 84$cells = $row->getElementsByTagName( 'Cell' ); 85foreach( $cells as $cell ){ 86$ind = $cell->getAttribute( 'Index' ); 87if ( $ind != null ) $index = $ind; 88 89if ( $index == 1 ) $workday = $cell->nodeValue; 90if ( $index == 2 ) $workgroup = $cell->nodeValue; 91if ( $index == 3 ) $personal = $cell->nodeValue; 92if ( $index == 4 ) $product = $cell->nodeValue; 93if ( $index == 5 ) $create = $cell->nodeValue; 94if ( $index == 6 ) $unit = $cell->nodeValue; 95if ( $index == 7 ) $exp = $cell->nodeValue; 96if ( $index == 8 ) $remarks = $cell->nodeValue; 97if ( $index == 9 ) $worktime= $cell->nodeValue; 98if ( $index == 10) $breaktime = $cell->nodeValue; 99 100$index += 1; 101}/* 102//SQL文 103$sql = "INSERT INTO $location (workday, workgroup, personal, contents, product, worktime, breaktime) Values(:workday, :workgroup, :personal, :contents, :product, :worktime, :breaktime)"; 104$stmt = $pdo -> prepare($sql); 105$workday = substr($workday,0,10); 106//$stmt -> bindParam(':location',$location,PDO::PARAM_STR); 107$stmt -> bindParam(':workday',$workday,PDO::PARAM_STR); 108$stmt -> bindParam(':workgroup',$workgroup,PDO::PARAM_STR); 109$stmt -> bindParam(':personal',$personal,PDO::PARAM_STR); 110$stmt -> bindParam(':contents',$contents,PDO::PARAM_STR); 111$stmt -> bindParam(':product',$product,PDO::PARAM_STR); 112$stmt -> bindParam(':worktime',$worktime,PDO::PARAM_STR); 113$stmt -> bindParam(':breaktime',$breaktime,PDO::PARAM_STR); 114 115$stmt->execute(); 116*/ 117//var_dump($sql); 118add_person($workday, $workgroup, $personal, $product, $create, $unit, $exp, $remarks, $worktime, $breaktime); 119//var_dump($workday, $workgroup, $personal, $contents, $product, $worktime, $breaktime); 120} 121$workday_row = false; 122} 123} 124?> 125<html> 126<body> 127<!-- 128<ul class="link"> 129 <li><a href="index.php">業務内容アップロード</a></li> 130 <li><a href="ogaki.php">大垣工場</a></li> 131 <li><a href="iga.php">伊賀工場</a></li> 132 </ul> 133--> 134<div id="header"> 135 <img src="img/text-logo-new.png"class="titlelogo"> 136 <img src="img/logo-new.png" class="logo"> 137<h1 class="title">生産計画表 製造場所:( 138 <?php if($location == 'ogaki'){ 139 echo '大垣'; 140 }else { 141 echo '伊賀'; 142 } 143 ; ?>) 144</h1> 145<!--日付+曜日+時計--> 146<?php 147$week = array( "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日" ); 148?> 149<h2>本日の日付:<?php echo date("Y/m/d").' '.'('.$week[date("w")].')';?> 150<div class="clock"> 151<h2 style="display:inline" id="RealtimeClockArea"></h2> 152</div> 153<hr> 154</div> 155<marquee><h2 class="philosophy"><?php echo $philosophy; ?></h2></marquee> 156<table border ="1" class="table"> 157<hr> 158<tr> 159<th>グループ</th> 160<th>担当者</th> 161<th>製造製品</th> 162<th>生産量</th><!--単位も含める--> 163<th>賞味期限</th> 164<th>備考</th> 165<th>就業時間</th> 166<th>休憩時間</th> 167</tr> 168<?php foreach( $data as $row ) { ?> 169<tr> 170<td><?php echo( $row['workgroup'] ); ?></td> 171<td><?php echo( $row['personal'] ); ?></td> 172<td><?php echo( $row['product'] ); ?></td> 173<td><?php echo( $row['create'].$row['unit'] ); ?></td> 174<td><?php echo( $row['exp'] ); ?></td> 175<td><?php echo( $row['remarks'] ); ?></td> 176<td><?php echo( $row['worktime'] ); ?></td> 177<td><?php echo( $row['breaktime'] ); ?></td> 178</tr> 179<?php } ?> 180</table> 181<form enctype="multipart/form-data" action="insert.php" method="post" onsubmit="return submitChk()"> 182<input type="hidden" name="workgroup" value=<?php echo $workgroup ?>> 183<input type="hidden" name="personal" value=<?php echo $personal ?>> 184<input type="submit" value="登録" /> 185</body> 186</html> 187
insert.php
1省略/// 2$location = $_REQUEST['location']; 3var_dump($location); →null 4省略////
省略しすぎです。
import.php で locationを保存するタグがないから リクエスト情報が消えてるんじゃないでしょうか?
<input type="hidden" name="location" value="$_REQUEST['location']">
動くかどうかはしらないですがこんな感じで値を保持しておくとかでしょうかね
yoorrwmさん
あえて見やすいように、不要なコードははずしたつもりなのですが。
azuapricotさん
import.phpでindex.phpから値を受け取れてはいるけど、渡せていないという事でしょうか?
index.phpからimportとinsert2つに予め送ってしまえばいいのかなと思いましたが、それだと確認を挟む意味が無くなってしまいます。
確認画面を一つ挟むことによって、リクエスト情報が消えているといえば伝わりますか?
一つ挟むなら、セッションやCookieに値を保存するか、
<input type="hidden"> で値を保持しておくかなどしないといけません
azuapricotさん
理解致しました。
<input type="hidden" name="location" value=<?php $_REQUEST['location']?>>
<input type="hidden" name="location" value=<?php $location ?>>
のどちらでも、insert.phpに飛んだ時に値がNULLになってしまうのですが。。。。
すいません、echoをいれる事により取得できるようになりました。
質問は編集できるので。
回答3件
あなたの回答
tips
プレビュー