php将选定的若干条记录导出到excel表中

jwhjwh1111 2017-07-22 03:57:27
利用phpexcel已经可以实现将整个数据表中的内容导出到excel,当然这个比较简单,基本就是用别人的代码。但是导出若干条记录,怎么试都没用,卡了两天了吧,实在不会了。



子复选框的值是通过很笨的echo方式得到的。先查询数据库将数据表中的一条数据存到数组中,再echo出来。

<td width="40"><input id="subBox" name="subBox" type="checkbox" value="<?php echo $row->id;?>"></th>


批量导出那里是有一个js函数。

function piliang_daochu()
{
var chckBox = document.getElementsByName("subBox");
var num = chckBox.length;
var ids = "";
for(var index =0 ; index<num ; index++){
if(chckBox[index].checked){
ids=ids + chckBox[index].value+",";
}
}
var strs= new Array();
strs=ids.split(",");
if(ids!=""){
if(window.confirm("确定导出所选记录?")){
$.ajax( {
type:'GET',
url:"daochu.php",
data:{
text:strs
},
success : function(data) {
alert("导出成功");
},
error : function(data) {
alert("系统错误,导出失败");
}
});
}
}else{
alert("请选择要导出的记录");
}
}


处理页面的代码是
$conn=mysql_connect("localhost","root","rootroot") or die("数据库服务器连接错误".mysql_error());
mysql_select_db("aitem",$conn) or die("数据库访问错误".mysql_error());
mysql_query("set names utf8");
$id=$_GET[text];
$boxgeshu=count($id);
for ($i=0;$i<($boxgeshu-1);$i++)
{
$sql = "select * from iteminfo where id='$id[$i]'";
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query))
{
$arr[] = $row;

}
echo mysql_error();
}


经过自己测试前面那个页面的strs数组获取的值是没有问题的(大概,自己一个个alert试出来的),处理页面,将id[0]=2,id[0]=3,单独运行,也可以导出这两行数据,但不知道为什么两个页面结合在一起就不行了。

求教。。。万分感谢!
...全文
228 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwhjwh1111 2017-08-05
  • 打赏
  • 举报
回复
呼,已经放弃治疗了。也不好意思再把陈年旧帖顶上来了。就结贴吧。 自己是看不出什么问题了,问题先悬在这里吧。本帖的两位回复者,回复地都挺用心。谢谢你们
jwhjwh1111 2017-07-26
  • 打赏
  • 举报
回复
csdn引用没有提醒的吗 @hongmei85 能否再看下呢?
没有风筝的线 2017-07-25
  • 打赏
  • 举报
回复
有一种sql叫 where id in 1,2,3,4,5,6,7
jwhjwh1111 2017-07-25
  • 打赏
  • 举报
回复
引用 3 楼 hongmei85 的回复:

非常感谢!写的很详细。

你写这个的意思应该是点击提交后,sql后面会出现数据库查询语句的结果吧。不过似乎不起作用。
我已经引用了js-1.4.4,这个应该起作用,新建的form2.php中的内容是这个:
if(isset($_GET['text'])){
echo 'select * from iteminfo where id in (' . implode (',',$_GET['text']) . ')';
exit();
}

其余代码全部都在第一个php中。
我刚才仔细测试了下,js获取值获取数值都没问题。应该是通过ajax通过GET方法将数组传递给了form2.php,可不知道为什么,使用var_dump(_GET['text']),exit,后,返回不了结果,没有任何提示。不知道数据有没有传输成功。

我之前在想,会不会是数据传值成功后,后面的生成excel的一长串代码就没有再执行下去了。

不知道能否再花个几分钟的时间给出个看法?谢谢!
hongmei85 2017-07-25
  • 打赏
  • 举报
回复
<?php
 

if(isset($_GET['text'])){
    echo 'select * from iteminfo where id in (' . implode (',',$_GET['text']) . ')';
    exit();
}
 
 
?>
 <table>
 <form method="post" action="?">
	<tr>
	<td width="40"><input id="subBox" name="subBox" type="checkbox" value="1">1</td>
 </tr>
 <tr>
	<td width="40"><input id="subBox" name="subBox" type="checkbox" value="2">2</td>
 </tr>
 <tr>
	<td width="40"><input id="subBox" name="subBox" type="checkbox" value="3">3</td>
 </tr>
 <tr>
	<td width="40"><input type="button" value="提交" onclick="piliang_daochu()"></td>
 </tr>
 </form>
 </table>

sql:<span id="res"></span>
 
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function piliang_daochu()
{
 var chckBox = document.getElementsByName("subBox"); 
        var num = chckBox.length; 
        var ids = "";  
        for(var index =0 ; index<num ; index++){  
            if(chckBox[index].checked){  
                ids=ids + chckBox[index].value+",";                
            }  
        }  
        var strs= new Array(); 
        strs=ids.split(","); 
		strs.pop();
        if(ids!=""){  
            if(window.confirm("确定导出所选记录?")){  
                $.ajax( {  
                    type:'GET',
                    url:"form2.php",
                    data:{
                         text:strs
                         }, 
                    success : function(data) {  
                        alert("导出成功"); 
						$('#res').text(data);
                    },  
                    error : function(data) {  
                        alert("系统错误,导出失败");  
                    }  
                });  
            }  
        }else{  
            alert("请选择要导出的记录");  
            }  
 } 
</script>
jwhjwh1111 2017-07-25
  • 打赏
  • 举报
回复
引用 1 楼 a1151879477 的回复:
有一种sql叫 where id in 1,2,3,4,5,6,7
谢谢,学习了,原来还有这么个语句。这个对于已经知道的记录,比较好使。 不过我想将任意选取的记录导出,现在我觉得关键是要获取选定的checkbox的值形成的数组,不过怎么将checkbox的value形成一个数组,传递到另一个页面呢?js中的数组应该是字符串数组,php识别的数组大概是“键-值”这样格式的,不知道怎么做才好。 我现有的代码,是我在网上找的代码,忘了在哪儿找的了。对js很不熟悉,真的想做一次伸手党,直接有人给代码

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