//tips
//php理解
http://localhost/shop/shop_cartlook.php画面またはコンソールに$kazuの出力を行う。
下記のようにデバッグ確認を行なった。
$kazu=$_SESSION['kazu'];
var_dump($kazu);
結果はnullとなり、forの中身も確認したがやはり変数kazuの中身はnullとなってしまう。
そのため計算結果が0円となってしまう。
<?php print $pro_price[$i]*$kazu[$i];?>円
<?php print $kazu[$i];
var_dump($kazu[$i]);
var_dump($pro_price[$i]*$kazu[$i]);
辿っていくとcartinのスクリプトで初めてkazuをセッションとして登録しているので、一旦そこまで戻り、きちんと認識されているか確かめる。
if(isset($_SESSION['cart'])==true){
$cart[]=$_SESSION['cart'];
$cart[]=$_SESSION['kazu'];
}
Cartinページに戻るとUndefined index: procodeとなり変数が認識されていない。
procodeはshop listのproduct codeのことで
print'<a href="shop_product.php?procode='.$rec['code'].'">';
ここがうまく渡せていないことになる。
この現象はおそらくカートに何も入っていないことに由来している可能性があるのでカートに商品を追加する。
そうするとエラーが発生。
Notice: Array to string conversion in /Applications/XAMPP/xamppfiles/htdocs/shop/shop_cartlook.php on line 45
Fatal error: Uncaught Error: Call to a member function prepare() on null in /Applications/XAMPP/xamppfiles/htdocs/shop/shop_cartlook.php:43 Stack trace: #0 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/shop/shop_cartlook.php on line 43
下記を参考にしてみるも、変数の取り間違いは指定なさそう。
https://qiita.com/mpyw/items/b00b72c5c95aac573b71#2-12
遡って、http://localhost/shop/shop_product.phpを確認していたらUndefined index: procode in /Applications/XAMPP/xamppfiles/htdocs/shop/shop_product.php on line 27の表示がなされ、商品の表示がなされていない。
Phpadminでショップリストの内容は表示されている。
Procodeは商品詳細画面の=以下で表示される数字を取得する。
http://localhost/shop/shop_product.php?procode=1
試しにカートの中身を表示させるために下記をしてみたら、Array to string conversionのエラーが発生するようになっていた。
foreach($cart as $key => $val){
print $val;
print '<br/>';
}
そもそもの$cart[]とは、$pro_codeで
if(isset($_SESSION['cart'])==true){
$cart=$_SESSION['cart'];
$kazu=$_SESSION['kazu'];
}
としてcart[]となっていた部分を修正。
カート自体がおかしくなっている可能性もあるのでclear_cartを実行。
表示は元の通りに戻ったが数量変更を実行すると数量が0になってしまう。
また数量変更を実行すると
foreach($cart as $key => $val){
print $val;
print '<br/>';
}
の数量表記自体がされなくなる。
それはkazu_changeを経由してshop_cartlookに移ったから。先に表示を行なっていたshop_cartinの方は問題なくない。ただ、再度cartinに戻るとprocodeがないためエラーとなる。
max=count($cart);を正しく実行できているか確認しint(1) で帰ってきたのでこれは問題なさそう。
<input type="text" name="kazu<?php print $i;?>" value="<?php print $kazu[$i];?>"> がうまく渡せていないのではないかと考え、var_dump($kazu[0])とするとnullが出ている。0ではないところも注意が必要。
kazu_changeのスクリプトの中身を再度見直す。