checkの中の数を変更するとエラーがでてしまいます。 - PHPプロ!Q&A掲示板

4940

  • 0P

checkの中の数を変更するとエラーがでてしまいます。

質問日時 / 2018年4月29日 18:05    回答数 / 1件

Questioner:  30333033  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

Notice: Undefined offset: 0 in C:\xampp\htdocs\shop\shop_cartlook.php on line 109

  1. <?php
  2.  session_start();
  3.  session_regenerate_id(true);
  4. if(isset($_SESSION['member_login'])==false)
  5.  
  6. {
  7.  print'ようこそゲスト様。';
  8. print' <a href="member_login.html">会員ログイン</a><br>';
  9.  print'<br>';
  10. }
  11.  
  12.  
  13. else
  14. {
  15.  print'ようこそ';
  16.  print$_SESSION['member_name'];
  17.  print'';
  18.  print'<a href="member_logout.php">ログアウト</a>';
  19.  print'<br>';
  20. }
  21.  
  22. ?>
  23.  
  24.  
  25.  
  26.  
  27.  
  28. <!DOCTYPE html>
  29. <html lang="ja">
  30. <head>
  31. <meta charset="UTF-8">
  32. <meta name="viewport" content="width=device-width">
  33. <meta name="keywords" content="">
  34. <meta name="descroption" content="">
  35. <meta name="author" content="akihiro">
  36. <meta name="generator" conten="Tera pad">
  37. <link rel="stylesheet" href="">
  38. <title>ろくまる農園</title>
  39. </head>
  40. <body>
  41.  
  42. <?php
  43. try
  44. {
  45. $cart=$_SESSION['cart'];
  46. $kazu=$_SESSION['kazu'];
  47.  
  48. $max=count($cart);
  49.  
  50.  
  51. $dsn='mysql:dbname=shop;host=localhost;charset=utf8';
  52. $user='root';
  53. $password='';
  54. $dbh=new PDO($dsn,$user,$password);
  55. $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  56.  
  57.  
  58.  
  59. foreach($cart as $key=>$val)
  60. {
  61.  $sql='SELECT code,name,price,gazou FROM mst_product WHERE code=?';
  62.  $stmt=$dbh->prepare($sql);
  63.  $data[0]=$val;
  64.  $stmt->execute($data);
  65.  
  66.  $rec=$stmt->fetch(PDO::FETCH_ASSOC);
  67.  
  68.  $pro_name[]=$rec['name'];
  69.  $pro_price[]=$rec['price'];
  70.  if($rec['gazou']=='')
  71.  {
  72.  $pro_gazou[]='';
  73.  }
  74.  else
  75. {
  76.  $pro_gazou[]='<img src="../product/gazou/'.$rec['gazou'].'">';
  77.  
  78. }
  79.  
  80.  
  81.  
  82.  
  83. }
  84. $dbh=null
  85.  
  86.  
  87. }
  88.  
  89.  
  90.  
  91.  
  92. catch(Exception $e)
  93. {
  94.  print'迷惑';
  95. }
  96. ?>
  97.  
  98.  
  99. カートの中身<br>
  100. <br>
  101. <form method="post" action="kazu_change.php">
  102. <?php for($i=0;$i<$max;$i++)
  103.  {
  104. ?>
  105. <?php print$pro_name[$i]?>
  106. <?php print$pro_gazou[$i]?>
  107. <?php print$pro_price[$i]?>
  108. <input type="text" name="kazu<?php print$i?>" value="<?php print$kazu[$i]?>">
  109. <?php print$pro_price[$i]*$kazu[$i]?>
  110. <input type="checkbox" name="sakujo<?php print$i?>">
  111. <br>
  112. <?php
  113.  }
  114. ?>
  115.  
  116.  
  117.  
  118.  
  119. <input type="hidden" name="max" value="<?php print$max?>">
  120. <input type="submit" value="数量変更">
  121. <input type="button" onclick="history.back()" value="戻る">
  122. </form>
  123.  
  124.  
  125. </body>
  126. </html>

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01shimixえっと・・・。提示されているソースが shop_cartlook

回答一覧

並び替え:

A01
answerershimix [4月30日 22:51]

えっと・・・。提示されているソースが shop_cartlook.php ということでしょうか?それで「checkの中の数を変更すると」というのは、どのような処理を指していますか?

(kazu_change.php が提示されていないので推測ですが)kazu_change.php で、指定された番号の$cartや$kazuを削除したあとで添え字をそのままにしているのではありませんか?
foreach でなく、forループで処理するならば配列の添え字が 0 から始まって連番になっていないとダメですよね(個人的にはこれがいやなのでforeachを使う)。
$pro_priceなどはMySQLからデータを取得して添え字 0 から再作成されるのですから、元の$cartや$kazuも同じになっていないとおかしいですよね?

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)