Inhaltsverzeichnis
'.$v['num'].'
'.$v['name'].'
回复讨论(解决方案)
Heim Backend-Entwicklung PHP-Tutorial 一个分页的问题:不能分页查询

一个分页的问题:不能分页查询

Jun 23, 2016 pm 01:02 PM

代码写的比较乱  如果不想看代码只看我表述也行 然后提交解决的办法就行
代码是这样的 就是类似百度的一个搜索页 道理也是百度搜索这样的 有一个搜索框
 下面是一个div显示查询结果 比如我搜索PHP 然后就去表里面的num字段下查找PHP的内容 查询的所有结果以分页的形式展示出来 
就是第一页 第二页……   现在的问题是这个查询结果是根据用户每次提交时$_POST['num']来查询数据库的  
如果每页显示5条数据 现在查询出来3页数据 每次查询可以显示数据和分页信息  但是每次点击分页时就会报错 比如点击第二页时就是提示num未定义
因为点击第二页时没有提交的$_POST['num']数据 只有一个post过来的page=2 所以会报错 
 现在的问题就是只能查询第一页的数据  点第二页就会报错 知道问题出在哪里就是不知道怎么改  用户在点击第二页时希望之前查询出来的数据不要消失 这个应该怎么办呢?这样说不知道大家能不能看懂啊

<div id="show">       <?php       header('content-type:text/html;charset=utf-8;');       include 'function.php';       if (isset($_POST['num'])||isset($_GET['page'])) {       $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");       session_start();       $_SESSION['num']=$_POST['num'];       $stmt3=$pdo->prepare("select * from table1 where num=?");       $stmt3->execute(array($_POST['num']));       $res3=$stmt3->fetchall();       $rows=count($res3);       $pagesize=5;       if($rows==0){        $pagenum=1;       }else{        $pagenum=ceil($rows/$pagesize);       }       if(isset($_GET['page'])){          $page=$_GET['page'];          if(empty($page)||$page<0||!is_numeric($page)) {            $page=1;          }else{            $page=intval($page);          }        }else{        $page=1;       }       if($page>$pagenum){        $page=$pagenum;       }       $startnum = ($page - 1)*$pagesize;       $display_page=5;       $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";       $stmt=$pdo->prepare("$query");       //$stmt=$pdo->prepare("select * from table1 where num=?");       $stmt->execute(array($_POST['num']));       $res=$stmt->fetchall(PDO::FETCH_ASSOC);       $v = current($res);       if($res){         foreach($res as $v){          //echo '<h3 id="span-v-num-span"><span>'.$v['num'].'</span></h3>' ;          echo '<h4 id="v-name">'.$v['name'].'</h4>';         }       }else{        echo "无数据";       }               }       ?>     </div>     <div id="page">        <?php         if(isset($_POST['num'])||isset($_GET['page'])){           fenye();         }       ?>     </div>
Nach dem Login kopieren


回复讨论(解决方案)

你的 num 是 post 提交的,从第二页起就没有 post 提交了,自然也就没有了 num

因为你点第一页,第二页时,用的是GET方法传递,而不是POST方法。

所以红色部分出问题
$query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";
$stmt=$pdo->prepare("$query");
//$stmt=$pdo->prepare("select * from table1 where num=?");
$stmt->execute(array($_POST['num']));

然后fenye方法要把num和page传入去
分页的url要加上这两个参数:?page=xxx&num=xxx

这样改试试

<div id="show">       <?php       header('content-type:text/html;charset=utf-8;');       include 'function.php';       $num = isset($_REQUEST['num'])? $_REQUEST['num'] : 0;       $page = isset($_REQUEST['page'])? $_REQUEST['page'] : 1;        $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");        session_start();        $_SESSION['num']=$num;        $stmt3=$pdo->prepare("select * from table1 where num=?");        $stmt3->execute(array($num));        $res3=$stmt3->fetchall();        $rows=count($res3);        $pagesize=5;        if($rows==0){            $pagenum=1;        }else{            $pagenum=ceil($rows/$pagesize);        }        if($page){            if(empty($page)||$page<0||!is_numeric($page)) {                $page=1;            }else{                $page=intval($page);            }         }else{            $page=1;        }        if($page>$pagenum){            $page=$pagenum;        }        $startnum = ($page - 1)*$pagesize;        $display_page=5;        $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";        $stmt=$pdo->prepare("$query");        //$stmt=$pdo->prepare("select * from table1 where num=?");        $stmt->execute($num);        $res=$stmt->fetchall(PDO::FETCH_ASSOC);        $v = current($res);        if($res){            foreach($res as $v){                //echo '<h3 id="span-v-num-span"><span>'.$v['num'].'</span></h3>' ;                echo '<h4 id="v-name">'.$v['name'].'</h4>';            }        }else{         echo "无数据";        }       ?>     </div>     <div id="page">        <?php         if($num || $page){           fenye($num, $page);         }       ?>     </div>
Nach dem Login kopieren
Nach dem Login kopieren

你说像百度那样子,你就看看百度的下一页链接。搜索词都是在地址参数上的,用GET就行

还是不行 只是现在不报错了 点击第几页后还是什么都不显示内容


因为你点第一页,第二页时,用的是GET方]法传递,而不是POST方法。

