And*_*son 2 php joomla case switch-statement
目前我有一个有两个选择选项的表单,一个可以查看案例0,另一个可以查看案例4.
我有一个标签,所以我不能使用表单,因为当我选择一个选项时网站刷新.然后它显示两个选项卡中的选项.
我试过只有一个选项.但那不行.
这是选项卡/表单代码:
<div class="tab1">
<form action="<?php echo JRoute::_('index.php'); ?>" method="post">
<input type="hidden" name="option" value="com_yoflash" />
<input type="hidden" name="view" value="category" />
<input type="hidden" name="mochicat" value="<?php echo $this->cat->catid; ?>" />
<select name="order" size="1" onchange="submit();">
<option value="0" <?php if($this->order=="0") echo "selected=\"selected\""; ?>><?php echo JText::_('ORDER_DATE_NEWEST'); ?></option>
<option value="4" <?php if($this->order=="4") echo "selected=\"selected\""; ?>><?php echo JText::_('ORDER_POPULAR'); ?></option>
</select>
<input type="hidden" name="Itemid" value="<?php echo $this->Itemid; ?>" />
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
我得到了另一个完全相同的div选项卡.在第一个div选项卡中,我想查看案例0或订单0.
在第二个div选项卡中,我想查看case4或order 4.但我不希望任何形式只是查看该订单.而不是通过表格选择.
这是切换代码:
$limitstart=JRequest::getInt('limitstart',0);
if($order==-1) {
$tmp=$session->get('order');
if(empty($tmp)) {
$order=0;
}
else {
$order=$session->get('order');
}
}
$session->set('order',$order);
$order=$session->get('order');
$Itemid=JRequest::getInt('Itemid',NULL);
switch($order){
case 0:
$str="ORDER BY date_added DESC";
break;
case 1:
$str="ORDER BY date_added ASC";
break;
case 2:
$str="ORDER BY name ASC";
break;
case 3:
$str="ORDER BY name DESC";
break;
case 4:
$str="ORDER BY stat_clicked DESC";
break;
default:
$str="ORDER BY date_added ASC";
break;
}
Run Code Online (Sandbox Code Playgroud)
ewww,开关有点难看,这里有一个更好的版本:
$sortMap = array(
"ORDER BY date_added DESC",
"ORDER BY date_added ASC",
"ORDER BY name ASC",
"ORDER BY name DESC",
"ORDER BY stat_clicked DESC"
);
$str = isset($sortMap[$order])
? $sortMap[$order]
: "ORDER BY date_added ASC";
Run Code Online (Sandbox Code Playgroud)
由于$ order介于0..4之间,你可能会利用它将映射到数组索引并避免丑陋的切换这一事实,并在此过程中为自己节省一堆浪费,混乱的行.
注意:如果$ type不符合正常的数值数组索引,你也可以使用关联数组执行此操作,您只需手动指定每个元素中的数组索引,如"cat"=>"ORDER BY ..."您的排序映射数组,它应该相同的工作.