当前位置: 首页 > 知识库问答 >
问题:

在jquery、ajax和php中维护checked checkbox状态事件

商柏
2023-03-14

我有复选框和提交按钮。用户可以使用复选框和按钮单击筛选选项。但现在我要维护此复选框的状态事件。所以用户应该知道哪些复选框已经被选中,并且他们可以从复选框中过滤选项。到现在为止,我能够成功地使用复选框和按钮点击来过滤选项,但是不知道如何维护选中的复选框的状态事件。所以在页面刷新之后,用户应该能够识别选中的复选框事件。我将选中的复选框存储在数据库中作为一个数组,以后再检索它。这里是我的代码:js代码:

        function getFahrzeuge() { 
        var opts = [];
        $("#FAHRZEUGE input[type='checkbox']").each(function () {
            if ($(this).is(':checked')) 
            {
            opts.push($(this).attr("id"));
            }

        }); 
        return opts;
    } 

        function saveFahrzeugeWidget(opts){

    if(opts.length == 0) return false;

    $.ajax({
      type: "POST",
      url: "ajax/dashboard.php",
      dataType : 'json',
      cache: false,
        data: {'filterOpts' :opts, 'aktion' : 'save-widget-vehicle'},
      success: function(data){
         getFahrzeugeWidget();
         //$('#fahrzeuge').html(data['html']);        
      },
      error: function(data){
            alert('error');         
            }
    });
  }


  function getFahrzeugeWidget(opts){
    if(!opts || !opts.length){
      opts = allFahrzeuge;
    }

    $.ajax({
      type: "POST",
      url: "ajax/dashboard.php",
      dataType : 'json',
      cache: false,
      //data: {filterOpts:opts, 'aktion' : 'get-widget-vehicle','timestamp': new Date().getTime()},
      data: {filterOpts:opts, 'aktion' : 'get-widget-vehicle'},
      success: function(data){            
       $('#FAHRZEUGE').html(data.html);
      },
      error: function(data){
            alert('error');         
            }             
    });
  }  


  $('#FAHRZEUGE .butt-rahmen').live('click', function(){
        var opts = getFahrzeuge();              
        if($(this).attr('id') == 'saveId')
        {
                saveFahrzeugeWidget(opts); 
                if($('#FAHRZEUGE input[type="checkbox"]:checked').length <=0) {
                            alert('überprüfen Sie bitte atleast ein fahrzeuge');
                            getFahrzeugeWidgetEdit(opts);
                     } 
        }                   

        });         

 var allFahrzeuge = [];
  $("input[type=checkbox]").each(function(){
    allFahrzeuge.push($(this)[0].id)
  }) 

dashboard.php

 if($param['aktion'] == 'get-widget-vehicle-edit')
    {
        $page['register-fahrzeuge'] = array(
            0   => array( 'FAHRZEUGE','enabled',$page['script'],''),
            1   => array( 'EDIT-FAHRZEUGE','aktiv',$page['script'],'',''),  
        );

        $html = '<table width="538" cellspacing="0" cellpadding="0" border="0">
                <tr>
                    <td>
                        <div>'.CreateRegister($page['register-fahrzeuge']).'</div>
                        '.CreateMessage().'
                        <div class="cont-liste-verlauf register">
                            <table id="FAHRZEUGE" >
                                <tr>
                                    <td>
                                            <input type="checkbox" name="Anzahl_Fahrzeuge_ohne_Bilder" id="Anzahl_Fahrzeuge_ohne_Bilder" checked />
                                    <label for="Anzahl_Fahrzeuge_ohne_Bilder">Anzahl Fahrzeuge ohne Bilder</label><br>

                        <input type="checkbox" name="Fahrzeuge_ohne_Preis" id="Fahrzeuge_ohne_Preis" value="Fahrzeuge_ohne_Preis" checked />
                                    <label for="Fahrzeuge_ohne_Preis">Fahrzeuge_ohne_Preis</label><br>

                                    <input type="checkbox" name="Fahrzeuge_mit_Fehlern" id="Fahrzeuge_mit_Fehlern" value="Fahrzeuge_mit_Fehlern" checked />
                                    <label for="Fahrzeuge_mit_Fehlern">Fahrzeuge mit Fehlern</label><br>

                        <input type="checkbox" name="Herausforderungen" id="Herausforderungen" value="Herausforderungen" checked />
                                    <label for="Herausforderungen">Herausforderungen</label><br><br>                

                            </td>
                        </tr>
                            </table>
                            '.CreateButton($page['button']).'
                        </div>
                </td>
            </tr>
        </table>';

        $return = array(
            'status' => 1,
            'html'  => $html
        );

        echo json_encode($return);
        die();
    }



     if($param['aktion'] == 'save-widget-vehicle')
      {     
        if ($_SERVER['REQUEST_METHOD'] == 'POST'){
        if (isset ($param['filterOpts']) && is_array ($param['filterOpts']) )
        {
        // save it into the session
       $_SESSION['filterOpts'] = $_POST['filterOpts'];
        }   
      }


        $opts = !empty($param['filterOpts']) ? $param['filterOpts'] : array();
      $tmp = array();
      foreach ($opts as $opt) {
            $tmp[] = $opt;          
      }   
        $query ="UPDATE dashboard_widget_users w SET w.configuration=\"".mysql_real_escape_string(serialize($tmp))."\" WHERE w.dsnr_yw_user =".$user_id." AND w.dsnr_dashboard_widget=1";           
      $result = mysql_query($query, $myConnection);   
                $return = array(

        'status' => 1,
        'html'  => ''
    );

    echo json_encode($return);
    die();  
}


