質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

317閲覧

ページング機能について

ariiiiiga

総合スコア66

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/05/17 10:31

編集2019/06/26 15:17

ページング機能について教えて頂きたいです。
ページング機能について教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/17 11:20 編集

ページング機能というのがどうやって実現されているか、概念はどこまでわかっていますか? 例えば100件レコードがあって10行ずつ表示するならば、最初は1~10行目、次は11~20行目ってなりますよねぇ。何ページ目かっていうパラメータとページ内表示データ数さえ決まれば、すぐ行けるような気がするのですがどこがわかりませんか。パラメータとして、ページ番号とするのか、何行目とするのかは好き好きでしょうから、設計しっかり。
m.ts10806

2019/05/29 05:50 編集

お気づきとは思いますが当初からご自身が「解決済み」とされた回答に対する指摘をしています。 このままあの回答が残されても何の参考にもならなので修正してください。
guest

回答2

0

自身で以前ページングについての質問されてましたよね。
その質問見返してみては?
私もほぼそのままで動くコードを回答で投稿しています。

「これで今のコードにどう反映していいかわからない」のでしたらそれはページングの概念を知るところから始めてください。
計算方法はどこにでも出ているのでそれさえきちんとわかれば言語問わずできます。


※低評価した人へ
当該質問は当初から低評価5を超えているため質問や回答を修正したりコメントをしても「アクティブ」には出ません。
それでも低評価が加速するということは十中八九、質問者自身および質問者の関係者(または別アカウント)であることはほぼ間違いないです。
コメントがないことからもこの回答を技術的観点で評価できる人ではないことが伺い知れます。それは立派な荒らし行為です。別途コメントした通り既に質問者は通報済みです。
低評価する場合はその理由をコメントすることが推奨されています。コメントできないのであれば低評価は取り下げてください。低評価するのであれば技術的観点からしっかり批判してください。
中身ではなく好き嫌いでしか評価できない自身を恥じてください(特に技術者としては最低の行為です)

投稿2019/05/17 11:07

編集2019/05/30 01:32
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

error_reporting(E_ALL);
ini_set("display_errors",1);
define('PAGE_LIMIT', 10);
session_start();
try {
$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: user_index.php"); } // ①ユーザーIDからユーザー名を取り出す $query = "SELECT * FROM users WHERE user_id=:user_id"; $result = $pdo->prepare($query); $result->bindValue(':user_id', $_SESSION['user'], PDO::PARAM_INT); $result->execute(); // ユーザー情報の取り出し while ($row = $result->fetch(PDO::FETCH_ASSOC)) { $user_name = $row['user_name']; $user_id = $row['user_id']; $tel = $row['tel']; } // ②yesnoで数字順に並べる $query = "SELECT * FROM shop order by yesno asc"; $shop_result = $pdo->query($query); if (!$shop_result) { print('店側クエリーが失敗しました。' . $pdo->error); $pdo->close(); exit(); } // ショップ情報の取り出し $arr_shop = []; while ($row = $result->fetch(PDO::FETCH_ASSOC)) { $arr_shop[] = [ 'shop_id' => $row['shop_id'], 'shop_name' => $row['shop_name'], 'yesno' => $row['yesno'], ]; } // リクエストパラメータの取得

$search = filter_input(INPUT_GET, 'search');
$p = !is_numeric(filter_input(INPUT_GET, 'p')) ? 0 : filter_input(INPUT_GET, 'p');
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
$yesno = filter_input(INPUT_GET, 'yesno', FILTER_SANITIZE_SPECIAL_CHARS);

// 取得開始位置 $offset = $p * PAGE_LIMIT; // SQL生成 $where = []; $whereSql = null; if ( count($where) > 0 ) { $whereSql = " where ".implode(' OR ', $where); } $sql = $pdo->prepare('select SQL_CALC_FOUND_ROWS * from shop '.$whereSql.' order by shop_id desc limit :limit offset :offset'); $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> <link href="style.css" rel="stylesheet" type="text/css" media="all"> </head> <body>
<div class="home"> <div class="header" > <div class="col-xs-12" > <a href="#" >サイト名</a> <p ><?php echo $user_name; ?> ログイン中</p> <a href="user_logout.php?user_logout" >ログアウト</a> </div> </div> <div class="main"> <div class="container" > <div class="row"> <div class="col-xs-12" > <?php if ( $all['total'] > 0 ) : ?> <p class="alert alert-success" >登録店舗数<?= number_format($all['total']) ?>件</p> <table class="table table-striped"> <thead> <tr> <th>店舗名</th> <th>入店可否</th> </tr> </thead> <tbody> <?php foreach($shop_result as $key => $value) : ?> <tr> <td><a href="user_shopinfo.php?shop_id=<?= $value['shop_id'] ?>"><?php echo $value['shop_name'] ?></a></td> <td><?php $pt = htmlspecialchars($value['yesno']); $col = [1 => "black",2 => "red"]; $tx = [1 => "〇",2 => "✖"]; echo "<font color='" .$col[$pt]."'>"; echo $tx[$pt]; echo "</font>"; ?></td> <?php endforeach; ?> </tbody> </table> <div class="paging"> <!-- ページネーション --> <?php if ( $p > 0 ) : ?> <a href="user_home.php?shop_id=<?= $value['shop_id'] ?>search=1&shop_name=<?= $shop_name ?>&yesno=<?= $yesno ?>&shop_id=<?= $shop_id ?>&p=<?= $p-1 ?>" class="pull-left">戻る</a> <?php else : ?> <span class="pull-left">最新</span> <?php endif; ?> <?php if ( $all['total'] - (PAGE_LIMIT * $p ) > PAGE_LIMIT ) : ?> <a href="user_home.php?shop_id=<?= $value['shop_id'] ?>search=1&shop_name=<?= $shop_name ?>&yesno=<?= $yesno ?>&shop_id=<?= $shop_id ?>&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> </div> </div>
</body> </html>

投稿2019/05/21 07:40

ariiiiiga

総合スコア66

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/21 08:36

解決済みはいいとして、あとから見たときにこの回答見て何のことかわかりますか?コードはマークダウンを利用し、「どうやって解決したか」経緯を具体的に記載してください。 https://teratail.com/help#resolve-myself https://teratail.com/help/question-tips#questionTips4-2 このような自己解決の手法を続けていると、あなたのことは誰もまともに取り合わなくなります。(これは何度も指摘している通り)
m.ts10806

2019/05/29 04:49 編集

あと「この人気に入らないから」で低評価はやめてくださいね。 回答内容のみで評価をお願いします。推奨されない評価の使い方です。 低評価するなら技術的観点で理由を述べてきちんと指摘してください。 できないなら質問しないでください。同じことを続けるようであれば通報します。
m.ts10806

2019/05/29 08:30 編集

↑通報しました。 書いたようにしか動かないプログラムをやっていくうえで 個人的な好き嫌いで評価をしたところで自身の技術者としての成長を自分で止めるだけで何の得もありません。
m.ts10806

2019/05/29 14:04

このコードはセキュリティ上考慮すべき最低の対応がごっそり抜けているので参考にすべきものではありません。 文句があるのでしたら私の回答にコメントつけてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問