开发者社区> 问答> 正文

求教:更改、清空指定的数组记录的php写法:报错

展开
收起
kun坤 2020-06-06 11:59:47 604 0
1 条回答
写回答
取消 提交回答
  • 每行的复选框 可以当做seturl数组中的下标;

    <input name='id[]' type='checkbox' value='<?=$k?>'/>

    1.更改指定的数组记录
    假设按钮标识是action=edit
    当用户选中0个或多个复选框,然后提交表单。相应的id会一起提交过去。
    更改记录的id号有了, 然后直接覆盖 下标对应的数组, 修改完成。
    
    2.删除指定的数组记录
    假设按钮标识是action=delete
    (同更改指定的数组记录 逻辑上是一致的。)
    用户选中0个或多个复选框,然后提交表单。相应的id会一起提交过去。
    id有了,直接删除数组对应的下标 实现删除。
    
    ######请问:  更改勾选的指定记录(如第3条数据)为“显示”状态('type'值改为'1'),activation.php中if($dopost=="show"),如何写啊?我写的$dquery = str_replace(array('1'), array('2'), $dquery);不成功。求大侠相助,不胜感激。


    activation.php

    <?php
    //删除(或清空)勾选的记录
    if($dopost=="del")
    {
      $ids = explode('-',$ids);
      $dquery = "";
      foreach($ids as $id)
      {
        if($dquery=="")
        {
          $dquery .= "id='$id' ";
        }
        else
        {
          $dquery .= " OR id='$id' ";
        }
      }
      if($dquery!="") $dquery = " WHERE ".$dquery;
     // 这里不会写
      $dquery = str_replace(array('1'), array('2'), $dquery);
      // ShowMsg("成功删除指定的记录!","test.php");
      exit();
    }
    
    //更改勾选的记录为“显示”状态('type'值为'1')
    if($dopost=="show")
    {
      $ids = explode('-',$ids);
      $dquery = "";
      foreach($ids as $id)
      {
        if($dquery=="")
        {
          $dquery .= "id='$id' ";
        }
        else
        {
          $dquery .= " OR id='$id' ";
        }
      }
      if($dquery!="") $dquery = " WHERE ".$dquery;
     // 这里不会写
      $dquery = str_replace(array('1'), array('2'), $dquery);
      ShowMsg("成功更改勾选的记录!","./test.php");
      exit();
    }
    
    //更改勾选的记录为“隐藏”状态('type'值为'2')
    if($dopost=="hide")
    {
      $ids = explode('-',$ids);
      $dquery = "";
      foreach($ids as $id)
      {
        if($dquery=="")
        {
          $dquery .= "id='$id' ";
        }
        else
        {
          $dquery .= " OR id='$id' ";
        }
      }
      if($dquery!="") $dquery = " WHERE ".$dquery;
     // 这里不会写
      $dquery = str_replace(array('1'), array('2'), $dquery);
      ShowMsg("成功更改指定的记录!","./test.php");
      exit();
    }
    ?>



    test.php


    <?php 
    $tips = '';
    if( isset($_GET['act']) && $_GET['act']=='seturl' && isset($_POST['edit']) && $_POST['edit']==1){
    	
    	$datas = $_POST;
    	
    	foreach($seturl['type'] as $k=>$v){
    
    		if(trim($seturl['oldurl'][$k])==''){
    			unset($seturl['type'][$k]);
    			unset($seturl['oldurl'][$k]);
    			unset($seturl['newurl'][$k]);
    			
    		}
    		
    	}
    	if(file_put_contents('data.php',"<?php\n \$seturl =  ".var_export($seturl,true).";\n?>")){
    		$tips = '<span class="green" style="font-size:18px; margin-bottom:15px; display:block;">修改成功!</span>';
    	}else{
    	    $tips = '<span class="red" style="font-size:18px; margin-bottom:15px; display:block;">修改失败!</span>';	
    	}
        
    }
    
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!--  -->
    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    
    
    <script language="javascript">
    function ReSel(){	
      for(i=0;i<document.configform.logs.length;i++){
        document.configform.logs[i].checked = true;  //如果是实现【全不选】的话,改成false即可
      }
    }
    function SeSel(){	
      for(i=0;i<document.configform.logs.length;i++){
        if(document.configform.logs[i].checked) document.configform.logs[i].checked = false;
        else document.configform.logs[i].checked = true;
      }
    }
    function DelSel(){
       var nid = getCheckboxItem();
       if(nid==""){
          alert("请选择项目!\r\n");
          return ;
       }
       location.href = "activation.php?dopost=del&ids="+nid;
    }
    function ShowSel(){
       var nid = getCheckboxItem();
       if(nid==""){
          alert("请选择项目!\r\n");
          return ;
       }
       location.href = "activation.php?dopost=show&ids="+nid;
    }
    function HideSel(){
       var nid = getCheckboxItem();
       if(nid==""){
          alert("请选择项目!\r\n");
          return ;
       }
       location.href = "activation.php?dopost=hide&ids="+nid;
    }
    //获得选中文件的文件名
    function getCheckboxItem(){
       var allSel="";
       if(document.configform.logs.value) return document.configform.logs.value;
       for(i=0;i<document.configform.logs.length;i++)
       {
         if(document.configform.logs[i].checked){
           if(allSel=="")
             allSel=document.configform.logs[i].value;
           else
             allSel=allSel+"-"+document.configform.logs[i].value;
         }
       }
       //alert(allSel);   //1-2-7
       return allSel;	
    }
    </script>
    
    
    </head>
    
    <body>
    <!--  $nav = 'seturl';include('head.php'); -->
    
    <div id="hd_main">
      <div align="center"><?php echo $tips?></div>
     <form name="configform" id="configform" action="./test.php?act=seturl&t=<?php echo time()?>" method="post">
    <input name="edit" id="edit" type="hidden" value="1" />
    <table width="100%" border="0" align="center" cellpadding="s" cellspacing="1" class="tablecss">
    <tr class="thead">
    <td align="center">数组管理测试</td>
    </tr>
    <?php
    if(is_file('data.php')){
    	include('data.php');
    	if(is_array($seturl)){
    foreach($seturl['type'] as $k=>$v){
    ?>
    
    <tr height="26" align="center" bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';"
          onMouseOut="javascript:this.bgColor='#FFFFFF';">
          
        <td valign="top" style="padding-left:0px;">
          <!-- <input name='logs' type='checkbox' class='np' id="logs" value='false' /> -->
    	  <input name="id[]" type="checkbox" class="np" id="logs" value="<?=$k?>"/>
          <select name="seturl[type][]">
          <option value="1"<?php echo $seturl['type'][$k]==1?' selected="selected"':''?>>显</option>
          <option value="2"<?php echo $seturl['type'][$k]==2?' selected="selected"':''?>>隐■■■■■■</option>
          
          </select> <input name="seturl[oldurl][]" type="text" value="<?php echo $seturl['oldurl'][$k]?>" size="45" />
          to <input name="seturl[newurl][]" type="text" value="<?php echo $seturl['newurl'][$k]?>" size="45" />
        </td>
        </tr>
    
    <?php
    }
    	}
    }
    ?>
    <tr height="26" align="center" bgcolor="#FFFFFF" onMouseMove="javascript:this.bgColor='#FCFDEE';"
          onMouseOut="javascript:this.bgColor='#FFFFFF';">
        <td valign="top" style="padding-left:0px;">
    	<input name="id[]" type="checkbox" class="np" id="logs" value="<?=$k?>"/>
    	<select name="seturl[type][]">
          <option value="1">显</option>
          <option value="2">隐■■■■■■</option>
          
          </select> <input name="seturl[oldurl][]" type="text" value="" size="45" />
          to <input name="seturl[newurl][]" type="text" value="" size="45" />
        </td>
        </tr>
    
    
    <tr id="fbox">
    <td colspan="2" align="left" style="padding-left:20px;">
    <a class="coolbg" onClick="ReSel();" >全选</a>
        <a class="coolbg" onClick="SeSel();" >反选</a>
        <a class="coolbg" onClick="DelSel();">删除</a>
    	<a class="coolbg" onClick="ShowSel();">显示</a>
    	<a class="coolbg" onClick="HideSel();">隐藏</a>
    	<input id="configSave" type="submit" value="     保 存     ">     <input id="add" type="button" value="    新增加一条     "> (删除一条可清空该条保存)</td>
    </tr>
    </table>
    </form>
    
    </div><!--main-->
    <script type="text/javascript">
    $(function(){
    	$("#add").click(function(){
    		$("#fbox").before('<tr height="26" align="center" ><td valign="top" style="padding-left:0px"><input name="id[]" type="checkbox" class="np" id="logs" value="<?=$k?>"/><select name="seturl[type][]"><option value="1">显</option><option value="2">隐■■■■■■</option></select> <input name="seturl[oldurl][]" type="text" value="" size="45"> to <input name="seturl[newurl][]" type="text" value="" size="45"></td></tr>');
    	});
    	
    });
    </script>
    
    </body>
    </html>



    data.php


    <?php
     $seturl =  array (
      'type' => 
      array (
        0 => '1',
        1 => '2',
        2 => '2',
        3 => '1',
        4 => '1',
        5 => '1',
        6 => '1',
        7 => '1',
        8 => '1',
        9 => '1',
      ),
      'oldurl' => 
      array (
        0 => 'oldurl1',
        1 => 'oldurl2',
        2 => 'oldurl3',
        3 => 'oldurl4',
        4 => 'oldurl5',
        5 => 'oldurl6',
        6 => 'oldurl7',
        7 => 'oldurl8',
        8 => 'oldurl9',
        9 => '33',
      ),
      'newurl' => 
      array (
        0 => 'newurl1',
        1 => 'newurl2',
        2 => 'newurl3',
        3 => 'newurl4',
        4 => 'newurl5',
        5 => 'newurl6',
        6 => 'newurl7',
        7 => 'newurl8',
        8 => 'newurl9',
        9 => '33',
      ),
    );
    ?>





    ######

    dopost=show的url请求 文件中好像没有吧
    这里是点击保存按钮,实现修改选中项记录的功能

    更改一条记录的流程:

    用户选中第3条记录的复选框,

    将其中的显示/隐藏和文本框字段修改为新值

    然后点击保存按钮

    提交给php文件处理,将传过来的数组为seturl的记录,数组下标为2的项 重新赋值

    实现保存


    另外,也可以将seturl的数组对应的值 全部重新赋值,这个是全篇保存了。

    2020-06-06 11:59:56
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载