分页搜索恢复到第2页上的上一次搜索

时间:2013-07-16 18:43:21

标签: cakephp cakephp-1.3

我有一个所有用户的列表,并且使用cakephp 1.3分页和搜索功能完成。它在FF / Opera / Chrome中完美运行,但在IE8 / IE9中有以下问题

步骤1.进行调查以显示> 1页。 步骤2.进行第二次搜索> 1页。 步骤3.单击下一页/第2页按钮。 它将显示步骤1的第二页。如果转到第1页,则表示您是步骤1的结果。

我找不到任何关于IE为什么会这样做的事情。我查看了我的会话值,但据我所知它们是正确的(例如步骤1会话= 145,步骤2会话= 7,步骤3会话= 7)

控制器(我已经剥离了东西以使其更小,如果需要我可以添加更多):

if(empty($this->data)) {
        $this->data['User']['inactive'] = $this->Session->read('User.inactive_store');
        $this->data['User']['pe'] = $this->Session->read('User.pe_store');
        $this->data['User']['district'] = $this->Session->read('User.district_store');
        $this->data['User']['ghq'] = $this->Session->read('User.ghq_store');
        $this->data['User']['last_name'] = $this->Session->read('User.last_name_store');
        $this->data['User']['first_name'] = $this->Session->read('User.first_name_store');
        $this->data['User']['rank'] = $this->Session->read('User.rank_store');
        $this->data['User']['status'] = $this->Session->read('User.status_store');
        $this->data['User']['race'] = $this->Session->read('User.race_store');
        $this->data['User']['sex'] = $this->Session->read('User.sex_store');
        $this->data['User']['type'] = $this->Session->read('User.type_store');
        $this->data['User']['radio'] = $this->Session->read('User.radio_store');
        $this->data['User']['unit'] = $this->Session->read('User.unit_store');
        $this->data['User']['results'] = $this->Session->read('User.results_store');
        if(empty($this->data['User']['results'])){$this->data['User']['results'] = 0;}
        $this->data['User']['psid'] = $this->Session->read('User.psid_store');
        $this->data['User']['psid_show'] = $this->Session->read('User.psid_show_store');
        $this->data['AirCard']['card_number'] = $this->Session->read('User.card_number_store');
        $this->data['AirCard']['esn'] = $this->Session->read('User.esn_store');
        $this->data['AirCard']['ip_address'] = $this->Session->read('User.ip_store');
    }
    $results = 'false';
    $message = '';

    if(!empty($this->data)){
        //set up some variables
        $pe = $this->data['User']['pe'];
        $district = $this->data['User']['district'];
        $ghq = $this->data['User']['ghq'];
        $first_name_store = $this->data['User']['first_name'];
        $last_name_store = $this->data['User']['last_name'];
        $first_name = $this->data['User']['first_name'].'%';
        $last_name = $this->data['User']['last_name'].'%';
        $rank = $this->data['User']['rank'];
        $status = $this->data['User']['status'];
        $race = $this->data['User']['race'];
        $sex = $this->data['User']['sex'];
        $type = $this->data['User']['type'];
        $results = $this->data['User']['results'];
        $psid = $this->data['User']['psid'];
        $psid_show = $this->data['User']['psid_show'];
        $car = $this->data['User']['radio'];
        $badge = $this->data['User']['unit'];

        //hidden admin controls
        if(empty($this->data['AirCard']['card_number']) && empty($this->data['AirCard']['esn']) && empty($this->data['AirCard']['ip_address']))
        {
            $card_number = '';
            $esn = '';
            $ip = '';
        } else {
            $card_number = $this->data['AirCard']['card_number'];
            $esn = $this->data['AirCard']['esn'];
            $ip = $this->data['AirCard']['ip_address'];
        }
        $run_mobile = 0;

        //this message will display to ensure user what was searched for/what was changed in search
        $message = $message.'<p> Searched for: </p>';

        //while loop to check for names.  for example someone searches Jon Burns, gets no results it should search for J Burns instead, no results just Burns, etc
        while(empty($datas))
        {
            //check for any empty variables/fill the ones that need to have values
            if(empty($pe)) 
            {
                $pe_empty = 1;
                $pe_query = '';
            } else {
                $message = $message.'<b>PE</b> = '.$pe.' || ';
                $pe_query = array('User.pe' => $pe);
            }
            if(empty($district)) 
            {
                $district_empty = 1;
                $district_query = '';
            } elseif(sizeof($district) == 1) {
                $message = $message.'<b>District</b> = '.$district_list[$district].' || ';
                $district_query = array('User.district_id' => $district);
            } else {
                $district_empty = 1;
            }
            if(empty($ghq)) 
            {
                $ghq_empty = 1;
                $ghq_query = '';
            } elseif(sizeof($ghq) == 1) {
                $message = $message.'<b>Assigned To</b> = '.$ghq_list[$ghq].' || ';
                $ghq_query = array('User.ghq_id' => $ghq);
            } else {
                $ghq_empty = 1;
            }
            if(empty($rank))
            {
                $rank_empty = 1;
                $rank_query = '';
            } elseif(sizeof($rank) == 1) {
                $message = $message.'<b>Rank</b> = '.$rank_list[$rank].' || ';
                $rank_query = array('User.rank_id' => $rank);
            }
            if(empty($first_name_store)) 
            {
                $first_empty = 1;
                $first_name_query = '';
            } else {
                $message = $message.'<b>First Name</b> = '.$first_name_store.' || ';
                $first_name_query = array('User.first_name LIKE' => $first_name);
            }
            if(empty($last_name_store)) 
            {
                $last_empty = 1;
                $last_name_query = '';
            } else {
                $message = $message.'<b>Last Name</b> = '.$last_name_store.' || ';
                $last_name_query = array('User.last_name LIKE' => $last_name);
            }
            if(empty($this->data['User']['inactive']))
            {
                $this->data['User']['inactive'] = 0;
            }
            if($this->data['User']['inactive'] == 0)
            {
                $active_query = array('User.active' => 1);
            } else {
                $active_query = '';
            }
            if(empty($status))
            {
                $status_query = '';
            } else {
                $message = $message.'<b>Status</b> = '.$status_list[$status].' || ';
                $status_query = array('User.special_status_id' => $status);
            }
            if(empty($race))
            {
                $race_query = '';
            } else {
                $message = $message.'<b>Race</b> = '.$race_list[$race].' || ';
                $race_query = array('User.race_id' => $race);
            }
            if(empty($sex))
            {
                $sex_query = '';
            } else {
                $message = $message.'<b>Sex</b> = '.$sex_list[$sex].' || ';
                $sex_query = array('User.sex_id' => $sex);
            }
            if(empty($type))
            {
                $type_query = '';
            } else {
                $message = $message.'<b>Type</b> = '.$type_list[$type].' || ';
                $type_query = array('User.employee_type_id' => $type);
            }
            if(empty($psid))
            {
                $psid_query = '';
            } else {
                $message = $message.'<b>Public Safety ID</b> = '.$psid.' || ';
                $psid_query = array('User.psid' => $psid);
            }
            if(empty($psid_show))
            {
                $psid_show_query = '';
            } else {
                $message = $message.'<b>Public Safety ID not empty</b> || ';
                $psid_show_query = array('User.psid !=' => null);
            }
            if(empty($car))
            {
                $car_query = '';
            } else {
                $message = $message.'<b>Car Number</b> = '.$car.' || ';
                $car_query = array('User.radio =' => $car);
            }
            if(empty($badge))
            {
                $badge_query = '';
            } else {
                $message = $message.'<b>Badge Number</b> = '.$badge.' || ';
                $badge_query = array('User.unit =' => $badge);
            }
            if(empty($card_number))
            {
                $card_number_query = '';
                $this->data['AirCard']['card_number'] = '';
            } else {
                $message = $message.'<b>Card Number = </b>'.$card_number.' || ';
                $card_number_query = array('AirCard.card_number' => $card_number);
                $run_mobile = 1;
            }
            if(empty($esn))
            {
                $esn_query = '';
                $this->data['AirCard']['esn'] = '';
            } else {
                $message = $message.'<b>ESN = </b>'.$esn.' || ';
                $esn_query = array('AirCard.esn' => $esn);
                $run_mobile = 1;
            }
            if(empty($ip))
            {
                $ip_query = '';
                $this->data['AirCard']['ip_address'] = '';
            } else {
                $message = $message.'<b>IP = </b>'.$ip;
                $ip_query = array('AirCard.ip_address' => $ip);
                $run_mobile = 1;
            }
            $message = $message.'</p>';
            $mobile_query = '';
            if($run_mobile == 1)
            {
                $mobile_user_ids = $this->AirCard->find('list',array(
                    'conditions' => array('AND' => array(
                        $card_number_query,
                        $esn_query,
                        $ip_query
                    )),'fields' => array('user_id')
                ));
                if(!empty($mobile_user_ids))
                {
                    $mobile_query = array('User.id' => $mobile_user_ids);
                } else {
                    $message = $message.'No results found';
                }
            }

            //List of users matching given parameters $datas
            $this->paginate = array(
                'conditions' => array('AND' => array(
                    $pe_query,
                    $district_query,
                    $ghq_query,
                    $active_query,
                    $last_name_query,
                    $first_name_query,
                    $rank_query,
                    $status_query,
                    $race_query,
                    $sex_query,
                    $type_query,
                    $hide_technical,
                    $psid_query,
                    $psid_show_query,
                    $mobile_query,
                    $car_query,
                    $badge_query
                )),
                'fields' => array('pe','last_name','first_name','middle_initial','id','district_id','ghq_id','rank_id','sworn','cps','mci','dor'),
                'limit'=> $results,

                'order' => array(
                    'User.pe' => 'asc'
                ),
                    'recursive'=>-1
            );

            //run the paginate
            $datas = $this->paginate('User');

            //if the paginate is empty put in message.  Then remove one of the variables in order first,last,pe,district,assigned
            if(empty($datas))
            {
                $message = $message.'<br /><p> Search returned no results.  Searching instead for:</p><p>';
                if($first_empty == 0)
                {
                    if(strlen($first_name_store) > 1)
                    {
                        $first_name = $first_name_store[0].'%';
                        $first_name_store = $first_name_store[0];
                    } else {
                        $first_name = '%';
                        $first_name_store = '';
                    }
                } elseif($last_empty == 0) {
                    if(strlen($last_name_store) > 1)
                    {
                        $last_name = $last_name_store[0].'%';
                        $last_name_store = $last_name_store[0];
                    } else {
                        $last_name = '%';
                        $last_name_store = '';
                    }
                } elseif($pe_empty == 0) {
                    $pe = '';
                } elseif($ghq_empty == 0) {
                    $ghq = '';
                } elseif($district_empty == 0) {
                    $district = '';
                } elseif($rank_empty == 0) {
                    $rank = '';
                } elseif(!empty($car)) {
                    $car = '';
                } elseif(!empty($badge)) {
                    $badge = '';
                }
            }
        }

        $this->Session->write('User.inactive_store',$this->data['User']['inactive']);
        $this->Session->write('User.pe_store',$this->data['User']['pe']);
        $this->Session->write('User.district_store',$this->data['User']['district']);
        $this->Session->write('User.ghq_store',$this->data['User']['ghq']);
        $this->Session->write('User.last_name_store',$this->data['User']['last_name']);
        $this->Session->write('User.first_name_store',$this->data['User']['first_name']);
        $this->Session->write('User.rank_store',$this->data['User']['rank']);
        $this->Session->write('User.status_store',$this->data['User']['status']);
        $this->Session->write('User.race_store',$this->data['User']['race']);
        $this->Session->write('User.sex_store',$this->data['User']['sex']);
        $this->Session->write('User.type_store',$this->data['User']['type']);
        $this->Session->write('User.results_store',$this->data['User']['results']);
        $this->Session->write('User.psid_store',$this->data['User']['psid']);
        $this->Session->write('User.psid_show_store',$this->data['User']['psid_show']);
        $this->Session->write('User.radio_store',$this->data['User']['radio']);
        $this->Session->write('User.unit_store',$this->data['User']['unit']);
        $this->Session->write('User.card_number_store',$this->data['AirCard']['card_number']);
        $this->Session->write('User.esn_store',$this->data['AirCard']['esn']);
        $this->Session->write('User.ip_store',$this->data['AirCard']['ip_address']);
        $this->set('pe',$pe);
        $this->set('district',$district);
        $this->set('ghq',$ghq);
        $this->set('datas', $datas);
        $this->set('message',$message);
        $this->set('rank',$rank);
        $this->set('psid',$psid);
        $this->set('psid_show',$psid_show);
        $results = 'true';
    }
    $this->set('results', $results);

