
前提・実現したいこと
ログイン機能がある予約サイトを作っています。
予約データを新しいものから順に表示させ、2個以上ある場合はページングで次へのようにページを移動して出力させたいのですが、現状$arr_reserveがNULLになってしまい出力ができていません。
色々調べましたが原因がわかりませんでした。
何が原因なのか教えて頂きたいです。
よろしくお願いいたします。
該当のソースコード
エラーコード Notice: Undefined index: count in C:\xampp\htdocs\reserve\shop\shop_home.php on line 40
<?php error_reporting(E_ALL); ini_set("display_errors",1); define('PAGE_LIMIT', 2); try { session_start(); $pdo = new PDO('mysql:host=localhost;dbname=reserve;charset=utf8','root','',); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if(!isset($_SESSION["user"])) { header("Location: login.php"); } // ①ユーザーIDからユーザー名を取り出す $query = "SELECT * FROM shop WHERE shop_id=:shop_id"; $shop_stmt = $pdo->prepare($query); $shop_stmt->bindValue(':shop_id', $_SESSION['user'], PDO::PARAM_INT); $shop_stmt->execute(); // ショップ情報の取り出し $row = $shop_stmt->fetch(PDO::FETCH_ASSOC); $shop_id = $row['shop_id']; $shop_name = $row['shop_name']; $yesno = $row['yesno']; $shop_comment = $row['shop_comment']; // reserveテーブルのreserve_shop_idからshop名を取り出す $reserve_query = "SELECT * FROM reserve WHERE reserve_shop_id=:shop_id"; $reserve_stmt = $pdo->prepare($reserve_query); $reserve_stmt->bindValue(':shop_id', $shop_id, PDO::PARAM_INT); $reserve_stmt->execute(); $reserve_stmt->debugDumpParams(); //結果->SQL: [52] SELECT * FROM reserve WHERE reserve_shop_id=:shop_id Params: 1 Key: Name: [8] :shop_id paramno=0 name=[8] ":shop_id" is_param=1 param_type=1 //var_dump($shop_id); ->int(4) // reserveテーブルから予約情報の取り出し $arr_reserve = []; while ($row = $reserve_stmt->fetchAll(PDO::FETCH_ASSOC)) { $arr_reserve[] = [ 'count' => $row['count'], <-エラー箇所 ]; } //var_dump($arr_reserve);->array(1) { [0]=> array(6) { ["count"]=> NULL ["time"]=> NULL} } // リクエストパラメータの取得 $search = filter_input(INPUT_GET, 'search'); $p = !is_numeric(filter_input(INPUT_GET, 'p')) ? 0 : filter_input(INPUT_GET, 'p'); $time = filter_input(INPUT_GET, 'time', FILTER_SANITIZE_SPECIAL_CHARS); $count = filter_input(INPUT_GET, 'count', FILTER_SANITIZE_SPECIAL_CHARS); // 取得開始位置 $offset = $p * PAGE_LIMIT; $sql = $pdo->prepare('select SQL_CALC_FOUND_ROWS * from reserve where reserve_shop_id=:shop_id order by reserve_time desc limit :limit offset :offset'); $sql->bindValue(':shop_id', $_SESSION["user"], PDO::PARAM_INT); $sql->bindValue(":offset", $offset, PDO::PARAM_INT); $sql->bindValue(":limit", PAGE_LIMIT, PDO::PARAM_INT); $sql->execute(); $result = $sql->fetchAll(); // Total件数 $totalRow = $pdo->query("SELECT FOUND_ROWS() as total"); $all = $totalRow->fetch(PDO::FETCH_ASSOC); } catch (PDOException $e) { var_dump($e); die(); } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>店舗トップ</title> </head> <body> <div class="main"> <div class="container" style=""> <div class="row"> <div class="col-xl-8" style="margin-bottom:200px;"> <div class="main-left"> <?php if ( $all['total'] > 0 ) : ?> <p class="alert alert-success" style="text-align:center;">登録店舗数<?=htmlspecialchars(number_format($all['total']),ENT_QUOTES,'utf-8'); ?>件</p> <table class="table table-striped"> <thead> <tr> <th>人数</th> </tr> </thead> <tbody> <?php foreach($arr_reserve as $key => $value): ?> <tr> <td><?= htmlspecialchars($value['count'], ENT_QUOTES, 'UTF-8'); ?></td> <tr> <?php endforeach; ?> </tbody> </table> <!-- ページネーション --> <div class="paging_left" style="float:left;"> <?php if ( $p > 0 ) : ?> <a href="shop_home.php?shop_id=<?= $shop_id ?>search=1&count=<?= $count ?>&p=<?= $p-1 ?>" class="pull-left">戻る</a> <?php else : ?> <span class="pull-left" >最新</span> <?php endif; ?> </div> <div class="paging_right" style="float:right;"> <?php if ( $all['total'] - (PAGE_LIMIT * $p ) > PAGE_LIMIT ) : ?> <a href="shop_home.php?shop_id=<?= $shop_id ?>search=1&count=<?= $count ?>&p=<?= $p+1 ?>" class="pull-right">次へ</a> <?php else : ?> <span class="pull-right" >末尾</span> <?php endif; ?> </div> <?php else : ?> <p class="alert alert-danger">まだ予約がありません</p> <?php endif; ?> </div> </div> <div class="col-xl-4" style=""> <div class="main-right"> <div class="container" > <div class="yesno" style="background-color:;border-radius:10px;border:1px solid black;padding:20px 0;text-align:center;"> <p style=""><?php echo htmlspecialchars($shop_name, ENT_QUOTES, 'UTF-8'); ?> ログイン中</p> </div> </div> </div> </div> </div> </div> </div> </body> </html>
回答4件
あなたの回答
tips
プレビュー