Could you post some example code if you get the chance Jeffrey?

Jeffrey Kretz wrote:
> 
> 
> I solved this for my own project in this way:
> 
> 1.  Server-side code renders the first page of the grid, also passing a
> value of total results.
> 2.  If the total results are few enough (season to taste), fire an ajax
> call
> that immediately loads the entire result set into memory.
> 3.  As the user re-sorts the results, re-sort in memory and display the
> correctly sorted/paged results.
> 4.  If the total results are too large to make this feasible, do an ajax
> call for each paged/sorted result set.
> 
> JK
> 
> -----Original Message-----
> From: jquery-en@googlegroups.com [mailto:jquery...@googlegroups.com] On
> Behalf Of ripcurlksm
> Sent: Tuesday, January 06, 2009 6:48 PM
> To: jquery-en@googlegroups.com
> Subject: [jQuery] In a pickle -- JavaScript Pagination vs. PHP/MySQL
> Pagination
> 
> 
> 
> <--- here is a picture of me
> 
> 
> I have a jQuery sortable table with jQuery pagination, which is being fed
> from PHP/MySQL-- and now that I have it setup, I am in a pickle. It
> appears
> I can only have cake or eat it. I want a table that loads fast from MySQL,
> that I can paginate (for performance) AND i can sort, however when you
> break
> the SQL rows returned, you can only sort the table based on the limited
> results (ie- sorting a table based on 40 returned results, instead of
> sorting based on the 800 total rows that the query yields)
> 
> [B]Javascript Pro:[/B] Sexy sortable tables & pagination
> [B]Javascript Con:[/B] Must load entire MySQL result to allow proper
> sorting, however the database query is taking ~12 seconds to load
> 
> To demonstrate, take a set of results broken up on two pages.
> 1
> 2
> 3
> ---new page---
> 4
> 5
> 6
> 
> My problem is that when I sort this column (highest to lowest), it only
> sorts whats loaded (in this case 3 rows):
> 3
> 2
> 1
> 
> When I want this:
> 6
> 5
> 4
> 
> Possible solutions:
> 1) Static Output -- Everything is working fine, except for my 12 second
> wait
> for my table to load from MySQL. So I could create a hack to load a static
> HTML file instead of querying the database. The issue I see with this, is
> when a user does complex searches, I will have to output multiple static
> files.
> 
> 2) Ajax-ish output -- I have the tablesorter and pagination currently
> loading from an "Ajax-ish" file, which does the SQL query, handles the
> MySQL
> offset and returns the proper rows to the page without doing a refresh.
> Now,
> if there is some way to modify this ajax script, so that it can also ORDER
> BY the SQL query (in addition to its current offset function), however
> there
> would need to be some sort of callback when a column header is clicked in
> the javascript, to the ajax script, to add the ORDER BY clause and return
> the results... eh.
> 
> So Im in a pickle, keep in mind I have everything working, sortable table,
> pagination, but my 800 row query is jsut taking too long to load (its
> joining several other tables as it loads.)
> 
> Here is my current code to contain the table results, and ajax file to
> load
> the SQL and dynamically handle the results without needing a page refresh.
> 
> results.php
> <?php
> include('include/scripts.inc.php');
> include('conn/conn.inc.php');
> 
>       dbConnect();
>       $sql = 'SELECT COUNT(*) FROM company';
>       $res = mysql_query($sql);
>       $total = mysql_result( $res, 0 );
> 
> ?>
> <html>
> <head>
>     <script type="text/javascript"
> src="include/jquery-latest.js"></script>
>     <script type="text/javascript"
> src="include/tablesorter/addons/pagination/jquery.pagination.js"></script>
>    
> 
>    
>     <script type="text/javascript">
>       function pageselectCallback(page_id, jq){
>           var first = (page_id*10)+1, second = (page_id*10)+40;
>           $('#Searchresult').text("Showing search results " + first + '-'
> +
> second);
>           $.ajax({
>               type:'GET',
>               url:'test-ajax.php',
>               data:'offset=' + first + '&limit=40',
>               success:function(msg) {
>                   $('#ajaxContent').html(msg);
>               }
>           });
>       }
>       $(document).ready(function(){
>           $("#pagination").pagination( <?php echo $total;?>, { 
>               num_edge_entries: 2,
>               num_display_entries: 8,
>               callback: pageselectCallback 
>           });
> 
>           pageselectCallback(0);
>       });
>     </script>
>     <title>database</title>
> </head>
> <body>
>     <div class="pagination" id="pagination"></div><br clear="all"/>
>     <div id="Searchresult"></div><br />
>     <div id="ajaxContent"></div>
>     
> </body>
> </html>
> 
> test-ajax.php (to load the next page of MySQL results)
> <?php
>     $offset = $_GET['offset'];
>     $limit = $_GET['limit'];
>     $conn = mysql_connect( 'localhost', 'root', 'mypass');
>     if ( is_resource( $conn ) ) {
>       if ( !mysql_select_db('foo', $conn) ) {
>           echo '<p>Can not select db.</p>';
>       }
>       $result = mysql_query('SELECT * from company LIMIT ' . $offset . ','
> .
> $limit);
>       if ( is_resource( $result ) ) {
>           while ( $row = mysql_fetch_assoc( $result ) ) {
>               echo $row['story'];
>           }
>       }
> 
>     }
> ?>
> 
> 
> Any thoughts on how to allow sorting of tables with pagination and not
> make
> the user wait 12 seconds to view the content?
> -- 
> View this message in context:
> http://www.nabble.com/In-a-pickle----JavaScript-Pagination-vs.-PHP-MySQL-Pag
> ination-tp21323852s27240p21323852.html
> Sent from the jQuery General Discussion mailing list archive at
> Nabble.com.
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/In-a-pickle----JavaScript-Pagination-vs.-PHP-MySQL-Pagination-tp21323852s27240p21348272.html
Sent from the jQuery General Discussion mailing list archive at Nabble.com.

Reply via email to