2012-07-22 58 views
2

此刻我有了两个选择选项的形式,一个可与案件4PHP开关 - 只查看一个案例?

我有一个标签,所以我不能使用的一种形式查看的情况下0和一个,因为当我选择的网站刷新一个选项。然后它显示两个选项卡中的选项。

我试过只有一个选项。但那不工作。

这是选项卡/表单代码:

<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> 

,我得到了另一个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; 
    } 
+0

确切的问题是什么?你有两种选择,第二种依赖于第一种吗?如果用户在拳头选择了一些东西,那么Web应用程序应该更新第二个?请重新说明你的问题。 – SteAp 2012-07-22 14:06:25

回答

1

嗯,这是我想要的。

首先,我正在编辑组件。本来它是一个表格,查看我想查看游戏的顺序列表。

但是我想要一个标签菜单。一个是新游戏,另一个是流行游戏。

所以我创建了标签菜单/系统。然后将代码添加到每个div。所以他们有相同的代码和表单。但是当我在前。选项卡1(新游戏),然后按日期选择所选列表顺序。它可以查看所有最新的游戏。但是当我扯到另一个标签(流行游戏)时,它已经改变为查看最新的游戏。它就像是彼此的继承。

这是选项卡中的整个代码:

<div class="tab"> 
    <h2><a name="newgames" id="newgames">a</a></h2> 

<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> 



<?php 
/////////////////////////////////////// 
// GAMES BOXES START 
/////////////////////////////////////// 
    $db =& JFactory::getDBO(); 

    for($i=0;$i<count($this->games);$i++) { 
    $game=$this->games[$i]; 
    $slug=$game->slug; 

    $game->imgname=$this->params->get('dir_swf').$slug.'/'.$game->imgname; 
    $game->description=$db->getEscaped($game->description); 
    $game->description=str_replace("\\\"","\'",$game->description); 
    $game->namett=$db->getEscaped($game->name); 
    ?> 

<div class="game" style="display:block;"> 

<a style="border:0;" href="<?php echo JRoute::_('index.php/play?option=com_yoflash&view=game&id='.$slug.'&Itemid='.$this->Itemid); ?>" onmouseover="Tip('<strong><?php echo $game->namett; ?></strong><br/> <?php echo $game->description; ?>',WIDTH,300,FADEIN,0,DELAY,0,BGCOLOR, '<?php echo $this->params->get('ttip_bgcolor'); ?>', BORDERCOLOR,'<?php echo $this->params->get('ttip_bordercolor'); ?>',FONTCOLOR,'<?php echo $this->params->get('ttip_fontcolor'); ?>',FONTSIZE,'<?php echo $this->params->get('ttip_fontsize'); ?>',FONTFACE,'<?php echo $this->params->get('ttip_fontface'); ?>')" onmouseout="UnTip()"> 
<img src="<?php echo $game->imgname; ?>" width="71" height="56" alt="<?php echo $game->name; ?>"/><br/> 
<div class="gameName"><?php echo "<p>$game->name</p>"; ?></div> 
</a> 

<span class="info"><?php echo $game->description; ?></span> 

<span class="gamePlayed"><?php echo "<p>$game->stat_clicked <br/></p>".JText::_("<p> plays</p>") ;?></span> 

</div> 

在该选项卡(最新的游戏),我只希望查看最新的游戏

而另一个选项卡(热门游戏)看起来一模一样。

希望描述更多?

+0

我猜想发生的情况是发送到数据库的排序参数对于两个选项卡是相同的,因此两者中的信息都以相同的方式排序。所以你需要的是两个排序参数,例如$ sort_new和$ sort_popular,并且使用相同的逻辑单独设置它们,但是从$ _GET中的不同参数读取,是否有意义? – 2012-07-22 15:10:39

+0

是的,但我没有这么好的PHP,所以我不知道如何写这个.. :( – 2012-07-22 15:30:22

+0

好吧,在我最后的答案,我把$ _POST [“排序”]也许你可以交换$ _GET [ “sort_new”]和$ _GET [“sort_popular”]以及它使用不同选项卡中的$ _GET参数之一选择SQL的底部? – 2012-07-22 15:41:00

5

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"; 

因为$顺序是0..4你可能之间以及利用它将映射到数组索引并避免丑陋的切换并为自己节省一大堆浪费,混乱的线路的事实。

注意:如果$ type不符合正常的数值数组索引,也可以用关联数组来做到这一点,您只需在每个元素中手动指定数组索引,如“cat”=>“ORDER BY。 ..“在你的排序映射数组中,它应该工作相同。

+0

这个答案不适用于这个问题。不过,我很喜欢你的建议。 – SteAp 2012-07-22 14:06:58

+0

谢谢,但我该怎么做才能查看该订单,其他则需要选择一个表单? – 2012-07-22 14:12:32

+0

是啊我意识到我实际上并没有回答这个问题,只是清理了代码:/ – 2012-07-22 14:19:38

0

除了我上面的回答,我想你想要的是显示一个[select] html下拉列表,你可以在其中“挑选”一个排序顺序,并从数组中取出适当的SQL并使用它。所以我会建议是一样的东西里面的[选择]当选择+贴一个,它会这个

$sortIndex = $_POST["sort"]; 

$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" 
); 
$sortDesc = array(
"Sort by date added in descending order", 
"Sort by date added in ascending order", 
"Sort by name in ascending order", 
"Sort by name in descending order", 
"Sort by number of clicks in desending order" 
); 

$sortType = isset($sortMap[$sortIndex]) 
    ? $sortMap[$sortIndex] 
    : "ORDER BY date_added ASC"; 

<select name="sort"> 
    <?php foreach($sortDesc as $k=>$text): ?> 
    <option value="<?=$k?>" <?=$sortType==$k?"selected='selected'":""?> ><?=$text?></option> 
    <?php endforeach?> 
</select> 

,如果你的页面有类似这样的东西,那么你可以显示文本字符串从数组设置中选择适当的类型,显然我没有在实际的页面中测试过,我是ad-libbing,但我想你可以理解我想要做什么?

+0

之前有人说,它可以结合$ sortMap与$ sortDesc通过放置一个数组(“ORDER BY名称DESC”,“按名称以取消顺序排序”),并使用[0]和[1]数组索引来说无论你想使用sql还是文本描述。 – 2012-07-22 14:36:48

+0

刚刚提出了一个新的答案 – 2012-07-22 15:04:35