模仿的百度貼吧的一個效果 就是在貼文清單頁點擊某個文章標題進入到這個文章首頁 我是根據點擊的哪個標題就POST哪個title值去資料庫查詢資料 點擊進去後把文章的作者和標題內容顯示出來 我下面也加了一個回複的功能 把提交的回帖資料插入到一個從表裡面 我的問題出在因為提交回複是在本頁面完成的 當提交回複動作完成後文章的標題和作者內容這些東西並沒有接收到POST過來的值 也沒法去資料庫查詢 所以會報錯 那麼怎麼樣可以一直查詢到文章的標題和作者這些東西呢?如果做一個if判斷 如果接收到了POST值就正常查詢資料庫的內容 如果沒有接收到值該怎麼處理呢?
回複討論(解決方案)
貼文清單頁點擊某個文章標題進入到這個文章首頁
而這個 文章首頁 顯示有文章和回複的內容,並有一個供回複的表單,提交到本頁
由於進入 文章首頁 時,有從 貼文清單頁 傳入的 文章id,所以供回複的表單也需要帶上 文章id
其實道理很簡單,如果不帶上 文章id 的話,你就沒辦法知道回複是給誰的了
文章首頁 的工作流程是:
檢查是否是表單提交
如果是,則將回複入庫
按傳入的 文章id 從表中讀取內容和回複,並顯示出來
貼文清單頁點擊某個文章標題進入到這個文章首頁
而這個 文章首頁 顯示有文章和回複的內容,並有一個供回複的表單,提交到本頁
由於進入 文章首頁 時,有從 貼文清單頁 傳入的 文章id,所以供回複的表單也需要帶上 文章id
其實道理很簡單,如果不帶上 文章id 的話,你就沒辦法知道回複是給誰的了
文章首頁 的工作流程是:
檢查是否是表單提交
如果是,則將回複入庫
按傳入的 文章id 從表中讀取內容和回複,並顯示出來
你說的我都明白但是在文章本頁提交回複的話 那個跳轉的post值怎麼處理啊 如果提交回複的話 本頁就沒有就收到post值了啊 那麼怎麼查詢顯示啊 比如當前頁地址是http://localhost/tieba3.php?id=4 我一提交回複的話怎麼讓地址欄還是id=4呢
既然回複是提交到本頁,那麼表單的 action 就不需要寫
這樣進入程式時的 url 參數就是不會變得
附上完整代碼
貼文清單頁
include "cookie.php";
echo $_COOKIE['username'];
?>
include 'function.php';
header('content-type:text/html;charset=utf-8;');
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stmt=$pdo->prepare("select * from tieba");
$stmt->execute();
$res=$stmt->fetchall();
$rows=count($res);//總的條數
$pagesize=8;
if($rows==0){
$pagenum=0;
}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 tieba LIMIT $startnum,$pagesize";
$stmt2=$pdo->prepare($query);
$stmt2->execute();
$res2=$stmt2->fetchall(PDO::FETCH_ASSOC);
foreach($res2 as $v){
echo '
'.$v['title'].'';
}
?>
fenye();
?>
文章首頁
include "cookie.php";
?>
if(isset($_GET['title'])){
echo $_GET['title'];
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$title=$_GET['title'];
$stmt=$pdo->prepare("select id,title,type,name,num,site,content from tieba where title=?");
$stmt->execute(array($title));
$res3=$stmt->fetchall(PDO::FETCH_ASSOC);
foreach($res3 as $v){
echo ''.$v['num'].'';
$id1=$v['id'];
}
}else{
echo $id1;
}
?>
$id2=$v['id'];
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stmt=$pdo->prepare("select id,name,content from reply where reid=?");
$stmt->execute(array($id2));
$res1=$stmt->fetchall(PDO::FETCH_ASSOC);
foreach($res1 as $v2){
echo $v2['name'];
}
?>
既然回複是提交到本頁,那麼表單的 action 就不需要寫
這樣進入程式時的 url 參數就是不會變得
原來這樣的啊 謝謝嘍版主