导航位置:首页 > 技术开发 > 建站技术开发

帝国CMS多值字段的值手动可控顺序 控制多值字段顺序

豆腐果2020-04-07围观:点赞:

  帝国的多值字段其实功能很强大,可以用于多种场合,比如临时手动增加的列表或者多个数据等,但是有时候我们会需要手动调整顺序,这样可以根据不同阶段的数据实现数据的手动更新,这里就增加一个上移和下移的功能。具体如下:

  建立多值字段后需要修改输入表单,如果投稿也需要支持就同时修改,具体代码如下(以下代码包含多值字段支持图片上传):

<script>
function domvadd_duozhi()
{
	var i;
	var str='';
	var oldi=0;
	var j=0;
	var addnum=0;
	addnum=parseInt(document.add.mvaddnum_duozhi.value);
	oldi=parseInt(document.add.mveditnum_duozhi.value);
	for(i=1;i<=addnum;i++)
	{
		j=i+oldi;
		str=str+'<tr><td align="center"><input type="text" name="duozhi_1[]" id="duozhi_1_'+j+'" value=""><a onclick="window.open(\'ecmseditor/FileMain.php?type=1&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=duozhi_1_'+j+'<?=$ecms_hashur[ehref]?>\',\'\',\'width=700,height=550,scrollbars=yes\');" title="选择已上传的文件"><img src="../data/images/changeimg.gif" border="0" align="absbottom"></a></td><td align="center"><input type="text" name="duozhi_2[]" id="duozhi_2_'+j+'" value=""></td><td align="center"><input type="text" name="duozhi_3[]" id="duozhi_3_'+j+'" value=""></td></tr>';
	}
	document.getElementById("mvadd_duozhi").innerHTML="<table width='100%' border=0 cellspacing=1 cellpadding=3>"+str+"</table>";
}
</script>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td>
		<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#DBEAF5">
        <tr>
          <td align="center" width="30%">回放小图</td><td align="center" width="50%">视频地址</td><td align="center" width="20%">标题</td></tr>
      </table>
	</td>
  </tr>
  <tr> 
    <td>
    <?php
    if($ecmsfirstpost==1)
    {
    ?>
		<table width='100%' border=0 cellspacing=1 cellpadding=3>
		<?php
		$editnum=3;
		for($i=1;$i<=$editnum;$i++)
		{
		?>
			<tr>
            <td align="center" width="30%"><input type="text" name="duozhi_1[]" id="duozhi_1_<?=$i?>" value=""><a onclick="window.open('ecmseditor/FileMain.php?type=1&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=duozhi_1_<?=$i?><?=$ecms_hashur[ehref]?>','','width=700,height=550,scrollbars=yes');" title="选择已上传的图片"><img src="../data/images/changeimg.gif" border="0" align="absbottom"></a></td>    
            <td align="center" width="50%"><input style="width:50%" type="text" name="duozhi_2[]" id="duozhi_2_<?=$i?>" value=""></td>
            <td align="center" width="20%"><input type="text" name="duozhi_3[]" id="duozhi_3_<?=$i?>" value=""></td></tr>
		<?php
		}
		?>
		</table>
    <?php
    }
    else
    {
		$editnum=0;
		if($r['duozhi'])
		{
			$r['duozhi']=stripSlashes($r['duozhi']);
			?>
			<div id="checkAndInverCheck">
			<table width='100%' border=0 cellspacing=1 cellpadding=3>
			<?php
			//录入项
			$j=0;
			$mvf_record=explode('||||||',$r['duozhi']);
			$mvf_count=count($mvf_record);
			for($i=0;$i<$mvf_count;$i++)
			{
				$j=$i+1;
				$mvf_field=explode("::::::",$mvf_record[$i]);
				?>
                <tr class="trmove">
				<td align="center">
					<input type="checkbox" name="duozhi_mvdelid[]" id="duozhi_mvdelid_<?=$j?>" value="<?=$j?>">删&nbsp;&nbsp;
					<input type="text" name="duozhi_1[]" id="duozhi_1_<?=$i?>" value="<?=$mvf_field[0]?>"><a onclick="window.open('ecmseditor/FileMain.php?type=1&classid=<?=$classid?>&infoid=<?=$id?>&filepass=<?=$filepass?>&sinfo=1&doing=1&field=duozhi_1_<?=$i?><?=$ecms_hashur[ehref]?>','','width=700,height=550,scrollbars=yes');" title="选择已上传的图片"><img src="../data/images/changeimg.gif" border="0" align="absbottom"></a>
                	<input type="hidden" name="duozhi_mvid[]" id="duozhi_mvid_<?=$j?>" value="<?=$j?>">
				</td>
				<td align="center"><input type="text" name="duozhi_2[]" id="duozhi_2_<?=$j?>" value="<?=$mvf_field[1]?>"></td>
				<td align="center"><input type="text" name="duozhi_3[]" id="duozhi_3_<?=$j?>" value="<?=$mvf_field[2]?>"></td>
				
				<td style="display: none"><input type="text" name="orderNum" size="3" value="<?=$i+1?>"/></td>
				<td><input type="button" name="upMove" value="↑上移"/></td>
				<td><input type="button" name="downMove" value="↓下移"/></td>
				</tr>
				<?php
			}
			?>
			</table>
		</div>
			<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
			<script type="text/javascript">
//上移 
$("input[name='upMove']").bind("click",function(){
  var $this = $(this);
  var curTr = $this.parents(".trmove");
  var prevTr = $this.parents(".trmove").prev();
  if(prevTr.length == 0){
    alert("已经第一行了,无法上移");
    return;
  }else{
    prevTr.before(curTr);
    sortNumber();//重新排序
  }
});
//下移
$("input[name='downMove']").bind("click",function(){
  
  var $this = $(this);
  var curTr = $this.parents(".trmove");
  var nextTr = $this.parents(".trmove").next();
  if(nextTr.length == 0){
    alert("已经最后一行,无法下移");
    return;
  }else{
    nextTr.after(curTr);
    sortNumber();//重新排序
  }
});
//排序
$("input[name='orderNum']").bind("change",function(){
  var $this = $(this);
  //获得当前行
  var curTr = $this.parents(".trmove");
  var curOrderNum = $this.val();
  //当前行同级的所有行
  var siblingsTrs = curTr.siblings();
  if(siblingsTrs.length >0){
    for(var i in siblingsTrs){
      var otherOrderNum = $(siblingsTrs[i]).children().find("input[name='orderNum']").val();
      if(parseInt(curOrderNum) <= parseInt(otherOrderNum)){
        $(siblingsTrs[i]).before(curTr);
        sortNumber();//重新排序
        break;
      }
    }
  }  
});
function sortNumber(){
  var allInput = $("#checkAndInverCheck").find("input[name='orderNum']");
  if(allInput.length != 0){
    for(var i=0;i<allInput.length;i++){
      var tempInput = allInput[i];
      tempInput.value = i + 1;
    }
  }
}
</script> 
			<?php
			$editnum=$j;
		}
    }
    ?>
    </td>
  </tr>
  <tr> 
    <td height="25">扩展数量: <input name="mveditnum_duozhi" type="hidden" id="mveditnum_duozhi" value="<?=$editnum?>">
      <input name="mvnum_duozhi" type="hidden" id="mvnum_duozhi" value="3">
      <input name="mvmust_duozhi" type="hidden" id="mvmust_duozhi" value="1">
      <input name="mvaddnum_duozhi" type="text" id="mvaddnum_duozhi" value="1" size="6"> <input type="button" name="Submit5" value="输出" onclick="javascript:domvadd_duozhi();"></td>
  </tr>
  <tr> 
    <td id="mvadd_duozhi"></td>
  </tr>
</table>

替换里面的“duozhi”字段即可。

内容页需要调用的时候用以下代码:

<?php
$exp=explode('||||||',$navinfor[duo]);
foreach($exp as $k=>$v)
{
    /*下一行是分割多值字段的每行中的每项*/
    $exp2=explode('::::::',$v);
     
    /* $exp2[0] $exp2[1] 以此类推分别是每行的第一个值 第二个值 第三个值 */
    echo '<li>'.$exp2[0].' '.$exp2[1].' '.$exp2[2].'</li>';
}
?>

 

共有0条评论
昵称/用户名:
验证码:
验证码

本站推荐

内容标签