| 
	
 | 
 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.
 
  
Navigation:
[Reply to this message] 
 |