ホームページ >バックエンド開発 >PHPチュートリアル >この投稿で回答された質問をもう一度質問してください

この投稿で回答された質問をもう一度質問してください

WBOY
WBOYオリジナル
2016-06-20 12:37:011040ブラウズ

Baidu Tieba を模倣する効果の 1 つは、投稿リスト ページで投稿のタイトルをクリックして投稿のホームページにアクセスし、クリックした後、どのタイトルに基づいてどのタイトルの値をクエリするかです。投稿の投稿者とタイトルが表示されます。また、このページで返信データをスレーブテーブルに挿入する機能も追加しました。返信の送信アクションが完了すると、投稿のタイトルと作成者の内容が表示されます。POST から値を受け取っていないため、データベースにクエリを実行できないため、エラーが報告されます。では、常にタイトルと作成者をクエリするにはどうすればよいですか。ポストの? if判定を行った場合、POST値を受け取った場合、通常通りデータベースの内容を問い合わせて値を受け取らなかった場合はどうすればよいでしょうか。


ディスカッションへの返信 (解決策)

投稿一覧ページの投稿タイトルをクリックして投稿ホームページにアクセスします
この投稿ホームページには投稿と返信の内容が表示され、このページに送信される返信用のフォームがあります
投稿を入力するため トップページに入ると、投稿一覧ページから投稿IDが渡されるので、返信用のフォームにも投稿IDを持ってくる必要があります
実は理由はとても簡単です。投稿 ID を持っていない場合、返信の宛先を知る方法はありません。

投稿ホームページのワークフローは次のとおりです。
フォーム送信であるかどうかを確認します
フォーム送信である場合。 、返信をデータベースに保存します
受信した投稿IDに従ってテーブルから内容を読み取り、返信して表示します

投稿リストページで投稿タイトルをクリックして投稿のホームページに入ります
そして、この投稿ホームページには投稿と返信の内容が表示され、このページに返信するためのフォームがあります
投稿ホームページに入る際に投稿一覧ページから渡される投稿 ID があるため、返信フォームには投稿 ID も必要です
実際、その理由は非常に簡単です。投稿 ID を持っていない場合、誰に対する返信なのかを知る方法がありません。

投稿ホームページのワークフローは次のとおりです:
フォーム送信であるかどうかを確認します
フォーム送信である場合は、返信をデータベースに保存します
押し込みます 投稿 ID がテーブルからコンテンツと返信を読み取って表示します



おっしゃることはわかりますが、投稿ページで返信した場合、投稿値がジャンプした場合、このページに投稿値がない場合はどうすればよいでしょうか?たとえば、現在のページのアドレスは http://localhost/tieba3.php?id=4 ですが、返信を送信してもアドレス バーに id=4 が表示されるのはなぜですか?

返信はこのページに送信されるため、プログラム入力時の url パラメータが
にならないように、フォームアクションに

を記述する必要はありません。

附上完整代码

帖子列表页




<script> <br>window.onload=function(){ <br>  var oIpt1=document.getElementById('ipt1'); <br>  var oIpt2=document.getElementById('ipt2'); <br>  var oIpt3=document.getElementById('ipt3'); <br>  var oTxt1=document.getElementById('txt1'); <br>  var oSub=document.getElementById('sub'); <br>  var re=/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/; <br>  oIpt1.onblur= onblurHandler; <br>         oIpt2.onblur= onblurHandler; <br>         oIpt3.onblur= onblurHandler; <br>         function onblurHandler(event){ <br>             var target=event.target; <br>             var oV1= target.value; <br>             if (oV1=='') { <br>                 target.style.border='1px solid red'; <br>             } <br>             else{ <br>                 target.style.border=''; <br>             } <br>         } <br>} <br></script>



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'];
    }
    ?>











    は然回复是本页,那么表单的アクション就不不要写
    这样进入程序時的 URL パラメータ就是不会变得




    原来这样的啊 谢谢喽版主
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。