Re: Dynamic field names in recordset [message #169690 is a reply to message #169685] |
Wed, 22 September 2010 22:31 |
Pedro M. Leite
Messages: 5 Registered: September 2010
Karma:
|
Junior Member |
|
|
On 22-09-2010 21:14, Robert Hairgrove wrote:
> Pedro M. Leite wrote:
>>
>> On 09/22/2010 06:13 PM, Jerry Stuckle wrote:
>>> On 9/22/2010 9:01 AM, Pedro M. Leite wrote:
>>>> good afternoon
>>>>
>>>> sorry if i not make my self clear
>>>> current situation
>>>> one table with 50 fields - appx
>>>> id - name - entrydate - remarks - width .... locked
>>>> one page with :
>>>> select from table where id = " - from $_GET
>>>> read the recordset and output pdf
>>>> rst_table['id']
>>>> rst_table['name']
>>>> rst_table['entrydate']
>>>> ....
>>>> rst_table['locked']
>>>>
>>>> 50 something times repeated
>>>>
>>>> now, i want to have a table with
>>>> fieldname
>>>> position
>>>> so that i can :
>>>> open a recordset from table with one row
>>>> browse the position table, ordered by index, from 1 to 50 something
>>>> in the loop, make
>>>> (pseudocode) echo_to_pdf rst_table(position_table(fieldname))
>>>> loop
>>>>
>>>> so that, to rst_table, the field i want is passed bu the content of the
>>>> position_table field content, instead of literally :
>>>> 'position_table(fieldname)'
>>>>
>>>> simple example
>>>>
>>>> main table
>>>> id
>>>> name
>>>> remarks
>>>>
>>>> position table
>>>> id,1
>>>> name,2
>>>> remarks,3
>>>>
>>>> so the output is : id - name - remarks
>>>>
>>>> OR
>>>>
>>>> position table
>>>> id,1
>>>> name,3
>>>> remarks,2
>>>>
>>>> so the output is : id - remarks - name
>>>>
>>>> s, what i am looking to do is to reference the field by another
>>>> reference and not literally
>>>>
>>>> thank you in advance
>>>> Pedro Leite
>>> What you need to do is join the tables and order by the position. For
>>> more information, please follow up in comp.databases.mysql. They will
>>> want the output of your CREATE TABLE statements and some sample data
>>> plus exactly what you want output.
>>>
>>
>> thanks, but that's not quite it
>> my question is :
>> <short version>
>>
>> this is correct in php
>> --> $row_customers['id'];
>>
>> being 'id' the name of the field
>>
>> question
>> --> can this be done ??
>> ---> $row_customers[$a_variable_that_contains_'id'_or_something_else]
>>
>> the $a_variable .. is collected from another recordset that contains
>> field names and their position, ordered by position
>>
>> thank you and sorry for not making myself clear
>>
>> Best Regards
>> PLeite
>
> This is possible. The trick is that the array representing one row which
> is returned by the PHP mysql_fetch_array() function can be treated
> either as an associative array or as a numerically indexed array.
>
> For example, since you mention the scenario of a user setting up their
> own preferred order in the application -- presumably using JavaScript
> code or something else running on the client -- when you send off the
> form data, presumably using a POST request, send along the array sort
> order values as a strings (use implode() with an appropriate delimiter
> and explode() them again in the page evaluating the form data). Then you
> could fetch your row, i.e.:
>
> // $aOrder[] contains the order of your fields...
> // for example:
> $aOrder['a'] = 1;
> $aOrder['b'] = 2;
> $aOrder['c'] = 0;
> // ...
> $sql1 = "SELECT a,b,c FROM the_table";
> $res = mysql_connect(...etc. ...);
> if ($res && ($q = mysql_query($sql, $res)) {
> while ($row = mysql_fetch_array($q)) {
> foreach ($aOrder as $o) {
> $val[] = $row[$o];
> }
> // display the row data in $val[]...
> } // fetch the next row
> }
>
> Of course, this is just one way of doing it. You could store the
> ordering data in the database, but I would at least keep it independent
> of the other data.
thats about it
i plan to store in a table : id, user, field, position
so, each user can have its preferences.
that catch is, to fill for each user, once, the table with all the
fields, and position { 1.. 50 something }
there will be a page with the sorted list and up and down arrows,
linking to a process page, that receives field id and delta ( +1 or -1 )
and returns to the page.
i think i got the idea.
thank you all
Pedro Leite
|
|
|