萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1982|回复: 6

今日疑问(已解决): 数组作为关键字的搜索结果, 在翻页中传递的问题。。。。PHP

[复制链接]
发表于 2009-3-31 16:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
本帖最后由 Unbekannt 于 2009-4-1 14:21 编辑

基本想法, 如图书馆一样, 当$data为空时, 则搜索全部, 成功, 翻页也没问题。。。
但是当$data有部分关键字时, 则作为一个数组对相应的文本框进行搜索, 现在搜索结果成功, 并且能正常显示, 但是是在翻页的时候。。。总是变成显示数据库里的全部数据。。。想了很多方法也没有能有效传递搜索值的。。。本来想用GET。。。不知道对不对。。。

另外, 已经在SQL中使用了limit。。。

以下是用到的程序。。。$data是从html中POST过来的搜索值。。。

怎么才能实现翻页呢。。。。郁闷阿。。。

========================已解决=====================
hehehe~~~~多谢了。。。我用了cookie解决了。。。Session我用于对用户组的判断了, 所以在这里就不跟搜索条件混在一起了。。。

就是每次从新搜索的时候得刷新cookie, 这里我用了笨方法, 就是当POST的时候把这里的cookies都清零。。。呵呵呵, 用了笨方法, 不过可以运行了。。。

p.s.: 刚才编辑贴子的时候本能的ctrl+s了一下。。。


====================search.php====================

if($_SERVER['REQUEST_METHOD']=='POST')
{
        if($_POST['lastname'])
                $data['F_BDT_AUTOR'] = $_POST['lastname'];

        if($_POST['othername'])
                $data['F_BDT_F_AUTOR'] = $_POST['othername'];

        if($_POST['title'])
                $data['F_BDT_TITEL'] = $_POST['title'];

        if($_POST['utitle'])
                $data['F_BDT_UTITEL'] = $_POST['utitle'];

        if($_POST['pagenr'])
                $data['F_BDT_PAGENR'] = $_POST['pagenr'];

        if($_POST['year'])
                $data['F_BDT_YEAR'] = $_POST['year'];

        if($_POST['location'])
                $data['F_BDT_LOC'] = $_POST['location'];

        if($_POST['s01'])
                $data['F_BDT_IS_S01'] = 1;

        if($_POST['s02'])
                $data['F_BDT_IS_S02'] = 1;
       
        if($_POST['s03'])
                $data['F_BDT_IS_S03'] = 1;
       
        if($_POST['s04'])
                $data['F_BDT_IS_S04'] = 1;
       
        if($_POST['s05'])
                $data['F_BDT_IS_S05'] = 1;
       
        if($_POST['s06'])
                $data['F_BDT_IS_S06'] = 1;
       
        if($_POST['s07'])
                $data['F_BDT_IS_S07'] = 1;
       
        if($_POST['s08'])
                $data['F_BDT_IS_S08'] = 1;
       
        if($_POST['s09'])
                $data['F_BDT_IS_S09'] = 1;
       
        if($_POST['s10'])
                $data['F_BDT_IS_S10'] = 1;
       
        if($_POST['s11'])
                $data['F_BDT_IS_S11'] = 1;
       
        if($_POST['s12'])
                $data['F_BDT_IS_S12'] = 1;
       
        if($_POST['s13'])
                $data['F_BDT_IS_S13'] = 1;
       
        if($_POST['s14'])
                $data['F_BDT_IS_S14'] = 1;
       
        if($_POST['s15'])
                $data['F_BDT_IS_S15'] = 1;
       
        if($_POST['s16'])
                $data['F_BDT_IS_S16'] = 1;
       
        if($_POST['s17'])
                $data['F_BDT_IS_S17'] = 1;
       
        if($_POST['s18'])
                $data['F_BDT_IS_S18'] = 1;
       
        if($_POST['s19'])
                $data['F_BDT_IS_S19'] = 1;
       
        if($_POST['s20'])
                $data['F_BDT_IS_S20'] = 1;

        if($_POST['checkpdf'])
                $data['F_BDT_PDF_YES'] = 1;
       
        if($_POST['checkcontent'])
                $data['F_BDT_CONTENT_YES'] = 1;
}

if(!$_GET['page'])
        $curr_page = 1;
else
        $curr_page = $_GET['page'];

$pagesize = 10;

$list = $doc->GetDocList($curr_page,$pagesize,$data);

if($data)
{
        $DocCount = $doc->GetDocCount($data);
}else{
        $DocCount = $doc->GetDocCount2($data);
}

