| 
	
 | 
 Posted by malcolm on 03/01/06 00:01 
Please disregard this as I have the answer from Steve 
  SHOW TABLES LIKE  --  I hadn't tried LIKE 
 
On Tue, 28 Feb 2006 16:53:51 -0500, malcolm <malcolm@mbrownell.com> wrote: 
 
> 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] 
 |