重新提問一下這個文章回複的問題

來源:互聯網
上載者:User
模仿的百度貼吧的一個效果 就是在貼文清單頁點擊某個文章標題進入到這個文章首頁 我是根據點擊的哪個標題就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 參數就是不會變得




    原來這樣的啊 謝謝嘍版主
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.