php
1<?php 2session_start(); 3session_regenerate_id(true); 4if(isset($_SESSION['member_login'])==false){ 5 echo'ようこそゲスト様 '; 6 echo'<a href="./membert_login.html">会員ログイン</a><br/>'; 7 echo'<br/>'; 8}else{ 9 echo $_SESSION['member_name']; 10 echo'様<br/>'; 11 echo'<a href="member_logout.php">ログアウト</a><br/>'; 12 echo'</br>'; 13} 14?> 15<!DOCTYPE html> 16<html lang="en"> 17<head> 18 <meta charset="UTF-8"> 19 <title>Document</title> 20</head> 21<body> 22<?php 23try{ 24 25$cart=$_SESSION['cart']; 26$kazu=$_SESSION['kazu']; 27$max=count($cart); 28 29 30$dsn='mysql:dbname=shop;host=localhost;charset=utf8'; 31$user='kakeaki'; 32$password='kakeaki'; 33 34$dbh=new PDO($dsn,$user,$password); 35$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 36 37foreach($cart as $key=>$val){ //セッションに入っているcodeを入れている 38 $sql='SELECT code,name,price,gazou FROM mst_product WHERE code=?'; 39 $stmt=$dbh->prepare($sql); 40 $data[0]=$val; 41 $stmt->execute($data); 42 43 44 45 46 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 47 48 $pro_name[]=$rec['name']; 49 $pro_price[]=$rec['price']; 50 if($rec['gazou']==''){ 51 $pro_gazou[]=''; 52 }else{ 53 $pro_gazou[]='<img src="../product/gazou/'.$rec['gazou'].'">'; 54 } 55} 56 57$dbh=null; 58 59}catch(Exception $e){ 60 echo'ただいま障害により大変ご迷惑をお掛けしています '; 61 exit(); 62 63} 64?> 65カートの中身</br> 66</br> 67<form method="post" action="kazu_change.php"> 68<?php for($i=0;$i<$max;$i++){ ?> 69<?php echo $pro_name[$i];?> 70<?php echo $pro_gazou[$i];?> 71<?php echo $pro_price[$i];?>円 72<input type="text" name="kazu<?php echo $i;?>" value="<?php echo $kazu[$i];?>"> 73<?php echo $pro_price[$i]*$kazu[$i];?>円 74<br/> 75<?php } ?> 76<br/> 77<input type="hidden" name="max" value="<?php echo $max;?>"> 78<input type="submit" value="数量変更"><br/> 79<input type="button" onclick="history.back()" value="戻る"> 80</form> 81 82</body> 83</html>
気づけばプロ並みPHP改訂版で勉強をしています。
foreach文についての質問です。
「$data[0]=$val;」ここの部分の[0]の役割がよくわかりません。本書では、「0と明示的に書いたのは、ルーフが回るたびに1,2,3,となってしまわないためです。」と書いてあるのですが理解できませんでした。
試しに、0ではなく1や2と書くとうまく機能しませんでした。また、「$data =$val;」このような形にしてもうまく機能しませんでした。
なぜ、「$data[0]=$val;」この形にしなければうまく機能しないのかわかりません。ご教授の方をよろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/05 04:19