質問失礼します。
現在ローカル環境でphpの勉強をしており、ページネーションを造ろうとしているのですが、
ページネーションがうまく機能しません。
次のページを押下すると1ページ目と同じ内容が表示されます。
エラーはNotice: Undefined indexと表示されるので調べたところ
初回アクセス時と2回目以降のアクセスで処理を切り分けていないということっぽいのですが
解決方法が分かりません。
解決方法をご存知の方がいらっしゃいましたらご教授よろしくお願いいたします。
追記です。
少しコードを修正しました。
「前のページへ」と「次のページへ」のリンク設定のコードをechoからprintに変えました。
するとページ送りはうまく動きましたがエラーの表示は消えません。
新しいコードです。
<?php require('dbconnect.php'); $page = $_REQUEST['page']; if($page ==''){ $page = 1 ; } $page = max($page, 1); //最終ページを取得 $cnt = $mysqli->query('SELECT COUNT(*) AS cnt FROM menu'); $table = mysqli_fetch_assoc($cnt); $maxPage = ceil($table['cnt'] / 5); $page = min($page, $maxPage); $start = ($page - 1) * 5; ?> <div id="menu_list"> <table class="menu_list"> <tr> <th>商品管理ID</ht> <th>カテゴリー</ht> <th class="menu_name">商品名</ht> <th>価格</ht> <th class="menu_remarks">備考</ht> <th>編集</ht> <th>削除</ht> </tr> <?php $recodeSet = $mysqli->query('SELECT * FROM menu ORDER BY id LIMIT '.$start.',5'); while($table = mysqli_fetch_assoc($recodeSet)){ ?> <tr> <td class="menu_content"><?php echo(htmlspecialchars($table['id'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['kind'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['name'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['price'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['remarks'])); ?></td> <td class="menu_content"><a href="update.php?id=<?php echo(htmlspecialchars($table['id'])); ?>">編集</a></td> <td class="menu_content"><a href="delete.php?id=<?php echo(htmlspecialchars($table['id'])); ?>" onclick="return confirmation();">削除</a></td> </tr> <?php } ?> </table> <ul class="paging"> <?php if($page > 1){ ?> <li><a href="index.php?page=<?php print($page - 1); ?>">前のページ</a></li> <?php } else { ?> <?php } ?> <?php if($page < $maxPage){ ?> <li><a href="index.php?page=<?php print($page + 1); ?>">次のページ</a></li> <?php } else { ?> <?php } ?> </ul> <a href="http://localhost/menu/input.php">商品登録</a> <a href="http://localhost/menu/menu-retrieval.php">カテゴリー別一覧</a> </div>
↓↓↓はechoからprintに変える前のコードです。
<?php require('dbconnect.php'); $page = $_REQUEST['page']; if($page ==''){ $page = 1 ; } $page = max($page, 1); //最終ページを取得 $cnt = $mysqli->query('SELECT COUNT(*) AS cnt FROM menu'); $table = mysqli_fetch_assoc($cnt); $maxPage = ceil($table['cnt'] / 5); $page = min($page, $maxPage); $start = ($page - 1) * 5; ?> <div id="menu_list"> <table class="menu_list"> <tr> <th>商品管理ID</ht> <th>カテゴリー</ht> <th class="menu_name">商品名</ht> <th>価格</ht> <th class="menu_remarks">備考</ht> <th>編集</ht> <th>削除</ht> </tr> <?php $recodeSet = $mysqli->query('SELECT * FROM menu ORDER BY id LIMIT '.$start.',5'); while($table = mysqli_fetch_assoc($recodeSet)){ ?> <tr> <td class="menu_content"><?php echo(htmlspecialchars($table['id'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['kind'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['name'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['price'])); ?></td> <td class="menu_content"><?php echo(htmlspecialchars($table['remarks'])); ?></td> <td class="menu_content"><a href="update.php?id=<?php echo(htmlspecialchars($table['id'])); ?>">編集</a></td> <td class="menu_content"><a href="delete.php?id=<?php echo(htmlspecialchars($table['id'])); ?>" onclick="return confirmation();">削除</a></td> </tr> <?php } ?> </table> <ul class="paging"> <?php if($page > 1){ ?> <li><a href="index.php?page=<?php echo '$page - 1'; ?>">前のページ</a></li> <?php } else { ?> <?php } ?> <?php if($page < $maxPage){ ?> <li><a href="index.php?page=<?php echo '$page + 1'; ?>">次のページ</a></li> <?php } else { ?> <?php } ?> </ul> </div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/14 06:38
2018/08/14 06:43
退会済みユーザー
2018/08/14 06:44
退会済みユーザー
2018/08/14 06:47
2018/08/14 08:08
退会済みユーザー
2018/08/14 08:22
退会済みユーザー
2018/08/14 08:37
2018/08/15 11:25
退会済みユーザー
2018/08/15 11:37
2018/08/17 07:59