所以红色部分出问题
$query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";
$stmt=$pdo->prepare("$query");
//$stmt=$pdo->prepare("select * from table1 where num=?");
$stmt->execute(array($_POST['num']));

然后fenye方法要把num和page传入去
分页的url要加上这两个参数:?page=xxx&num=xxx

这样改试试

<div id="show">       <?php       header('content-type:text/html;charset=utf-8;');       include 'function.php';       $num = isset($_REQUEST['num'])? $_REQUEST['num'] : 0;       $page = isset($_REQUEST['page'])? $_REQUEST['page'] : 1;        $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");        session_start();        $_SESSION['num']=$num;        $stmt3=$pdo->prepare("select * from table1 where num=?");        $stmt3->execute(array($num));        $res3=$stmt3->fetchall();        $rows=count($res3);        $pagesize=5;        if($rows==0){            $pagenum=1;        }else{            $pagenum=ceil($rows/$pagesize);        }        if($page){            if(empty($page)||$page<0||!is_numeric($page)) {                $page=1;            }else{                $page=intval($page);            }         }else{            $page=1;        }        if($page>$pagenum){            $page=$pagenum;        }        $startnum = ($page - 1)*$pagesize;        $display_page=5;        $query = "SELECT * FROM qq where num=? LIMIT $startnum,$pagesize";        $stmt=$pdo->prepare("$query");        //$stmt=$pdo->prepare("select * from table1 where num=?");        $stmt->execute($num);        $res=$stmt->fetchall(PDO::FETCH_ASSOC);        $v = current($res);        if($res){            foreach($res as $v){                //echo '<h3 id="span-v-num-span"><span>'.$v['num'].'</span></h3>' ;                echo '<h4 id="v-name">'.$v['name'].'</h4>';            }        }else{         echo "无数据";        }       ?>     </div>     <div id="page">        <?php         if($num || $page){           fenye($num, $page);         }       ?>     </div>
Nach dem Login kopieren
Nach dem Login kopieren

就是啊 这个问题怎么解决呢?

你的 num 是 post 提交的,从第二页起就没有 post 提交了,自然也就没有了 num

这个那个分页函数的代码
function fenye(){
global $page,$pagenum,$shoupage,$pageoffset;
echo "

";
echo "
    ";
    echo '
  • '.$page.'/'.$pagenum.'页|
  • ';
    if($page==1){
    echo '
  • 首页|
  • ';
    echo '
  • 上一页|
  • ';
    }else{
    echo '
  • 首页|
  • ';
    echo '
  • 上一页|
  • ';
    }
    $shoupage=5;
    $pageoffset=($shoupage-1)/2;
    $start=1;
    $end=$pagenum;
    if($pagenum>$shoupage){
    if($page>$pageoffset){
    $start=$page-$pageoffset;
    $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;
    }else{
    $start=1;
    $end=$pagenum>$shoupage?$shoupage:$pagenum;
    }
    if($page+$pageoffset>$pagenum){
    $start=$start-($page+$pageoffset-$end);
    }
    }
    echo '
    ';
    echo '
      ';
      for($i=$start;$i<=$end;$i++){
      echo '
    • '.($i).'
    • ';
      }
      echo '
    ';
    echo '
    ';
    if($page==$pagenum){
    echo '
  • |下一页|
  • ';
    echo '
  • 尾页|
  • ';
    }else{
    echo '
  • |下一页|
  • ';
    echo '
  • 尾页|
  • ';
    }
    echo '
';
echo '
';

};
?>

在链接中加入 num=$num

