Package: phpmyadmin Version: 4:3.4.11.1-2 Severity: wishlist Tags: upstream
A query generally results in a number of rows which don't fit in a single page (maximum 30 rows by default). Often the user will browse through the result set. phpMyAdmin allows this with a menu at the top of the page which allows to select the results page desired, or to request a custom range ("Show:). Sometimes, another element offering a preset range appears ("Show all"). This button never showed by default, but following, #658402, it does for tables of less than 150 rows (by default). The reason why it doesn't show for larger tables is to avoid performance issues with users requesting huge resultsets. This ticket asks to go further and to show "Show all" by default regardless of the number of rows in the table, to adress 2 issues: 1. Showing Show all only in some cases will confuse new users. 2. It is often desirable to show more than 150 rows, and very often reasonable in terms of performance. Issue 1 is about consistency. Here are some excerpts from user interface guides:
To give users a conceptual sense of stability, the interface provides a clear, finite set of objects and a set of actions to perform on those objects. For example, when a menu command doesn't apply to a selected object or to the object in its current state, the command is dimmed rather than omitted.
https://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/HIPrinciples/HIPrinciples.html#//apple_ref/doc/uid/TP30000353-TP6
* *Reconsider disabled controls.* Disabled controls can be hard to use because users literally have to deduce why they are disabled. Disable a control when users expect it to apply and they can easily deduce why the control is disabled. Remove the control when there is no way for users to enable it or they don't expect it to apply, or leave it enabled, but provide an error message when it is used incorrectly. o *Tip:* If you aren't sure whether you should disable a control or provide an error message, start by composing the error message that you might provide. If the error message contains helpful information that target users aren't likely to quickly deduce, leave the control enabled and provide the error. Otherwise, disable the control.
http://msdn.microsoft.com/en-us/library/aa511331.aspx#controls Regarding issue 2, I was able to list over 250 rows from a table in less than 5 seconds, with an average server. Even Wikipedia, which goes through the Internet, offers to display 500 edits at a time in page histories. 2 options exist: * Always allow using Show all * Always display Show all, but disable it with an explanatory tooltip if the total number of rows is deemed excessive Both of these options would address issue 1. The second option would be safer, preventing slow requests. But the first option would address issue 2 and could also be made equally safe by adding a popup requesting confirmation beyond a certain number of rows (for example, 150). Even though I'm suggesting to use Show all, what I ultimately want is just to optimize showing more rows. I would probably not use Show all on a 10000+ records table. There are other ways to optimize this case, like quick tools to show 5 or 10 times more rows. Dynamically fetching more rows when one reaches the last - like Sybase's Interactive SQL does - would be another interesting approach. This ticket ended up overlapping way too much with a ticket I filed upstream which also requests request optimizations for table browsing: https://sourceforge.net/p/phpmyadmin/feature-requests/1434/