2012-01-09 6 views
0

私の質問の短い形式を思いつくのはむしろ難しいので、私には負担してください。指定された行がページネーションを使用して非表示になっている場合、次の行をフェッチする方法は?

jQueryとAJAXを使用して、私はすべての投稿をインデックスデータベースに保存しています。各投稿にはボタンがあり、ユーザーはその投稿のDIVを非表示にすることができます。

ここでは、10個の結果しか表示せず、残りのページを改行するようにしたいと思います。そこにたくさんのページ設定プラグインがあることを知っていますが、ユーザーがすでに表示されている10の投稿の1つを非表示にすると、次の投稿は表示されません。

1ページ目の投稿1〜10(2ページ目の投稿11〜20)とユーザーが投稿8を非表示にすると、投稿1,2,3,4,5,6,7,9、 1ページの10,11ページと2ページのポスト12-21など。

質問:どうしたらいいですか?ここで私は(ページ+非表示ボタンのトグル上のデータベースからの投稿、表示の記事をフェッチ)今持っているものです。

// Javascript 

$(document).ready(function() { 
$(document).on("click", ".hide", function(){ 
    postID = $(this).attr('id').replace('hide_', ''); 

    $('#post-' + postID).toggle(); 

    return false; 
}); 
}); 


// PHP 

<?php 
$pageposts = $wpdb->get_results($wpdb->prepare("SELECT * FROM $wpdb->posts"), OBJECT); 
?> 
<?php if ($pageposts): ?> 

<?php global $post; ?> 

<?php foreach ($pageposts as $post): ?> 
<?php setup_postdata($post); ?> 
     <div id="buttons_<?php the_ID(); ?>"> 
      <div id="hide_<?php the_ID(); ?>" class="hide" style="position:absolute; right: 2.5em;"> 
       <a id="hidebtn_<?php the_ID(); ?>" href="#"><span></span></a> 
      </div> 
     </div> 

     <div id="post-<?php the_ID(); ?>"> 
      /* display post content */ 
     </div> 

<?php endforeach; ?> 

<?php endif; ?> 
+0

あなたの問題はMySQLを使用して解決する必要があります:ユーザが隠していないものだけをリストするようにSQLを修正してください。結果は簡単に –

+0

になりますが、これは非効率です。私がすでにすべての投稿を表示しているときに投稿が非表示になるたびにクエリを起動するのはなぜですか? – Sweepster

+0

申し訳ありませんが、私は質問が呼び出されるはずですが、フランシスの答えはあなたにヒントを与える必要があります誤解している必要があります:) –

答えて

0

MAX IDを格納するだろうつかむために、次のIDになるかを把握するための簡単な方法あなたのページに1〜10が表示された場合、MAX idとして10が格納されます。 ユーザーが投稿を非表示にすると、mysqlクエリは1つの結果を取得します。ここで、id>は保存された最大IDです。

+0

あまり単純ではありません。投稿は、WordPressデータベースにあります。ポスト1-10は必ずしもID 1-10である必要はありません。彼らはID 1,5,20,23,24,25,80である可能性があります...私は私のクエリを簡略化しました...特定のカテゴリの投稿のみを選択するWHERE句があります。表示された最後の投稿のIDを保存しても、次の投稿がどのIDを持つかを予測する方法はありません。すべてのことが言われている、データベースの次の行を見つけることは問題ではありません:1ページ目の最初の結果をページ1の最後に引っ張りながら、ページネーションをリセットすることが大きな問題です。 – Sweepster

+1

次のIDを予測する必要はありません。 1、5、20、23、24、25、80;最大IDとして80を格納し、クエリはWHERE id> 80になります。 結果がid以外の順序で並べられている場合は、代わりにその値を格納します。 –

+0

yup私は@Francisに同意します。あなたが新しい投稿を取得したら、そのmaxIDを更新するのを忘れないでください。 –

関連する問題