把原来这句话 echo '

  • '.($i).'
  • ';
    改成了这样echo '
  • ';这样改对吗 但是还是提示我拼接错误 为什么?Parse error: syntax error, unexpected '=', expecting ',' or ';' in D:\wamp\www\function.php on line 33

    在链接中加入 num=$num

    改这样

    <?phpfunction fenye($num){global $page,$pagenum,$shoupage,$pageoffset;echo "<div >";echo "<ul id='ul2'>";echo '<li>'.$page.'/'.$pagenum.'页|</li>';   if($page==1){             echo '<li>首页|</li>';             echo '<li>上一页|</li>';   }else{     echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'">首页</a>|</li>';             echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?'.($page-1).'&num='.$num.'">上一页</a>|</li>';   }   $shoupage=5;       $pageoffset=($shoupage-1)/2;       $start=1;       $end=$pagenum;   if($pagenum>$shoupage){        if($page>$pageoffset){        $start=$page-$pageoffset;        $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;        }else{        $start=1;        $end=$pagenum>$shoupage?$shoupage:$pagenum;        }        if($page+$pageoffset>$pagenum){        $start=$start-($page+$pageoffset-$end);        }       }   echo '<div>';       echo '<ul id="ul1">';       for($i=$start;$i<=$end;$i++){        echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$i.'&num='.$num.'">'.($i).'</a></li>';       }       echo '</ul>';           echo '</div>';   if($page==$pagenum){    echo '<li>|下一页|</li>';    echo '<li>尾页|</li>';   }else{    echo '<li>|<a href="'.$_SERVER["SCRIPT_NAME"].'?page='.($page+1).'&num='.$num.'">下一页</a>|</li>';    echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$pagenum.'&num='.$num.'">尾页</a>|</li>';   }echo '</ul>';    echo '</div>';    };?>
    Nach dem Login kopieren
    Nach dem Login kopieren


    然后调用改这样

    if($num || $page){
    fenye($num);
    }
    ?>

    哈哈可以了 我先好好看看你的代码

    改这样

    <?phpfunction fenye($num){global $page,$pagenum,$shoupage,$pageoffset;echo "<div >";echo "<ul id='ul2'>";echo '<li>'.$page.'/'.$pagenum.'页|</li>';   if($page==1){             echo '<li>首页|</li>';             echo '<li>上一页|</li>';   }else{     echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'">首页</a>|</li>';             echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?'.($page-1).'&num='.$num.'">上一页</a>|</li>';   }   $shoupage=5;       $pageoffset=($shoupage-1)/2;       $start=1;       $end=$pagenum;   if($pagenum>$shoupage){        if($page>$pageoffset){        $start=$page-$pageoffset;        $end=$pagenum>$page+$pageoffset?$page+$pageoffset:$pagenum;        }else{        $start=1;        $end=$pagenum>$shoupage?$shoupage:$pagenum;        }        if($page+$pageoffset>$pagenum){        $start=$start-($page+$pageoffset-$end);        }       }   echo '<div>';       echo '<ul id="ul1">';       for($i=$start;$i<=$end;$i++){        echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$i.'&num='.$num.'">'.($i).'</a></li>';       }       echo '</ul>';           echo '</div>';   if($page==$pagenum){    echo '<li>|下一页|</li>';    echo '<li>尾页|</li>';   }else{    echo '<li>|<a href="'.$_SERVER["SCRIPT_NAME"].'?page='.($page+1).'&num='.$num.'">下一页</a>|</li>';    echo '<li><a href="'.$_SERVER["SCRIPT_NAME"].'?page='.$pagenum.'&num='.$num.'">尾页</a>|</li>';   }echo '</ul>';    echo '</div>';    };?>
    Nach dem Login kopieren
    Nach dem Login kopieren


    然后调用改这样
         


                     if($num || $page){
               fenye($num);
             }
           ?>
         
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heißer Artikel

    <🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    Nordhold: Fusionssystem, erklärt
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora: Flüstern des Hexenbaum
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Heiße Themen

    Java-Tutorial
    1670
    14
    PHP-Tutorial
    1276
    29
    C#-Tutorial
    1256
    24
    Erklären Sie sicheres Kennwort -Hashing in PHP (z. B. password_hash, password_verify). Warum nicht MD5 oder SHA1 verwenden? Erklären Sie sicheres Kennwort -Hashing in PHP (z. B. password_hash, password_verify). Warum nicht MD5 oder SHA1 verwenden? Apr 17, 2025 am 12:06 AM

    In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

    PHP und Python: Vergleich von zwei beliebten Programmiersprachen PHP und Python: Vergleich von zwei beliebten Programmiersprachen Apr 14, 2025 am 12:13 AM

    PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

    PHP in Aktion: Beispiele und Anwendungen in realer Welt PHP in Aktion: Beispiele und Anwendungen in realer Welt Apr 14, 2025 am 12:19 AM

    PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

    Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen? Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen? Apr 17, 2025 am 12:25 AM

    PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

    Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Die dauerhafte Relevanz von PHP: Ist es noch am Leben? Apr 14, 2025 am 12:12 AM

    PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

    PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

    PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

    Wie verhindern Sie die SQL -Injektion in PHP? (Vorbereitete Aussagen, PDO) Wie verhindern Sie die SQL -Injektion in PHP? (Vorbereitete Aussagen, PDO) Apr 15, 2025 am 12:15 AM

    Die Verwendung von Vorverarbeitungsanweisungen und PDO in PHP kann SQL -Injektionsangriffe effektiv verhindern. 1) Verwenden Sie PDO, um eine Verbindung zur Datenbank herzustellen und den Fehlermodus festzulegen. 2) Erstellen Sie Vorverarbeitungsanweisungen über die Vorbereitungsmethode und übergeben Sie Daten mit Platzhaltern und führen Sie Methoden aus. 3) Abfrageergebnisse verarbeiten und die Sicherheit und Leistung des Codes sicherstellen.

    PHP und Python: Code Beispiele und Vergleich PHP und Python: Code Beispiele und Vergleich Apr 15, 2025 am 12:07 AM

    PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

    See all articles