代码写的比较乱 如果不想看代码只看我表述也行 然后提交解决的办法就行
代码是这样的 就是类似百度的一个搜索页 道理也是百度搜索这样的 有一个搜索框
下面是一个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>
回复讨论(解决方案)
你的 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>
你说像百度那样子,你就看看百度的下一页链接。搜索词都是在地址参数上的,用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>
就是啊 这个问题怎么解决呢?
你的 num 是 post 提交的,从第二页起就没有 post 提交了,自然也就没有了 num
这个那个分页函数的代码
function fenye(){
global $page,$pagenum,$shoupage,$pageoffset;
echo "
echo "
- ";
- '.$page.'/'.$pagenum.'页| ';
- 首页| ';
- 上一页| ';
- 首页| ';
- 上一页| ';
- |下一页| ';
- 尾页| ';
- |下一页| ';
- 尾页| ';
echo '
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 '';
if($page==$pagenum){
echo '
echo '
}else{
echo '
echo '
}
echo '
echo '
};
?>
在链接中加入 num=$num
把原来这句话 echo '
改成了这样echo '
在链接中加入 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>'; };?>
然后调用改这样
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>'; };?>
然后调用改这样
if($num || $page){
fenye($num);
}
?>

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

In PHP eignet sich das Merkmal für Situationen, in denen die Wiederverwendung von Methoden erforderlich ist, aber nicht zur Erbschaft geeignet ist. 1) Das Merkmal ermöglicht Multiplexing -Methoden in Klassen, um die Komplexität mehrerer Vererbungskomplexität zu vermeiden. 2) Bei Verwendung von Merkmalen müssen Sie auf Methodenkonflikte achten, die durch die Alternative und als Schlüsselwörter gelöst werden können. 3) Überbeanspruchte des Merkmals sollte vermieden werden und seine einzelne Verantwortung sollte beibehalten werden, um die Leistung zu optimieren und die Code -Wartbarkeit zu verbessern.

Abhängigkeitsinjektionsbehälter (DIC) ist ein Tool, das Objektabhängigkeiten für die Verwendung in PHP -Projekten verwaltet und bereitstellt. Die Hauptvorteile von DIC sind: 1. Entkopplung, Machen von Komponenten unabhängig, und der Code ist leicht zu warten und zu testen; 2. Flexibilität, leicht zu ersetzen oder zu ändern; 3.. Testbarkeit, bequem für die Injektion von Scheinobjekten für Unit -Tests.

SplfixedArray ist ein Array mit fester Größe in PHP, das für Szenarien geeignet ist, in denen hohe Leistung und geringe Speicherverbrauch erforderlich sind. 1) Es muss die Größe beim Erstellen angeben, um den durch dynamischen Einstellungen verursachten Overhead zu vermeiden. 2) Basierend auf C -Spracharray betreibt direkt Speicher und schnelle Zugriffsgeschwindigkeit. 3) Geeignet für eine großräumige Datenverarbeitung und speicherempfindliche Umgebungen, muss jedoch mit Vorsicht verwendet werden, da seine Größe festgelegt ist.

PHP überlädt Datei -Hochladen über die Variable $ \ _ Dateien. Zu den Methoden zur Sicherstellung gehören: 1. Upload -Fehler, 2. Dateityp und -größe überprüfen, 3.. Dateiüberschreibung verhindern, 4. Verschieben von Dateien auf einen dauerhaften Speicherort.

In JavaScript können Sie NullCoalescingoperator (??) und NullCoalescingAssignmentoperator (?? =) verwenden. 1.??? 2.??= Weisen Sie den Wert des rechten Operanden die Variable zu, jedoch nur, wenn die Variable null oder undefiniert ist. Diese Operatoren vereinfachen die Codelogik und verbessern die Lesbarkeit und Leistung.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor