"Olinux" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> Simplified: I have a tabble of users with an AUTHORIZE field
> [type ENUM - Yes or No]. They sign up and once I authorize
> them. I pull up all of the records and display them something
> like this:

=========== authorize.php =============
<?php

// log into database, etc

$query = "SELECT id, username, authorized FROM "
    ."users ORDER BY signupdate DESC";
$result = mysql_query($query);

echo "\n<form method='post' action='updater.php'>";

while ($row = mysql_fetch_array($result)) {
    echo
        "\n\t<br>"
        .$row[username]
        ." - Authorize - "
        ."<input "
            ."type='radio' "
            ."name='authorize[{$row[id]}]' "
            ."value='Y' "
            .($row[authorized] == 'Y' : "checked" : "")
            .">"
        ."Yes "
        ."<input "
            ."type='radio' "
            ."name='authorize[{$row[id]}]' "
            ."value='N' "
            .($row[authorized] == 'N' : "checked" : "")
            .">"
        ."No"
        ."<input type='hidden' name='oldauthorize[{$row[id]}]' "
            ."value='{$row[authorized]}'>"
    ;
}

echo "\n</form>";
?>
=========== end =============


> This works EXCEPT only the last field displays a checked radio button
> [because the names are all the same.

Voila - HTML is happy because the names are different, and PHP
will automatically parse the returned data into an array so it's easy to
work with.

I use an id field - presumable an integer number - so we don't run into
odd characters like ']\?*% that could screw things up; you could use
addslashes on $row[username] if you prefer.


> After this I need to be able to SUBMIT the info to UPDATE the table.
>
> I understand that I will have to execute a number of update statements ...
> But how can I create these statements that tie the correct username and
> AUTHORIZE value together?

Note the final hidden field, containing the original state; this makes
it easy to check whether the value has changed and only update
it if needed:

=========== updater.php ==========
<?php

// log into database, etc

foreach($authorize as $id => $state) {
    if ($state != $oldauthorize[$id]) {
        $query = "UPDATE users (authorized) "
            ."VALUES ('{$state}') WHERE id = $id";
        $result = mysql_query($query);
        // should check $result, make sure the update was successful
    }
}

?>
=========== end ===============

If you felt ambitious, you could parse the data into just two
queries - one for authorized='Y' and one for authorized='N',
using "... WHERE id IN ( id1, id2, id3... inN )".



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to