if($param['aktion'] == 'get-widget-vehicle')
{
    $page['register-fahrzeuge'] = array(
        1   => array( 'FAHRZEUGE','aktiv',$page['script'],''),
        0   => array( 'EDIT-FAHRZEUGE','enabled',$page['script'],'',''),    
    );        

            /*when empty default config...
            $query=    "SELECT dashboard_widget.configuration FROM dashboard_widget WHERE Id =1"; 
            */ 

           $query ="SELECT dashboard_widget_users.configuration
                                         FROM dashboard_widget_users
                                         INNER JOIN yw_user ON dashboard_widget_users.dsnr_yw_user = yw_user.intern
                                         INNER JOIN dashboard_widget ON dashboard_widget_users.dsnr_dashboard_widget = dashboard_widget.id
                                         WHERE dashboard_widget_users.dsnr_yw_user=".$user_id." AND dashboard_widget.id=1 ";  
                    $result = mysql_query($query, $myConnection);


        $linksVehicleWidget = array();
        $configVehicleWidget['Anzahl_Fahrzeuge_ohne_Bilder'] = array(
            'link' => 'fahrzeuge.php?parameter=1',
            'image' => 'news/bild1.jpg',
            'linkName' => 'Fahrzeuge ohne Bilder',
            'textAllOK' => 'Alle Fahrzeuge haben Bilder',
            'count' => 0
        );

        $configVehicleWidget['Fahrzeuge_ohne_Preis'] = array(
            'link' => 'fahrzeuge.php?parameter=1',
            'image' => 'news/bild1.jpg',
            'linkName' => 'Fahrzeuge ohne Preis',
            'textAllOK' => 'Alle Fahrzeuge haben einen Preis',
            'count' => 0
        );

        $configVehicleWidget['Fahrzeuge_mit_Fehlern'] = array(
            'link' => 'fahrzeuge.php?parameter=1',
            'image' => 'news/bild1.jpg',
            'linkName' => 'Fahrzeuge mit Fehlern',
            'textAllOK' => 'Keine Fahrzeuge mit Fehlern',
            'count' => 0
        );

        $configVehicleWidget['Herausforderungen'] = array(
            'link' => 'fahrzeuge.php?parameter=1',
            'image' => 'news/bild1.jpg',
            'linkName' => 'Herausforderungen',
            'textAllOK' => 'Keine Herausforderungen',
            'count' => 0
        );

        $html = '<table width="538" cellspacing="0" cellpadding="0" border="0" >
            <tr>
                <td>
                <div>'.CreateRegister($page['register-fahrzeuge']).'</div>
                '.CreateMessage().'
                <div class="cont-liste-verlauf register">';
                    if($row = mysql_fetch_assoc($result)) 
                    {
                        $empty_config=$row['configuration'];
                        if(empty($empty_config )) {
                            $sql="SELECT dashboard_widget.configuration FROM dashboard_widget WHERE Id =1";
                            $sql_result = mysql_query($sql, $myConnection);
                            $results = mysql_fetch_assoc($sql_result);  
                            $config= unserialize($results['configuration']);                            
                        }
                        else{
                        $config= unserialize($row['configuration']);
                        }

                        foreach($config as $val)
                        {
                            if($val == 'Anzahl_Fahrzeuge_ohne_Bilder')
                            {

                                $sql='SELECT count( * ) as bilder FROM autodo.amo_bilder_live l LEFT JOIN autodo.afzdaten a ON l.dsnr_afzdaten = a.dsnr WHERE l.dsnr_afzdaten IS NULL';
                                $sql_result=mysql_query($sql);
                                $results=mysql_fetch_assoc($sql_result); 
                                $configVehicleWidget[$val]['count'] = $results['bilder'];

                            }
                            else if($val == 'Fahrzeuge_ohne_Preis')
                            {
                                $sql='SELECT count(*) as Preis FROM autodo.afzdaten WHERE Preis IS NULL';
                                            $sql_result=mysql_query($sql);
                                            $results=mysql_fetch_assoc($sql_result);
                                            $configVehicleWidget[$val]['count'] = $results['Preis'];
                            }
                            else if($val == 'Fahrzeuge_mit_Fehlern')
                            {
                                $sql='SELECT count(*) as fehler FROM autodo.afzdaten WHERE fehler IS NULL';
                                $sql_result=mysql_query($sql);
                                $results=mysql_fetch_assoc($sql_result);
                                $configVehicleWidget[$val]['count'] = $results['fehler'];

                            }
                            else if($val == 'Herausforderungen')
                            {
                                $sql='SELECT count(*) as herausforderung FROM autodo.afzdaten WHERE herausforderung IS NULL'; 
                                $sql_result=mysql_query($sql);
                                $results=mysql_fetch_assoc($sql_result);
                                $configVehicleWidget[$val]['count'] = $results['herausforderung'];
                            }                       

                            if($configVehicleWidget[$val]['count'] > 0)
                            {
                                $html .= '<a href="'.$configVehicleWidget[$val]['link'].'" style="color:red;">'.'<image src="'.$configVehicleWidget[$val]['image'].'" width="30" height="25" align="middle">.'.$configVehicleWidget[$val]['count'].' '.$configVehicleWidget[$val]['linkName'].'<br>'.'<br>'.'</a>';
                            }
                            else
                            {
                                $html .='<span style="color:green;">'.'<image src="'.$configVehicleWidget[$val]['image'].'" width="30" height="22" align="middle">.'.$configVehicleWidget[$val]['textAllOK'].'<br>'.'<br>'.'</span>';
                            }                           
                    }
                }

                $html .= '              
            </div>          
            </td>
        </tr>
    </table>';

    $return = array(
        'status' => 1,
        'html'  => $html
    );

    echo json_encode($return);
    die();
}

