[Phpmyadmin-devel] Column reordering

Aris Feryanto aris_feryanto at yahoo.com
Wed Jun 15 02:39:28 CEST 2011



----- Original Message -----
> From: Marc Delisle <marc at infomarc.info>
> 
> Aris Feryanto a écrit :
>> 
>>  ----- Original Message -----
>>>  From: Marc Delisle <marc at infomarc.info>
>>> 
>>>  Marc Delisle a écrit :
>>>>    Aris Feryanto a écrit :
>>>> 
>>>>>    Hi,
>>>>> 
>>>>>    Just realized my previous email seem not delivered 
> successfully to
>>>>>    phpMyAdmin-devel list. I've previously sent an email 
> telling that I
>>>>>    will work on merging the tooltip as suggested by Rouslan. 
> I'm still
>>>>>    working and testing on this and will add the 'Click to 
> mark'.
>>>>> 
>>>>>    I am also fixing the previous code, as it hasn't checked 
> whether we
>>>>>    are under Browse tab, before calling the column-order 
> remembering
>>>>>    function.
>>>>> 
>>>>>    I wonder if there is any existing exact way to check if we 
> are under
>>>>>    Browse tab? Current code do the checking using requested url 
> pattern
>>>>>    and analyzed SQL query (you may see function PMA_isBrowsing 
> in file
>>>>>    libraries/display_tbl.lib.php in my git repo). But, this is 
> not
>>>>>    enough for handling load from AJAX request under other tabs 
> (e.g.
>>>>>    AJAX request to sql.php caused by pagination of results under 
> SQL
>>>>>    tab)
>>>>    Yes, this is difficult to solve with current code; maybe it's 
> time for 
>>>  a
>>>>    new tbl_browse.php that could set some constant, then require 
> sql.php.
>>>>    Further down the code, either the constant is checked directly or 
> is
>>>>    used to generate a hidden span with some id that can be checked 
> at the
>>>>    js level.
>>>> 
>>>> 
>>>  By the way, I'm not sure why you strictly want to do some 
> verifications
>>>  while under the Browse tab. Some actions, for example Search, will
>>>  generate results in which in a user might want to reorder the columns.
>> 
>> 
>>  Hi Marc,
>> 
>>  You are right. User may want to reorder columns in Search tab.
>> 
>>  I found a way to make PMA_isBrowsing() better, IMO. I add some rule so that 
> it will return true on any SQL expression in the form of "SELECT * FROM 
> <a table> WHERE ...". Not depending on whether we are under 
> "Browse" tab anymore. I've updated this in my git. The complete 
> function:
>> 
>>  ===========================
>>  function PMA_isBrowsing()
>>  {
>>      // global variables set from sql.php
>>      global $is_count, $is_export, $is_func, $is_analyse;
>>      global $analyzed_sql;
>> 
>>      return ! ($is_count || $is_export || $is_func || $is_analyse)
>>          && count($analyzed_sql[0]['select_expr']) == 0
>>          && 
> isset($analyzed_sql[0]['queryflags']['select_from'])
>>          && count($analyzed_sql[0]['table_ref']) == 1;
>>  }
>>  ===========================
>> 
>>  I've do some test and it is working good so far. Please kindly check 
> this and let me know what do you think about this.
> 
> Aris,
> Looks fine but I suggest naming this PMA_isSelect() and changing the 
> function's comment.
> 


Hi Marc,

I've changed the function name and comments.
> Two other things.
> 
> 1. I get a notice when browsing sakila.actor. I'm not sure when this 
> notice started to show but here it is:
> 
> Notice in ./libraries/display_tbl.lib.php#492
> Undefined index: 14b4d4f7c160f209e980cfb221bb3117
> 
> Backtrace
> 
> ./libraries/display_tbl.lib.php#2255: PMA_displayTableHeaders(
> array,
> array,
> integer 4,
> array,
> string `actor`.`first_name` DESC,
> string `actor`.`first_name`,
> string DESC,
> )
> ./sql.php#925: PMA_displayTable(
> object,
> string urdr111111,
> array,
> )
> 


The first issue above also fixed. It was caused by "Remember sorting" feature. Previously, I changed the $sql_query directly to get the ORDER BY syntax printed. I've changed the code to follow same logic as appending LIMIT to fix this issue. Changes can be found under "tablesort" branch in my git.

> 2. "Restore column order" is not persistent. After restoring and 
> clicking anything (next, end, Browse), the modified column order comes back.
>

Odd, the restore column order always work for me. Could you give details of the scenario? Maybe it caused by some delay in the connection, so the AJAX request to restore the column order has not sent successfully before you clicked next, end, or Browse.


--
Aris Feryanto





More information about the Developers mailing list