0

目前正在使用 Bitrix CMS,需要为特定组的用户投票。知道组的 id 后,我制作了一个表格,里面有一堆单选按钮。当有人投票时,结果应该写在文件(或数据库)中,并在页面上写上“谢谢你的投票!” 应显示。我的问题是最好的方法是什么? 我尝试了几种不同的方法:
1)本教程,不起作用
2)另外两个网络教程,如果你问我可以链接
3)来自 bitrix 的投票表格,但是对于系统的那个模块应该改变,不建议这样做。

下面是带有投票本身的页面,但是“poll.php”让我感到困惑,因为不知道正确的方法。如此好的建议将不胜感激。

ps你可以忽略'Bitrix'部分,最重要的是php

/*get users from group in array*/
<?$arUsers = CGroup::GetGroupUser(20);
$iCountUsers = 0;
$arUsersbyGroupID = array();
foreach($arUsers as $arUser) {
	$arUserbyID = CUser::GetByID($arUser);
	$rsUserbyID = $arUserbyID -> Fetch();
	$arUsersbyGroupID[] = $rsUserbyID; }
	$iCountUsers++;?>

<div class="wrapper">
      <div id="poll-container">
       <form class="grid" action="poll.php" method="post" accept-charset="utf-8">
         /*for each create element with radio button*/
		<?$iVoteCount = 0;
		$allopt = array();
		foreach($arUsersbyGroupID as $Vote) {
		$photo = $Vote["PERSONAL_PHOTO"];
			if (!empty($photo)) {
			$name = "{$Vote["NAME"]} {$Vote["LAST_NAME"]}";?>
        <div class="cell">
			<div class="cell_img"><?echo CFile::ShowImage($photo)?></div>
            <div class="cell_caption">
                    <input type="radio" value="<?=$iVoteCount?>" name="vote" onclick="getVote(this.value)" />
                    <label for='opt<?=$iVoteCount?>'><?echo $name?></label>
            </div>
        </div>
		$iVoteCount++;
}
		} ?>
        <div id="sub"><input type="submit" value="Vote" /></div>
    </form>
 </div>
 </div>

4

2 回答 2

0

您不应该为创建民意调查编写完全自定义的解决方案。在 Bitrix Framework 中,我们有一个名为 -vote

通过提供此模块,您可以创建标准民意调查,或者如果它们不适合您的任务 - 您可以自定义它们,但您不应该从头开始编写所有这些代码。

对于基本投票配置,您可以阅读官方在线课程(俄语) - http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=41&LESSON_ID=2859

于 2017-01-12T13:27:59.677 回答
0

使用 bitrix api 使用 $_POST 或 $_REQUEST 全局变量将它们绑定到您的自定义表单名称 [] 来传输您的数组数据。只需在提交事件后添加 bitrix api 代码。投票结果可能会粘贴到之前应在 BX 中手动创建的自定义潜在客户字段中。看看这个例子。它完全可行并经过测试。

   <?php
    $queryUrl ='';
    $_SERVER['REMOTE_ADDR'] = $ip;
     $queryData = http_build_query($basebitrix24 = array(
     'fields' => array(
     "TITLE" =>'one',
     "NAME" => 'two',
     "LAST_NAME" => $leadData['question_one'],
     "STATUS_ID" => "NEW",
     "OPENED" => "Y",

    "UF_CRM_1491235024" => $leadData['question_second'], 
    "UF_CRM_1491235124" =>   $leadDataQ1[$answer],
    "UF_CRM_1491235376" =>  $leadData['question_third'], 
     "ASSIGNED_BY_ID" => 16,
    'SOURCE_ID' => $i,
     "PHONE" => array(array("VALUE" => $_REQUEST['phone'], "VALUE_TYPE" => "WORK" )),
     "EMAIL" => array(array("VALUE" => $_REQUEST['email'], "VALUE_TYPE" => "WORK" )),
     ),
     'params' => array("REGISTER_SONET_EVENT" => "Y")
     )); 
     $curl = curl_init();
     curl_setopt_array($curl, array(
     CURLOPT_SSL_VERIFYPEER => 0,
     CURLOPT_POST => 1,
     CURLOPT_HEADER => 0,
     CURLOPT_RETURNTRANSFER => 1,
     CURLOPT_URL => $queryUrl,
     CURLOPT_POSTFIELDS => $queryData,
     ));
     $result = curl_exec($curl);
     curl_close($curl);
     $result = json_decode($result, 1);
    ?>

这些请求与投票无关,但对任何自定义表单使用相同的方法也没有太多麻烦。示例目的中的表单代码。

    if (isset($_POST['s_submit'])) {
        @$email = strtolower(trim($_POST['email']));
        @$name = trim($_POST['name']);

        if (isset($_POST) && count($_POST) != 0) {
            if (@isset($email) && @$email != '') {
                $line = check_record_exist($removelist, $email, $form_type);
                if ($line) {
                    $line--;
                    delete_line_from_file($removelist, $line);
                }
                if (!check_record_exist($addlist, $email, $form_type)) {
                    add_record($addlist, $email, $name);
                    $sm_res = 1;
                } else {
                    $sm_res = 3;
                }
            } else
                echo '<font color="#FF0000">Please enter e-mail address</font>';
        }
    }

    if (isset($sm_res)) {
        switch ($sm_res) {
            case '1': echo '<b>You have successfully subscribed</b>';
                break;
            case '2': echo '<b>You have successfully unsubscribed</b>';
                break;
            case '3': echo '<b>You are already subscribed</b>';
                break;
            case '4': echo '<b>You are already unsubscribed</b>';
                break;
        }
        unset($sm_res);
    } else {
    <form name="contactform"  id="sky-form" method="post" action="">
          <fieldset>
            <div class="row">
            <div class="sky-form epochta"> 
              <section class="col col-6"  >
                 <label class="input"><i class="icon-append icon-envelope-alt"></i> <h3>EMAIL </h3><input type="email" name="email" value="<?$_REQUEST['email']?>">      </label>
                                        </section>
                                        <?php if ($form_type != 1) { ?>
                                        <section class="col col-6">

                   <label class="input"> <i class="icon-append icon-user"></i><h3>NAME<h3> <input type="text" name="name" size="15" value="<?php echo @trim(strip_tags($_REQUEST['name'])); ?>">
                        </label>
              </section>
                                          <?php } ?>
        <section class="col col-12"  >

                            <input type="hidden" name="saved" value="yes">

                    <input type="submit" class="subbutton"  name="submit" value="">        

                                <td align="center" colspan="2"><a href="http://www.epochta.ru/products/subscription/" target="_blank"><font face="Verdana" size="-2">ePochta Subscription Manager</font></a>

          </section>

          </div>
          </div>
                </fieldset>
          </form>
    ?>
于 2017-04-28T20:53:22.000 回答