修改的代码:

foreach($_SESSION['config'] as $val)
                                {
                                    if($val == 'Anzahl_Fahrzeuge_ohne_Bilder')
                                    {
                                        $html .= '<input type="checkbox" name="Anzahl_Fahrzeuge_ohne_Bilder" id="Anzahl_Fahrzeuge_ohne_Bilder" checked />
                                <label for="Anzahl_Fahrzeuge_ohne_Bilder">Anzahl_Fahrzeuge_ohne_Bilder</label><br>
                 }}

共有1个答案

姜俊民
2023-03-14

您可以修改dashboard.php以将复选框保存到会话中,如下所示:

<?php

session_start ();

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (isset ($_POST['filterOpts']) && is_array ($_POST['filterOpts']) )
    {
        // save it into the session
        $_SESSION['filterOpts'] = $_POST['filterOpts'];
    }

    echo '{}';
    exit;
}


// ...


// loads the saved values from the session or a new empty array
$filterOpts = (isset ($_SESSION['filterOpts']) && is_array ($_SESSION['filterOpts'])) ? $_SESSION['filterOpts'] : array ();

// retrieves that filteroption (if present = checked)
// returns true or false
function isfo ($name) { global $filterOpts; return in_array ($name, $filterOpts); }


echo '$filterOpts (from session) = <pre>' . htmlspecialchars (print_r ($filterOpts, true)) . '</pre><br/>';

