| 
	
 | 
 Posted by J.O. Aho on 02/28/06 02:49 
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
 
  
Navigation:
[Reply to this message] 
 |