|  | Posted by malcolm on 02/28/06 23:53 
On Mon, 27 Feb 2006 19:49:28 -0500, J.O. Aho <user@example.net> wrote:
 > malcolm wrote:
 >> On Mon, 27 Feb 2006 17:29:51 -0500, J.O. Aho <user@example.net> wrote:
 >>
 >>> malcolm wrote:
 >>>>   Hello All,
 >>>>    On my rented space I have only one database.  I have a few users
 >>>> at my site
 >>>> and any mysql tables I made for them have their initials as a
 >>>> prefix    i.e.
 >>>>   aa_phonelist, aa_addresses, aa_otherjunk
 >>>>   bb_phonelist, bb_addresses, bb_otherjunk
 >>>>  I want to make a drop down selection for the tables so that each can
 >>>> see his/her tables
 >>>> but ONLY theirs.  What I really want is a query like 'Show tables
 >>>> where prefix like aa_'
 >>>> and send the results to the drop down.   Obviously that won't work
 >>>> but I have wracked my
 >>>> small brain for quite some time now and can't seem to find something
 >>>> that will work.
 >>>> I have tried to use the show table results with things like in_array
 >>>> but I just can't
 >>>> make it work.  This is on a logged-in page so I know the prefix but I
 >>>> can't seem to limit
 >>>> show tables at all and I can't find a way to strip out the other
 >>>> prefixes from the resulting
 >>>> array. Not zillions but quite a few tables and new ones all the time,
 >>>> so this needs to be
 >>>> dynamic.
 >>>
 >>> Look at the mysql_list_tables() function, if you aren't using mysql on
 >>> the host, then it will be more tricky. If you use the function, then
 >>> you will need to filter the result when you got it to PHP, while the
 >>> alternative options could work with WHERE statements.
 >>>
 >>> http://www.php.net/manual/en/function.mysql-list-tables.php
 >>>
 >>>
 >>>   //Aho
 >>   Thanks Aho but I'm able to list the tables ok and do the drop down but
 >> I can't figure how to filter the array returned by the 'show tables'
 >> query.
 >> That function does the same but I don't see any way there to filter the
 >> result.  I'm looking at array_clean now, thanks for reply.
 >
 > If you save the results from the "query" into an array, you can use
 > array_filter()
 >
 > http://www.php.net/manual/en/function.array-filter.php
 >
 > and a function that returns true if the initials of a string is the same
 > as for the user, something like this may work:
 >
 > //we assume that $initials contains the initials of the user
 >
 > function is_user($var) {
 >    global $initials;
 >    if(substr($var, 0, 2)==$initials) {
 > 	return true;
 >    }
 >    return false;
 > }
 >
 > //$table_array is a array with all the tables
 > $user_tables=array_filter($table_array, "is_user"));
 >
 > //$user_tables should only contain tables with the same initials as the
 > users
 >
 >
 > or you can do a loop where you check which tables are okey to list and
 > at the same time type out the options.
 >
 > for($i=0;$i<count($table_array);$i++) {
 >    if(substr($table_array[$i], 0, 2)==$initials) {
 >       echo "<option>".$table_array[$i]."</option>\n";
 >    }
 > }
 >
 >
 >
 >   //Aho
 
 
 Thank you again Aho but I can't seem to get anything out of your code.
 I have tried all the things I can think of but I get no output.  No errors
 and if I print_r the table_array I can see the array but if I run this code
 no matter the initials I use, I get no output.  Still working, thanks
 again.
 [Back to original message] |