?>


        <table id="FAHRZEUGE" >
                            <tr>
                                <td>
                                <input type="checkbox" name="Anzahl_Fahrzeuge_ohne_Bilder" id="Anzahl_Fahrzeuge_ohne_Bilder"  <?php echo isfo ('Anzahl_Fahrzeuge_ohne_Bilder') ? 'checked="checked"' : ''; ?> />
                                <label for="Anzahl_Fahrzeuge_ohne_Bilder">Anzahl Fahrzeuge ohne Bilder</label><br>

                                <input type="checkbox" name="Fahrzeuge_ohne_Preis" id="Fahrzeuge_ohne_Preis" value="Fahrzeuge_ohne_Preis"  <?php echo isfo ('Fahrzeuge_ohne_Preis') ? 'checked="checked"' : ''; ?> />
                                <label for="Fahrzeuge_ohne_Preis">Fahrzeuge_ohne_Preis</label><br>

                                <input type="checkbox" name="Fahrzeuge_mit_Fehlern" id="Fahrzeuge_mit_Fehlern" value="Fahrzeuge_mit_Fehlern"  <?php echo isfo ('Fahrzeuge_mit_Fehlern') ? 'checked="checked"' : ''; ?> />
                                <label for="Fahrzeuge mit Fehlern">Fahrzeuge mit Fehlern</label><br>

                                <input type="checkbox" name="Herausforderungen" id="Herausforderungen" value="Herausforderungen"  <?php echo isfo ('Herausforderungen') ? 'checked="checked"' : ''; ?> />
                                <label for="Herausforderungen">Herausforderungen</label><br><br>                

                        </td>
                    </tr>
<!--
                    <tr><td>
            <input type="button" class="butt-rahmen" id="saveId" value="save" />
                    </td></tr>
-->
                        </table>

保存/加载到数据库与此非常相似,但需要用您的DB替换$_session。

 类似资料:
  • 2)我研究了循环分区的重新平衡。假设我建立了一个集群,如果我的源的并行度为1,如果我进行了重新平衡,我的数据是否会在机器之间进行重排以提高性能?如果是这样,是否有一个特定的端口将数据传送到集群中的其他节点? 3)状态维护有什么限制吗?我计划维护一些用户id相关的数据,这些数据可能会变得很大。我读到flink使用rocks db来维护状态。只是想检查一下是否有限制可以维护多少数据? 4)同样,如果数

  • 背景: 在我们典型的状态机工作模型中,我们使用状态机来监控spring cloud stream微服务所做的spring-batch处理。更准确地说,我们创建了流,比如说,命名为ItemStream,部署了源、过程、接收器微服务,这些服务可以批量读取、处理和写入记录;分别。在执行这些活动时,我们激发REST调用,每个调用由流操作之间的一个事件组成。我们在状态机微服务中使用这些REST调用,并相应地

  • 我的问题是每次调用distinctByKey并产生新的ConcurrentHashMap。如何使用新的ConcurrentHashMap<>()维护状态;?

  • 我们正在评估Magento的电子商务解决方案。Magento解决方案是定制的,可以连接到一系列内部系统,用于支付、订单处理和其他功能。 我们正在计划使用少数外部订单状态和内部订单状态来处理从一个集成到另一个集成的系统工作流。我们的策略是,内部状态是我们支持的内部状态,客户看到外部状态,它们一起帮助我们确定每个状态的关闭(例如,支付成功),然后导航到下一步(订单创建)。这样做的原因是,大多数内部服务

  • redis-cli -p 26379 info

  • 我对EJB有点陌生。我已经理解了HTTPSession是如何维护的(所有cookie funda)。互联网上所有的资源都写着“有状态会话Bean维护会话(记住客户机)”,但我找不到答案