$pagecount = ceil($DocCount / $pagesize);
if(!$pagecount) $pagecount=1;

<html>
...
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="2">
                <?php echo Page($pagecount,$curr_page,$pagesize,$DocCount);?>
...
...
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2009-3-31 16:06 | 显示全部楼层
================Page()方法=================
function ParseUrl()
{
        $url = $_SERVER['REQUEST_URL'];
        if(strpos($url,'?'))
        {
                $file = substr($url,0,strpos($url,'?'));
                $para = substr($url, strpos($url,'?')+1,strlen($url));
                $array = explode('&',$para);
                for($i=0;$i<sizeof($array);$i++)
                {
                        $tmp = array();
                        $tmp = explode("=",$array[$i]);
                        if($tmp[0]!='page')
                        {
                                if($i!=0)
                                $link .= "&";
                                $link .= $array[$i];
                        }
                }
                $link = $file."?MenuId={$_GET['MenuId']}".$link."&";
        }else{
                $link = $url."?MenuId={$_GET['MenuId']}";
        }
        return $link;
}

function Page($pagecount,$curr_page,$pagesize,$DocCount)
{
        $url = ParseUrl();
        $prev = $curr_page-1;
        $next = $curr_page+1;
        $start = "<a href='".$url."'>Anfang</a>";
        $prev_link = ($prev >= 1)?"<a href='".$url."&page=$prev'>letzte</a>":"letzte";
        $next_link = ($next <= $pagecount)?"<a href='".$url."&page=$next'>n&auml;chste</a>":"n&auml;chste";
        $end = "<a href='".$url."&page=$pagecount'>Ende</a>";
        $str = "<form name='jump' method='get' action=''>";
        $str .= "Es wurde&nbsp;".$DocCount."&nbsp;Datensatz/Datens&auml;tze gefunden.&nbsp;&nbsp;Gesamt:&nbsp;".$pagecount."&nbsp;Seiten;&nbsp;".$pagesize."&nbsp;Datens&auml;tze werden maximal pro Seite angezeigt.<br>";
        $str .= " ".$start." ".$prev_link." ".$next_link." ".$end;
        $str .= " ".$curr_page."/".$pagecount;
        $str .= " zur Seite:&nbsp;<input name='page' type='text' id='page' size='5'>";
        $str .= " <input type='submit' name='Submit' value='GO'>";
        $str .= "</form>";
        return $str;
}
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2009-3-31 16:08 | 显示全部楼层
====================getDocList()===================
        public function GetDocList($curr_page,$pagesize,$data)
        {
                if(!$data)
                {
                        $start = ($curr_page-1)*$pagesize;
                        $sql = "SELECT * FROM EE_BOOKS_DETAIL ORDER BY F_ID DESC LIMIT $start, $pagesize";
                        return $this->select($sql);
                }else{
                        $start = ($curr_page-1)*$pagesize;
                        $sql_fields = "*";
                        $sql_from = "EE_BOOKS_DETAIL";
                        $sql_where = " ";
                        if($data)
                        {                       
                                $i = 0;
                                $sql = "SELECT * FROM $sql_from WHERE";
                                $fields = array_keys($data);
                                $value = array_values($data);
                                foreach($data as $key)
                                {
                                        $sql .= " ".$fields[$i]." LIKE '%".$value[$i]."%'";
                                        if($i<count($data)-1)
                                        {       
                                                $sql .= " AND";
                                                $i++;
                                        }
                                }

                                $sql_order = "F_ID DESC";
                                $sql .= " ORDER BY $sql_order LIMIT $start, $pagesize";
        ##                        $sql = "SELECT * FROM $sql_from WHERE $sql_where ORDER BY $sql_order LIMIT $start, $pagesize";
                                return $this->select($sql);
                        }
                }
        }
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-3-31 18:21 | 显示全部楼层
$_POST['lastname']
把POST或者GET的数值放到SESSION里面去
<?php
session_start();
$_SESSION['lastname'] = $_POST['lastname'];
?>
这样在下一页里也可以使用这些数值了,SESSION对PHP至关重要,用用吧!
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2009-4-1 14:18 | 显示全部楼层
hehehe~~~~多谢了。。。我用了cookie解决了。。。Session我用于对用户组的判断了, 所以在这里就不跟搜索条件混在一起了。。。

就是每次从新搜索的时候得刷新cookie, 这里我用了笨方法, 就是当POST的时候把这里的cookies都清零。。。呵呵呵, 用了笨方法, 不过可以运行了。。。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2009-4-15 18:45 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-5-2 16:36 , Processed in 0.081672 second(s), 19 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表