I found these previous threads useful, but it doesn't quite solve my problem:
http://forums.postnu…ht=form+multiselect
and:
http://forums.postnu…e=viewtopic&t=14531
I'm dealing with 3 functions.
1. name_user_view - which contains the form.
2. name_user_add - which gets accepts the data from the form and passes it to the API function
3. name_userapi_add - which inserts the checkbox data into the form.
function 1 contains the following relevant pieces:
Code
$output->FormStart(pnModURL('Salesrank', 'user', 'watchlistadd'));
$output->FormHidden('authid', pnSecGenAuthKey());
$output->FormHidden('userid', pnUserGetVar('uid'));
..........
$output->SetOutputMode(_PNH_RETURNOUTPUT);
$columns = array();
$columns[] = $output->FormCheckbox('prodid', false, $item['data']);
$columns[] = $output->Text($item['mfg']);
.......
$output->TableEnd();
$output->FormSubmit(_SALESRANKBUTTONADD);
$output->FormEnd();
........
$output->FormHidden('authid', pnSecGenAuthKey());
$output->FormHidden('userid', pnUserGetVar('uid'));
..........
$output->SetOutputMode(_PNH_RETURNOUTPUT);
$columns = array();
$columns[] = $output->FormCheckbox('prodid', false, $item['data']);
$columns[] = $output->Text($item['mfg']);
.......
$output->TableEnd();
$output->FormSubmit(_SALESRANKBUTTONADD);
$output->FormEnd();
........
Function 2 looks like this:
Code
function salesrank_user_watchlistadd($args)
{
// Get parameters. It seems to me I need an array here...
list($userid,
$prodids) = pnVarCleanFromInput('userid',
'prodid'));
extract($args);
......
// Load API.
if (!pnModAPILoad('SalesRank', 'user')) {
pnSessionSetVar('errormsg', _LOADFAILED);
return $output->GetOutput();
}
// The API function is called.
$wlid = pnModAPIFunc('SalesRank',
'user',
'watchlistadd',
array('userid' => $userid,
'prodids' => $prodids));
........
{
// Get parameters. It seems to me I need an array here...
list($userid,
$prodids) = pnVarCleanFromInput('userid',
'prodid'));
extract($args);
......
// Load API.
if (!pnModAPILoad('SalesRank', 'user')) {
pnSessionSetVar('errormsg', _LOADFAILED);
return $output->GetOutput();
}
// The API function is called.
$wlid = pnModAPIFunc('SalesRank',
'user',
'watchlistadd',
array('userid' => $userid,
'prodids' => $prodids));
........
Function 3 in userapi looks like this:
Code
function salesrank_userapi_watchlistadd($args)
{
// Get arguments from argument array
extract($args);
foreach ($prodids as $prodid) {
......
// Get datbase setup
list($dbconn) = pnDBGetConn();
$pntable = pnDBGetTables();
$watchlisttable = $pntable['salesrank_watchlist'];
$watchlistcolumn = &$pntable['salesrank_watchlist_column'];
// Get next ID in table
$nextId = $dbconn->GenId($watchlisttable);
// Add item
$sql = "INSERT INTO $watchlisttable (
$watchlistcolumn[wlid],
$watchlistcolumn[userid],
$watchlistcolumn[prodid],
$watchlistcolumn[wstatus],
$watchlistcolumn[wdatestamp])
VALUES (
$nextId,
" . pnVarPrepForStore($userid) . ",
" . pnvarPrepForStore($prodid) . ",
'A',
" . $dbconn->DBTimestamp(time()) . ")";
// echo "sql --->" . $sql;
$dbconn->Execute($sql);
.......
{
// Get arguments from argument array
extract($args);
foreach ($prodids as $prodid) {
......
// Get datbase setup
list($dbconn) = pnDBGetConn();
$pntable = pnDBGetTables();
$watchlisttable = $pntable['salesrank_watchlist'];
$watchlistcolumn = &$pntable['salesrank_watchlist_column'];
// Get next ID in table
$nextId = $dbconn->GenId($watchlisttable);
// Add item
$sql = "INSERT INTO $watchlisttable (
$watchlistcolumn[wlid],
$watchlistcolumn[userid],
$watchlistcolumn[prodid],
$watchlistcolumn[wstatus],
$watchlistcolumn[wdatestamp])
VALUES (
$nextId,
" . pnVarPrepForStore($userid) . ",
" . pnvarPrepForStore($prodid) . ",
'A',
" . $dbconn->DBTimestamp(time()) . ")";
// echo "sql --->" . $sql;
$dbconn->Execute($sql);
.......
I get an
Quote
Invalid argument supplied for foreach()
I can't figure out how to pass and accept checkbox array data. Your suggestions and pointers would be appreciated.
Your help is very much appreciated.
Steve