查看:

 <?php
    $html->addCrumb($user['User']['first_name'] . " " . $user['User']['last_name'], '/users');
?>
<?php echo $this->Html->script('jquery'); ?>
<!-- UNITBOOK index of users -->
<?php if($add == 1): ?>
    <div style="color:white; background-color:black;  padding-left:10px;">
        <table>
            <tr>
                <td><div style="font-size: 40px; color:white; background-color:black; padding-left:10px;">Unitbook</div></td>
                <td><div class = "mediumbuttons"><?php echo $this->Html->link('','/users/add/',array('class'=>'button_newuser')); ?></div></td>
            </tr>
        </table>
    </div>
<?php else: ?>
    <div style="height: 38px;  color:white; background-color:black;  padding-left:10px;">
        <table>
            <tr>
                <td><div style="margin-top:7px; font-size: 40px; color:white; background-color:black; padding-left:10px;">Unitbook</div></td>
            </tr>
        </table>
    </div>
<?php endif; ?>
<br />
<?php echo $form->create('User', array('action' => '/unitbook/'));?>

<fieldset class="ta_add_fieldset">
    <legend class="ta_add_legend">
        Search
    </legend>
    <table>
        <tr>
            <td>
                <label class = "gi_label"><b>Last Name:</b></label>
            </td>
            <td>
                <?php echo $this->Form->input('User.last_name',array('label' => ''));?>
            </td>
            <td>
                <label class = "gi_label"><b>First Name:</b></label>
            </td>
            <td>
                <?php echo $this->Form->input('User.first_name',array('label' => ''));?>
            </td>
        </tr>
        <tr>
            <td>
                <label class = "gi_label"><b>PE:</b></label>
            </td>
            <td>
                <?php echo $this->Form->input('User.pe',array('label' => '','size' => '10', 'maxlength' => '10'));?>
            </td>
            <td>
                <label class = "gi_label"><b>Assigned To:</b></label>
            </td>
            <td>
                <?php echo $form->select('User.district',$district_list);?>
            </td>
            <?php if($viewable): ?>
                <td>
                    <label class = "gi_label"><b>Check to include inactive users</b></label>
                </td>
                <td>
                    <?php echo $this->Form->checkbox('User.inactive');?>
                </td>
            <?php endif; ?>
        </tr>
    </table>
    <table>
        <tr>
            <td>
                <label class = "gi_label"><b>Located At:</b></label>
            </td>
            <td>
                <?php echo $form->select('User.ghq',$ghq_list);?>
            </td>
        </tr>
    </table>
    <table>
        <tr>
            <td>
                <label class = "gi_label"><b>Rank:</b></label>
            </td>
            <td>
                <?php echo $form->select('User.rank',$rank_list);?>
            </td>
            <td>
                <label class = "gi_label"><b>Status:</b></label>
            </td>
            <td>
                <?php echo $form->select('User.status',$status_list);?>
            </td>
        </tr>
    </table>
    <table>
        <tr>
            <td>
                <label class = "gi_label"><b>Race:</b></label>
            </td>
            <td>
                <?php echo $form->select('User.race',$race_list);?>
            </td>
            <td>
                <label class = "gi_label"><b>Sex:</b></label>
            </td>
            <td>
                <?php echo $form->select('User.sex',$sex_list);?>
            </td>
            <td>
                <label class = "gi_label"><b>Type:</b></label>
            </td>
            <td>
                <?php echo $form->select('User.type',$type_list);?>
            </td>
        </tr>
    </table>
    <table>
        <tr>
            <td>
                <label class = "gi_label"><b>Car Number:</b></label>
            </td>
            <td>
                <?php echo $this->Form->input('User.radio',array('label' => ''));?>
            </td>
            <td>
                <label class = "gi_label"><b>Badge Number:</b></label>
            </td>
            <td>
                <?php echo $this->Form->input('User.unit',array('label' => ''));?>
            </td>
        </tr>
    </table>
    <table>
        <tr>
            <td id='aggregatelabel'>
                <label class="gi_label"><b>Results per page: </b></label>
            </td>
            <td>
                <?php echo $this->Form->input('results', array('label' => '', 'options' => array(
                    '25' => '25',
                    '50' => '50',
                    '75' => '75',
                    '100' => '100',
                    '100000' => 'All'
                ))); ?>
            </td>
            <td>
                <label class = "gi_label"><b>Public Safety ID:</b></label>
            </td>
            <td>
                <?php echo $this->Form->input('User.psid',array('label' => ''));?>
            </td>
            <td>
                <label class = "gi_label"><b>Only show users with Public Safety ID</b></label>
            </td>
            <td>
                <?php echo $this->Form->checkbox('User.psid_show');?>
            </td>
    </table>
    <?php if($mobile == 1): ?>
        <table>
            <tr>
                <td>
                    <label class = "gi_label"><b>Air Card Number</b></label>
                </td>
                <td>
                    <?php echo $this->Form->input('AirCard.card_number',array('label' => ''));?>
                </td>
                <td>
                    <label class = "gi_label"><b>ESN</b></label>
                </td>
                <td>
                    <?php echo $this->Form->input('AirCard.esn',array('label' => ''));?>
                </td>
                <td>
                    <label class = "gi_label"><b>IP Address</b></label>
                </td>
                <td>
                    <?php echo $this->Form->input('AirCard.ip_address',array('label' => ''));?>
                </td>
            </tr>
        </table>
    <?php endif; ?>
    <?php echo $form->submit('Search'); ?>
