【问题标题】:Advice for voting form with php and bitrix使用 php 和 bitrix 进行投票表格的建议
【发布时间】:2016-06-28 15:12:25
【问题描述】:

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

下面是带有投票本身的页面,但“poll.php”让我感到困惑,因为不知道正确的方法。非常感谢这么好的建议。

附言你可以忽略'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>

【问题讨论】:

  • 你可以使用bitrix bitrix的标准组件:voting.current

标签: php html vote bitrix


【解决方案1】:

您不应该编写完全自定义的解决方案来创建投票。在 Bitrix 框架中,我们有一个名为 - vote

的模块

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

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

【讨论】:

    【解决方案2】:

    使用 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>
        ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多