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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2002閲覧

もっと見るボタンをつけたい

perican143

総合スコア15

PHP

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2018/12/20 06:50

編集2018/12/21 00:52

PHP初心者のため、PHPでデータを呼び起こしている場合のもっと見るボタンの設置の仕方がわかりません。

html

1<div class="inner"> 2<?php 3if(!empty($pageData->privilege_list)) { 4 foreach ($pageData->privilege_list as $v) { 5 6 for ($i = 0; $i < 9; $i++) { 7 if ($keyArray[$i] == $businessCodePrivilege) { 8 9 } 10 } 11// 当てはまらない場合 12 <?php 13 } 14 } else { 15 echo "<p>申し訳ございません。情報はありません。</p>"; 16 } 17?> 18 </div>

上記のようにリストを生成しております。
これを5件出してあとは非表示→もっと見るボタンで表示(できれば非表示もつけたい)
その場合はどのようにjqueryを設定すれば良いのでしょうか。
ご教授お願いいたします。

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

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

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

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

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

kei344

2018/12/20 06:56

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
perican143

2018/12/20 07:08

ありがとうございます。 調べながらですが、以下のコードを参考にしています。 const defaultDispCnt = 5; // 初期表示件数 const addDispCnt = 3; // 追加表示件数 (function ($) { $(function () { let maxDispCnt = 0; // 最大表示件数 let currentDispCnt = 0; // 現在の表示件数 let tileList = $('#tileList').children('li'); // 一覧のli子要素をすべて取得 // 一覧の初期表示 $(tileList).each(function (i, elem) { // 初期表示件数のみ表示 if (i < defaultDispCnt) { $(this).show(); currentDispCnt++; } maxDispCnt++; // もっと見るボタンを表示 let displayed = 0; if (maxDispCnt > currentDispCnt && !displayed) { $('.readMoreBtn').show(); displayed = 1; } }); // もっと見るボタンクリックイベント $('.readMoreBtn').click(function () { let newCount = currentDispCnt + addDispCnt; // 新しく表示する件数 // 新しく表示する件数のみ表示 $(tileList).each(function (i, elem) { if (currentDispCnt <= i && i < newCount) { $(this).show(); currentDispCnt++; } }); // もっと見るボタンを非表示 if (maxDispCnt <= newCount) { $(this).hide(); } return false; }); }); }(jQuery)); ただこちらは、HTMLで作られたコードを元に作っておりますが、 今回はPHPのデータリストを5件表示して、もっと見るボタンで3件ずつ表示していくので その部分がどのように設置していいか初心者のためわかりません。
kei344

2018/12/20 07:10

(質問文は編集できます)この「質問への追記・修正の依頼」の部分はデフォルトで表示されませんので、質問本文に追記することをお勧めします。
m.ts10806

2018/12/20 07:40

タグに「PHP」を追加しておいてください。
guest

回答1

0

ベストアンサー

サーバー側の処理に関しては2パターン考えられます

(1)すべてのデータを出力してしまってクライアント側のjsなどでデータを絞って表示する
(2)最低限のデータを出力し、クライアントからの追加表示の希望を受けられるようapiを用意しておく
クライアントからの要求はajaxで処理し、jsonかhtml形式で返すようにする

sample

  • 要jQuery

簡単なsampleだけ載せておきます。
もっと見るをクリックすると、残り全部を表示していますが
5件ずつ徐々に見えるようにする場合などなにか特別な仕様があるなら提示下さい

javascript

1<script> 2$(function(){ 3 $('.contents:gt(4)').hide(); 4 $('.contents:eq(4)').after($('<p>≫ もっと見る</p>').on('click',function(){ 5 $('.contents').show(); 6 $(this).remove(); 7 })); 8}); 9</script> 10<div id="inner"> 11<p class="contents">1</p> 12<p class="contents">2</p> 13<p class="contents">3</p> 14<p class="contents">4</p> 15<p class="contents">5</p> 16<p class="contents">6</p> 17<p class="contents">7</p> 18<p class="contents">8</p> 19<p class="contents">9</p> 20<p class="contents">10</p> 21<p class="contents">11</p> 22<p class="contents">12</p> 23<p class="contents">13</p> 24</div>

投稿2018/12/20 06:54

編集2018/12/20 09:26
yambejp

総合スコア117709

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

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

perican143

2018/12/20 07:09

ありがとうございます。 (1)すべてのデータを出力してしまってクライアント側のjsなどでデータを絞って表示する こちらで処理をしていきたいです。
yambejp

2018/12/20 07:11

そうなるとサーバー側はあまりやることはなく、とにかくデータを出力してしまえばおしまいです あとは絞り込みはjsのお仕事でしょう (章や段落など一定の範囲で非表示をすればよいかと)
perican143

2018/12/20 07:59

<script> $(function(){ $(".inner").each(function(){ $(this).find(".contents:gt(5)").each(function(){$(this).hide();}); $(this).append('<p>» もっと見る</p>'); $(this).find("p:last").click(function(){$(this).parent().find(".contents").show(400); $(this).remove();}); }); }); </script> 難しかったのでシンプルに変更しました。 それぞれの要素にcontentsというクラス名がついていたので 上記のように設置しましたが、全く反応しません。 根本的に間違っているのでしょうか。初心者ですみません
yambejp

2018/12/20 09:26 編集

せっかくなんで質問文に、想定されるhtml(中身はどうでもいいので構造がわかるもの)と jsのサンプルを上げておいて下さい 修正箇所をご指摘できるとおもいます (先行してsampleだけあげておきました)
perican143

2018/12/21 00:51

ありがとうございます。サンプルで無事設置することができました。
perican143

2018/12/21 01:38

リストが多くなった場合や、自分の勉強として5件ずつ徐々に見えるようにする場合にしたいのですが その場合はどの様に付け加えて行けばいいのでしょうか・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問