帝国CMS调用复选框字段怎么去除竖线“|”

列表页list.var调用复选框全部内容,去掉最前和最后的| 

通过搜索论坛得出,只调用复选框中其中一个的话是以下方法,

————————————————-
复选框字段名为:classtype,分割代码是:$fr=explode(“|”,$r[classtype]);
在list.var中的代码是:
$fr=explode(“|”,$r[classtype]);
$listtemp=’请选择:’.$fr[1].”;
————————————————-

因为是多选,可能选2项,也可能选3项,还可能选10项,用$fr[1]这是只调用其中一个选项,但是我想把所有已经选择的选项都调用出来,怎么个弄法儿,知道的望不吝赐教

======================

解决方法如下:

$rbz=substr($r[字段名],0,-1);  //去掉最后一个|
$lbz=substr($rbz,1);                //去掉第一个|
$fr=str_replace(“|”,”、”,$lbz);   //把|换成你需要的符号,我的是、
需要输出的地方写:’.$fr.’

已经懂的也别吐我啊~~


在内容页面上显示有专门的分隔标签:
[echocheckbox]’字段’,’分隔符'[/echocheckbox]


灵动标签模板内请使用这段代码:

<?=esub(str_replace(“|”,” “,$bqr[test]),10)?>

具体解析:

$bqr[test] 代表灵动标签调用字段test

