0

誰かが尋ねる前に; 私は自分の「質問」をグーグルで検索しました。「すでに回答がある可能性のある質問」も調べましたが、どれも機能しません。

私がやりたいのは「ページネーション」です。しかし、データベースを使用する必要がなかったので、データベースを使用したくありません。また、XML が必要なすべてのことを行うので、あきらめずにデータベースにアクセスしたいと思います。

私が持っているコードは次のとおりです。

$files = glob('include/articles/*.xml');
    foreach($files as $file){
        $xml = new SimpleXMLElement($file, 0, true);
}

私はすでにこれらのものを試しました: PHPを使用した XMLページネーション、PHP XML ページネーション、およびページネーション フィルター処理された XML ファイルで、何も達成していません。また、多くの Javascript の「ページネーション」スクリプトを試しましたが、まだ何も試していません。

要約すると、4 つの記事 (さらに追加する必要があります) があり、ページごとに 2 つの記事を表示したいと考えています。次の情報は xml ファイルから「プル」されます: ID、TITLE、CONTENT、PICTURE、AUTHOR、DATE は、$xml->id を実行することにより、残りの情報についても同様です。これを行う方法を知っている人はいますか?過去 4 時間 (GMT の午前 4 時 4 分) を費やしましたが、まだ機能するものは何も見つかりませんでした。(うまくいくものを見つけたら、これについても助けが必要な人が他にいる場合に備えて、動作するコードで質問を更新するようにします。)

4

1 に答える 1

0

まず、記事を表示する場所を定義しorderます。つまり、どの記事が 1 ページに、どの記事が 2 ページに、などです。これは重要です。なぜなら、それorderがページネーション アルゴリズムのベースになるからです。glob()は特定の順序で結果を返すことが保証されていないことに注意してください。つまり、順序はスクリプトの呼び出しごとに変わる可能性があります (特に、新しい記事を追加する場合)。ほとんどの場合、必要な順序ではありません。

次に、2 番目のステップは、実際のページ ( number) を示す URL の一部である別の変数を導入することです。URL クエリ文字列は、この情報を入力するための自然な選択であるため、URL は次のようになりますarticle.php?page=1。PHP 側では、$_GETスーパーグローバルを使用してクエリ文字列パラメーターを取得できます。

article.php第 3 に、スクリプトにリンクするときは常に新しいスタイルの URL を使用してください。さらに、入力を検証します。特に、このパラメーターに基づいて現在のページも表示する必要がある場合 (そうしないと、インジェクションの脆弱性が発生します)。これは、デフォルト値が必要であることも意味します(値が無効/間違っている/または何らかの理由でまったく提供されていない場合)。

order最後に、ページに関する記事とページ番号の 2 つの重要な情報に基づいて記事をフィルタリングしますnumber。つまり、現在のページに表示される実際の記事を計算します。

于 2013-08-12T03:18:28.607 に答える