同一個PHP頁面可以同時有提交和擷取資料的動作嗎?

來源:互聯網
上載者:User
做的一個類似貼吧的效果 在首頁可以顯示所有的文章 點擊某個文章跳轉到這個話題文章裡面 這個話題是通過$_GET['title'];使用者在首頁點擊哪個標題就從資料庫裡面查詢這個文章作者發布的內容 代碼如下 html布局很亂 大家湊合看吧
問題出在最後 我弄了一個提交回複的框 通過post提交內容 但是我一寫提交插入從表的代碼就開始報錯啊 報錯的位置就是$title=$_GET['title'];這一句話 那個插入從表的代碼這麼寫的

這個是把提交的內容插入到從表資料庫的代碼 不寫這段代碼下面那段代碼正常運行 一寫上這段代碼就報錯 報錯的位置標出來了 報錯內容如下 Undefined index: title in D:\wamp\www\contentpage.php on line 26
insert.php頁面
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stnt=$pdo->prepare("insert into reply(reid,name,content)values(:reid,:name,:content)");
$stnt->execute($_POST);
header("location:http://localhost/contentpage.php");
?>


下面是某個主題頁面
contentpage.php








include "cookie.php";//顯示登入的使用者名稱

?>



$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");//下面開始查詢這個主題的內容
$title=$_GET['title'];//接收從首頁點擊的連結 點擊哪個標題就查詢哪個文章 。。 。。。這裡報的錯 。。。。。
$stmt=$pdo->prepare("select id,title,type,name,num,site,content from blog where title=?");
$stmt->execute(array($title));
$res3=$stmt->fetchall(PDO::FETCH_ASSOC);
foreach($res3 as $v){
echo ''.$v['num'].'';//簡單輸出內容
}
?>






$id=$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($id));
$res1=$stmt->fetchall(PDO::FETCH_ASSOC);
foreach($res1 as $v2){
echo $v2['name']; //簡單輸出一下回複內容
}
?>

//我又在下面弄了一個提交回複框 這個提交的代碼是最上面那一段代碼





回複討論(解決方案)

錯誤提示這個 Undefined index: title in D:\wamp\www\contentpage.php on line 26
就是$title=$_GET['title'];這句話

你可以先判斷一下再做呀

你可以先判斷一下再做呀


怎麼判斷啊

if($_POST) {
//處理表單提交
}
if(isset($_GET['title'])) {
//處理定點查詢
}

可以,但不建議。一般幕後處理由一個獨立檔案去搞更好一些。

if($_POST) {
//處理表單提交
}
if(isset($_GET['title'])) {
//處理定點查詢
}


我知道我提交回複後出現的問題了 因為提交回複的動作並沒有$title=$_GET['title']傳過來的值;這個POST的值是點開這個頁面的標題時傳過來的 提交回複的動作是在這個頁面裡面完成的 根本沒有POST過來的值 所以會報錯了 但是我怎麼讓這個一直可以查詢到結果呢?

可以的。

可以的。



怎麼弄啊大哥

不知道我理解的對否,聽一下。
這明顯是一對多的關係,提交回複的時候
你將 當前的文章id和回複的內容得到。存入表的時候,明顯可以拿到該id貼的標題,然後…繼續存就可以了。
另外還可能出現另外一個,一對多,你想想吧

為什麼要用title而不是用id去查?
首先要做空資料判斷,比如$_GET過來的資料,$_POST過來的資料;

if (trim($_GET['title']) == '') {
//禁止操作
}

if (intval($_POST['reid']) <= '0') {
//禁止操作
}
另外$_POST['reid']在表單什麼位置提交過來的?隱藏欄位嗎?沒有看見
最後header("location:http://localhost/contentpage.php");建議這麼寫@header("Location:(空格)http://localhost/contentpage.php");

不知道我理解的對否,聽一下。
這明顯是一對多的關係,提交回複的時候
你將 當前的文章id和回複的內容得到。存入表的時候,明顯可以拿到該id貼的標題,然後…繼續存就可以了。
另外還可能出現另外一個,一對多,你想想吧


回複之前可以得到文章的id和標題的,提交回複後得不到Id和標題了 那麼怎麼在提交前把id這些儲存起來呢?還是用別的辦法呢?

為什麼要用title而不是用id去查?
首先要做空資料判斷,比如$_GET過來的資料,$_POST過來的資料;

if (trim($_GET['title']) == '') {
//禁止操作
}

if (intval($_POST['reid']) <= '0') {
//禁止操作
}
另外$_POST['reid']在表單什麼位置提交過來的?隱藏欄位嗎?沒有看見
最後header("location:http://localhost/contentpage.php");建議這麼寫@header("Location:(空格)http://localhost/contentpage.php");



已經做了if判斷了 關鍵是提交的動作完成後根本沒有接收到post傳過來的值啊 所以會報錯的 如果沒有接收到post的值該怎麼處理呢?該怎樣去查詢資料呢?

沒人嗎????????????

你用post提交,怎麼用get接收呢?改成$_POST['title']。。我也是新手,不知道說的對不,對的話就給分

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.