str_replace(“|”,” “,$bqr[test] 代表替换结果中的“|”为空

esub(str_replace(“|”,” “,$bqr[test]),10) 代表截取10个字符

<?=esub(str_replace(“|”,” “,$bqr[test]),10)?> 代表模板内插入这段PHP功能代码的开始和结束

 


 

列表页、内容页复选框分割显示

注意:复选框字段要用text或varchar型,不能用int型
(复选框是把所有选定的值用“|”隔开放在一个字段里,因为是INT类型所以不能把“|”保存到数据库里)

标签分割:复选项输出函数 (echocheckbox)
[echocheckbox]’字段’,’分隔符'[/echocheckbox]
注释:分隔符用于复选项输出内容后的间隔
如:一个复选项字段“se”的输出选项为“2 3 4”,分隔符为逗号“,”
若果直接输出字段[!–se–]时,显示为|2|3|4|
标签:[echocheckbox]’se”,’,'[/echocheckbox]
效果:2,3,4

如果分隔符为空,即:[echocheckbox]’se”,”[/echocheckbox] 输出效果:234
如果分隔符为空格符(&nbsp;或点一下空格键的空格),
即:[echocheckbox]’se”,’&nbsp;'[/echocheckbox] 或 [echocheckbox]’se”,’ ‘[/echocheckbox]输出效果:2 3 4
如果分隔符为|,即:[echocheckbox]’se”,’|'[/echocheckbox] 输出效果:2|3|4

==============================================
方法1、分割法

情况1、
背景,想在没个新添加的内容有个颜色选择爱好
思路:做一复选框字段,选择为数字 + 几张以数字命名的颜色图片
具体步骤:
1、新建颜色字段
后台–系统–数据表与系统模型–管理数据表–新闻系统数据表 ( phome_ecms_news )–(点击)[管理字段]–增加字段
字段名:se
字段标识:颜色
字段类型:字符型0-255字节(VARCHAR) 长度:
输入表单显示元素:复选框(checkbox)
选项:1 2 3 4 5 注释:数字一回车隔开
—————————
2、更新系统模型表单:
后台–系统–数据表与系统模型–管理数据表–新闻系统数据表 ( phome_ecms_news )–(点击)[管理系统模型] –(找到并点击)[修改]
①、在字段标识找到下面的“颜色”并在后面的“□”勾选对应选项:录入项、可增加、可修改、列表模板、内容模板、
②、勾选:录入表单模板(□自动生成表单模板)
—————————
3、制作5张颜色不同的、大小12*12像素(和字体的大小一样)的图片
—————————
4、前台分割并调用,把下面的代码放到模板合适的位置
内容模板
格式1、
<?php
$a=explode(‘|’,$navinfor[se]);/*分割复选框字段*/
foreach($a as $key=>$val){
if($key>0 && $key<(count($a)-1)){
$colorimg.='<img src=”‘.$public_r[newsurl].’img/’.$val.’.jpg” />’;/*循环输出勾选了的对应的颜色图片*/
}}?>
<?=$colorimg?>

格式2、
<?php
$fx=explode(“|”,$navinfor[‘se’]);
for($f=1;$f<count($fx)-1;$f++)
{
?>
<img src=”[!–news.url–]img/<?=$fx[$f]?>.jpg” />
<?php
}
?>

格式3、无法全部输出,除非把<?=$fr[1]?>、<?=$fr[2]?>、<?=$fr[3]?>。。。等写全。
好处是,可以控制输出数量和自己排序,如:3、2、4
<?php
$fr=explode(“|”,$navinfor[se]);
?>
<img src=”[!–news.url–]img/<?=$fr[1]?>.jpg” />
<img src=”[!–news.url–]img/<?=$fr[2]?>.jpg” />
<img src=”[!–news.url–]img/<?=$fr[3]?>.jpg” />

列表模板
格式1、
$a=explode(‘|’,$r[se]);/*分割复选框字段*/
foreach($a as $key=>$val){
if($key>0 && $key<(count($a)-1)){
$colorimg.='<img src=”‘.$public_r[newsurl].’img/’.$val.’.jpg” />’;/*循环输出勾选了的对应的颜色图片*/
}}
$listtemp='<span>颜色:</span>’.$colorimg.”;

格式2、
$fx=explode(“|”,$r[‘se’]);
for($f=1;$f<count($fx)-1;$f++)
{ $colorimg.='<img src=”‘.$public_r[newsurl].’img/’.$fx[$f].’.jpg” />’; }
$listtemp='<span>颜色:</span>’.$colorimg.”;

或 不加中括号{}
$f2=explode(“|”,$r[se]);
for($f=1;$f<count($f2)-1;$f++)
$soft.='<img src=”‘.$public_r[newsurl].’img/’.$f2[$f].’.jpg” />’;

$listtemp='<li>’.$soft.'</li>’;

<img src=”‘.$public_r[newsurl].’img/’.$f2[$f].’.jpg” />

格式3、无法全部输出,除非把<?=$fr[1]?>、<?=$fr[2]?>、<?=$fr[3]?>。。。等写全。
好处是,可以控制输出数量和自己排序,如:3、2、4

$fr=explode(“|”,$r[se]);
$listtemp='<span>颜色:</span><img src=”‘.$public_r[newsurl].’img/’.$fr[1].’.jpg” /><img src=”‘.$public_r[newsurl].’img/’.$fr[2].’.jpg” />’;
——————————————————-
情况2、复选框值分割后添加逗号(,)进行隔开各个值,
重点:去除最后一个逗号
如:值1,值2,值3,

内容模板
<?php
$f2=explode(“|”,$navinfor[se]);
for($f=1;$f<count($f2)-1;$f++)
$soft.=””.$f2[$f].($f==count($f2)-2?”:’,’);
{
?>
<?=$soft?>
<?php
}
?>

<?php
$f2=explode(“|”,$navinfor[se]);
for($f=1;$f<count($f2)-1;$f++)
{
?>
<?=($f==1?”:’,’).$f2[$f]?>
<?php
}
?>
列表模板
$f2=explode(“|”,$r[se]);
for($f=1;$f<count($f2)-1;$f++)
$soft.=””.$f2[$f].($f==count($f2)-2?”:’,’);
$listtemp='<span>复选内容:</span>’.$soft.”;

$f2=explode(“|”,$r[se]);
for($f=1;$f<count($f2)-1;$f++)
$soft.=($f==1?”:’,’).$f2[$f];
$listtemp='<span>复选内容:</span>’.$soft.”;
——————————————————-
情况3、复选框带链接

⑴、分割前加链接
添加字段时替换(如:在“输入表单替换html代码”替换)
如:
字段:场所
值:changsuo
复选值:商务洽谈、家庭聚会、情侣约会
给“商务洽谈”加链接,代码如下:
<input name=”changsuo[]” type=”checkbox” value=”<a href='<?php $classurl=$addurl=$listurl=”;$classurl=$public_r[newsurl];$addurl=’down/suoyin/byfiletype/zhidu/’;$listurl=$classurl.$addurl;echo $listurl?>’ target=’_blank’>商务洽谈</a>” <?=strstr($r[changsuo],”商务洽谈”)?’ checked’:”?>>商务洽谈
<input name=”changsuo[]” type=”checkbox” value=”家庭聚会”<?=strstr($r[changsuo],”|家庭聚会|”)?’ checked’:”?>>家庭聚会
<input name=”changsuo[]” type=”checkbox” value=”情侣约会”<?=strstr($r[changsuo],”|情侣约会|”)?’ checked’:”?>>情侣约会
<input name=”changsuo[]” type=”checkbox” value=””<?=strstr($r[changsuo],”||”)?’ checked’:”?>>

注意:
①、down/suoyin/byfiletype/zhidu/ 为相对地址 前台为:http://127.0.0.1/down/suoyin/byfiletype/zhidu/
②、<?=strstr($r[changsuo],”商务洽谈”)?’ checked’:”?> 中已没有| (即以前为:|商务洽谈|)
————————–
⑵、分割后加链接
内容模板
<?php
$fr=explode(“|”,$navinfor[字段名]);
for($f=1;$f<count($fr)-1;$f++)
{
?>
<a href=”链接”><?=$fr[$f]?></a>
<br>
<?php
}
?>

链接为:<a href=”/dg2/e/action/ListInfo.php?classid=34&ph=1&se=<?=$fr[$f]?>”><?=$fr[$f]?></a>
链接可以链接到搜索或结合项 ,
注意:后台–系统–数据表与系统模型–管理数据表–(选择你的数据表)管理系统模型–修改
复选框字段要选择“搜索项”和“结合项”
一般选,模糊匹配
列表模板
$arr = explode(“|”,$r[se]);
array_shift($arr);
array_pop($arr);
foreach($arr as $value)
{
$checkboxdata1.='<a href=”[!–news.url–]/e/action/ListInfo.php?classid=34&ph=1&se=’.$value.'” target=”_blank”>’.$value.'</a>&nbsp;&nbsp;’;
}
$listtemp= ‘ ‘.$checkboxdata1.’ ‘;

====================================================

方法2、替换法

内容模板
方法①
<?php
$rbz=substr($navinfor[se],0,-1); //去掉最后一个|
$lbz=substr($rbz,1); //去掉第一个|
$fr=str_replace(“|”,”、”,$lbz); //把|换成你需要的符号,我的是、
?>
需要输出的地方写:<?=$fr?>

来个案例:
复选框的字段
字段名称:场所
字段值:changsuo
输出内容:|家庭聚会|情侣约会|随便吃吃|商务洽谈|朋友聚会|公司聚会|大型聚会|

在内容模板的代码是:<span>适合场合:</span><p><?=str_replace(“|”,”</p><p>”,$navinfor[changsuo])?></p>
出来效果是:<p></p><p>家庭聚会</p><p>情侣约会</p><p>随便吃吃</p><p>商务洽谈</p><p>朋友聚会</p><p>公司聚会</p><p>大型聚会</p><p></p>

希望得到的效果是:<p>家庭聚会</p><p>情侣约会</p><p>随便吃吃</p><p>商务洽谈</p><p>朋友聚会</p><p>公司聚会</p><p>大型聚会</p>
问题是:前后多出了<p></p>
请问,有什么办法做到我那效果,求代码

答案:再把<p></p>替换一次为空,代码如下:
<?php
$navinfor[changsuo]=str_replace(“|”,”</p><p>”,$navinfor[changsuo]);
$navinfor[changsuo]=str_replace(“<p></p>”,””,”<p>”.$navinfor[changsuo].”</p>”);
echo $navinfor[changsuo];
?>

 

方法②、

列表模板
方法①、
$rbz=substr($r[se],0,-1); //去掉最后一个|
$lbz=substr($rbz,1); //去掉第一个|
$fr=str_replace(“|”,”、”,$lbz); //把|换成你需要的符号,我的是、
需要输出的地方写:
$listtemp='<span>复选内容:</span>’.$fr.”;

方法②、

==================================
方法3、复选框的判断
内容模板
<?php
if(strstr($navinfor[字段名],’|1|’))
{
?>
住宅
<?php
}
?>

<?php
if(stristr($navinfor[字段名],”|1|”))
{
?>
有选择1时显示
<?php
}
elseif(stristr($navinfor[字段名],”|2|”))
{
?>
有选择2时显示
<?php
}
?>

演示效果图均和网站一模一样,如有不同,全额退款!
建站奇 » 帝国CMS调用复选框字段怎么去除竖线“|”
在线客服
在线客服
热线电话
QQ客服

专业的Ecms模板制作团队品牌,提供优质网站模板、网站开发制作服务。

模板下载 帝国教程