</fieldset>

<?php if($results == 'true'): ?>
<?php $limit = $this->params['paging']['User']['options']['limit'];
if($limit != 1): ?>
<fieldset class="ta_add_fieldset">
    <legend class="ta_add_legend">
        Results
    </legend>
    <?php echo $message; ?>
    <div id="content">
        <?php
            $paginator->options(
                    array('update'=>'#content', 
                            'evalScripts' => true, 
                            'before' => $this->Js->get('#busy-indicator')->effect('fadeIn', array('buffer' => false)),
                            'complete' => $this->Js->get('#busy-indicator')->effect('fadeOut', array('buffer' => false)),
                            ));
        ?> 
        <?php echo $this->Js->writeBuffer(); ?>
        <?php echo $this->Html->image('http://ispspeis.isp.in.gov/Pictures/shield/logo/indicator.gif', array('id' => 'busy-indicator','class' => 'busy_float')); ?>
        <table>
            <tr>
                <th><?php echo $paginator->sort('PE','pe');?></th>
                <th><?php echo $paginator->sort('Name','last_name');?></th>
                <th><?php echo $paginator->sort('Assigned To','district_id');?></th>
                <th><?php echo $paginator->sort('Located At','ghq_id');?></th>
                <th><?php echo $paginator->sort('Rank','rank_id');?></th>
            </tr>
            <?php foreach($datas as $data): ?>
                <tr>
                    <td style="background-color: #FFFFFF; font-weight: bold; font-size:x-small;">
                        <?php echo $this->Html->link($data['User']['pe'],'/users/view/'.$data['User']['id']); ?>
                    </td>
                    <td style="background-color: #EEEEEE; font-weight: bold; font-size:x-small;">
                        <?php echo $this->Html->link($data['User']['last_name'].', '. $data['User']['first_name'].' '. $data['User']['middle_initial'],'/users/view/'.$data['User']['id']); ?>
                    </td>
                    <td style="background-color: #FFFFFF; font-weight: bold; font-size:x-small;">
                        <?php if(!empty($data['User']['district_id'])): echo $district_list[$data['User']['district_id']]; endif; ?>
                    </td>
                    <td style="background-color: #EEEEEE; font-weight: bold; font-size:x-small;">
                        <?php if(!empty($data['User']['ghq_id'])) :echo $ghq_list[$data['User']['ghq_id']]; endif; ?>
                    </td>
                    <td style="background-color: #FFFFFF; font-weight: bold; font-size:x-small;">
                        <?php if(!empty($data['User']['rank_id'])): echo $rank_list[$data['User']['rank_id']]; endif; ?>
                    </td>
                    <?php if($all == 1 || ($u_dist == 1 && $data['User']['district_id'] == $user['User']['district_id']) || ($u_div == 1 && $data['User']['ghq_id'] == $user['User']['ghq_id'])): ?>
                        <td>
                            <div class = "littlebuttons"><?php echo $this->Html->link('','/users/edit/'.$data['User']['id'],array('class'=>'button_edituser','title'=>'Edit User Information')); ?></div>
                        </td>
                    <?php endif; ?>
                    <td>
                        <div class = "littlebuttons"><?php echo $this->Html->link('','/users/printview/'.$data['User']['id'],array('class'=>'button_printer','title'=>'Print View')); ?></div>
                    </td>
                    <?php if($training == 1): ?>
                        <td>
                            <div class = "littlebuttons"><?php echo $this->Html->link('','/train_records/index/'.$data['User']['id'],array('class'=>'button_book','title'=>'Training Records')); ?></div>
                        </td>
                    <?php endif; ?>
                    <?php if($data['User']['sworn'] + $data['User']['cps'] + $data['User']['mci'] > 0): ?>
                        <?php if(($ta_all == 1) || ($ta_district == 1 && $data['User']['district_id'] == $user['User']['district_id']) || ($ta_division == 1 && $data['User']['ghq_id'] == $user['User']['ghq_id'])): ?>
                            <td>
                                <div class = "widelittlebuttons"><?php echo $this->Html->link('','/audits/index/'.$data['User']['id'],array('class'=>'button_microaudit','title'=>'Audit')); ?></div>
                            </td>
                            <td>
                                <div class = "littlebuttons"><?php echo $this->Html->link('','/trooper_activities/index/'.$data['User']['id'],array('class'=>'button_microactivity','title'=>'Trooper Activity')); ?></div>
                            </td>
                            <?php if($road == true): ?>
                                <td>
                                    <div class = "littlebuttons"><?php echo $this->Html->link('','/settings/adjust_mile/'.$data['User']['id'],array('class'=>'button_road','title'=>'Mileage Update')); ?></div>
                                </td>
                            <?php endif; ?>
                        <?php endif; ?>
                    <?php else: ?>
                        <td>
                            <div class = "littlebuttons"><?php echo $this->Html->link('','/users/index/'.$data['User']['id'],array('class'=>'button_microcalendar','title'=>'Calendar')); ?></div>
                        </td>
                    <?php endif; ?>
                    <?php if($dor_view == 1 and !empty($dor_list[$data['User']['rank_id']])): ?>
                        <td>
                            <div class = "littlebuttons"><?php echo $this->Html->link('','/ftos/index/'.$data['User']['id'],array('class'=>'button_fto','title'=>'Daily Observation Records')); ?></div>
                        </td>
                    <?php endif; ?>
                    <?php if($mobile == 1): ?>
                        <td>
                            <div class = "littlebuttons"><?php echo $this->Html->link('','/air_cards/index/'.$data['User']['id'],array('class'=>'button_micromobile','title'=>'Mobile Records')); ?></div>
                        </td>
                    <?php endif; ?>
                </tr>
            <?php endforeach; ?>
        </table>
        <?php echo $this->Paginator->numbers(); ?>
        <?php echo $this->Paginator->prev('< Previous', null, null, array('class' => 'disabled')); ?>
        <?php echo $this->Paginator->next('Next >', null, null, array('class' => 'disabled')); ?>
        <?php echo $this->Paginator->counter(array(
            'format' => 'Page %page% of %pages%, showing %start% - %end% records out of
            %count% total'
            ));  ?>
        <?php echo $this->Html->link('Export','/users/export_xls'); ?>
    </div>
</fieldset>
<?php endif; ?>
<?php endif; ?>

<?php echo $form->end(); ?> 
<?php echo $this->Js->writeBuffer(); ?>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

IE使用Ajax和缓存做了奇怪的事情。将以下内容添加到页面中以强制每次实际加载:

<script>
$.ajaxSetup({ cache: false });
</script>