Bitrix Site Manager

CFormResult::Update

CFormResult::Update(
 int WEB_FORM_ID,
 array arrVALUES=false,
 char(1) UPDATE_ADDITIONAL="N"
);

The method updates an existing result in the database.

Parameters

ParameterDescription
WEB_FORM_ID Form ID.
arVALUES Array of input values. In this parameter is false or not specified, it is taken from the array stored in $HTTP_POST_VARS. If $HTTP_POST_VARS is empty, it is taken from the array $HTTP_GET_VARS.
UPDATE_ADDITIONAL If set to "Y", the method updates both questions and fields. Otherwise, questions only are affected.

Example

The following is an example of array $HTTP_POST_VARS passed to arrVALUES.


Array
(
    [form_text_586] => John Smith
    [form_date_587] => 10.03.1992
    [form_textarea_588] => London
    [form_radio_VS_MARRIED] => 589
    [form_checkbox_VS_INTEREST] => Array
        (
            [0] => 592
            [1] => 593
            [2] => 594
        )

    [form_dropdown_VS_AGE] => 597
    [form_multiselect_VS_EDUCATION] => Array
        (
            [0] => 603
            [1] => 604
        )

    [form_text_606] => 2345
    [form_image_607] => 1045
)

The below example shows the sample file "form_edit.php" allowing to edit the result.


<?
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/include.php");
include(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/form/admin/lang/", 
                        "/form_result_edit.php"));
$RESULT_ID = intval($RESULT_ID);
$z = CFormResult::GetByID($RESULT_ID);
if (!($arrResult=$z->Fetch())) 
{
    require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
    echo ShowError("Survey form not found");
    require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php");
    die();
}
$WEB_FORM_ID = intval($arrResult["FORM_ID"]);
$F_RIGHT = intval(CForm::GetPermission($WEB_FORM_ID));

/*
Y - allow to edit the form fields
N - do not allow to edit the form fields
*/
$EDIT_ADDITIONAL = "N";

if ($F_RIGHT>=25 || ($F_RIGHT>=15 && $USER->GetID()==$arrResult["USER_ID"])) :

    // "Save results" clicked
    if ($REQUEST_METHOD=="POST" && 
             intval($WEB_FORM_ID)>0 && 
             (strlen($web_form_submit)>0 || strlen($apply)>0))
    {
        // obtain the form data array
        $arrVALUES = $HTTP_POST_VARS; 
        $error = CForm::Check($WEB_FORM_ID, $arrVALUES, $RESULT_ID);
        if (strlen($error)<=0) 
        {
            CFormResult::Update($RESULT_ID, $arrVALUES, $EDIT_ADDITIONAL);
            $arr = CFormResult::GetDataByID($RESULT_ID, array("VS_PHOTO"));
            $PHOTO_EXIST = (intval($arr["VS_PHOTO"][0]["USER_FILE_ID"])>0) ? "Y" : "N";
            CFormResult::SetField($RESULT_ID, "VS_PHOTO_EXIST", $PHOTO_EXIST);
            if (strlen($web_form_submit)>0)
                LocalRedirect("index.php?WEB_FORM_NAME=".$arrResult["VARNAME"]);
        }
        else $strError .= $error;
    }
    else 
    // obtain the data array from the database
        $arrVALUES = CFormResult::GetDataByIDForWeb($RESULT_ID,$EDIT_ADDITIONAL); 
endif;

$title = str_replace("#RESULT_ID#","$RESULT_ID","Editing form # #RESULT_ID#");
$APPLICATION->SetTitle($title);
require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_after.php");
?>
<a href="index.php?web_form_name=<?=$arrresult["varname"]?>" class="navchain">Forms</a>
<br><br>
<table cellspacing="0" cellpadding="2">
    <?if ($F_RIGHT>=25):?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b>ID:</b></font></td>
        <td valign="top"><font class="tablebodytext"><?=$arrResult["ID"]?></font></td>
    </tr>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_FORM_NAME")?></b></font></td>
        <td valign="top"><font class="tablebodytext"><?
        echo "[<a class='tablebodylink' href='form_edit.php?lang=".lang."&id=".$web_form_id."'>". $WEB_FORM_ID."</a>] (".$arrResult["VARNAME"].") ".$arrResult["NAME"];
        ?></font></td>
    </tr>
    <?endif;?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_DATE_CREATE")?></b></font></td>
        <td valign="top"><font class="tablebodytext"><?=$arrResult["DATE_CREATE"]?></font></td>
    </tr>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_TIMESTAMP")?></b></font></td>
        <td valign="top"><font class="tablebodytext"><?=$arrResult["TIMESTAMP_X"]?></font></td>
    </tr>
    <?if ($F_RIGHT>=25):?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_USER")?></b></font></td>
        <td valign="top" nowrap><font class="tablebodytext"><?
            if (intval($arrResult["USER_ID"])>0) :
                echo "<font class='tablebodytext'>[</font><a class='tablebodylink' title='".GetMessage("FORM_EDIT_USER")."' href='user_edit.php?lang=".lang."&id=".$arrresult["user_id"]."'>".$arrresult["user_id"]."</a><font class='tablebodytext'>] (".htmlspecialchars($arrResult["LOGIN"]).") ".htmlspecialchars($arrResult["USER_NAME"])."</font>";
                echo ($arrResult["USER_AUTH"]=="N") ? " <font class='filteroff'>".GetMessage("FORM_NOT_AUTH")."</font>" : "";
            else :
                echo "<font class='tablebodytext'>".GetMessage("FORM_NOT_REGISTERED")."</font>";
            endif;
            ?></font></td>
    </tr>
    <?if (CModule::IncludeModule("statistic")):?>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_GUEST")?></b></font></td>
        <td valign="top"><font class="tablebodytext">[<a title="<?=GetMessage("FORM_GUEST_ALT")?>" class="tablebodylink" href="/bitrix/admin/guest_list.php?lang=<?=lang?>&find_id=<?=$arrresult["stat_guest_id"]?>&set_filter=y"><?=$arrresult["stat_guest_id"]?></a>]</font></td>
    </tr>
    <tr>
        <td align="right" valign="top"><font class="tablebodytext"><b><?=GetMessage("FORM_SESSION")?></b></font></td>
        <td valign="top"><font class="tablebodytext">[<a title="<?=GetMessage("FORM_SESSION_ALT")?>" class="tablebodylink" href="/bitrix/admin/session_list.php?lang=<?=lang?>&find_id=<?=$arrresult["stat_session_id"]?>&set_filter=y"><?=$arrresult["stat_session_id"]?></a>]</font></td>
    </tr>
    <?endif;?>
    <?endif;?>
</table>
<br>
<?
CForm::EditResult($RESULT_ID, $arrVALUES, $EDIT_RESULT_TEMPLATE, $EDIT_ADDITIONAL); 
require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog.php"); 
?>