ホームページ  >  記事  >  バックエンド開発  >  同じ PHP ページに、データの送信と取得を同時に行うアクションを含めることはできますか?

同じ PHP ページに、データの送信と取得を同時に行うアクションを含めることはできますか?

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

做的一个类似贴吧的效果   在主页可以显示所有的帖子  点击某个帖子跳转到这个话题帖子里面    这个话题是通过$_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'];   //简单输出一下回复内容
     }
   ?>
  

  
//我又在下面弄了一个提交回复框         这个提交的代码是最上面那一段代码      
    

      
      
  

  



ディスカッションへの返信 (解決策) このエラーにより、D:wampwwwcontentpage.php の 26 行目での未定義のインデックスが表示されます。これは $title=$_GET['title']; です。文

やる前に判断することができる


やる前に判断することができる

判断方法

if($_POST ) {

//フォーム送信の処理

}
if(isset($_GET['title'])) { //固定小数点クエリの処理

}


はい、しかしお勧めしません。一般に、バックグラウンド処理を別のファイルで実行することをお勧めします。


if($_POST) {

//フォーム送信の処理

}

if(isset($_GET['title'])) {

//処理固定小数点クエリ

}

返信を送信するアクションに $title=$_GET['title']; によって渡された値が含まれていないため、返信を送信した後に問題が発生したことがわかります。このPOSTのポイントは、このページのタイトルを開くときに渡されます。このページでは、POST値がまったくないため、エラーが報告されます。いつでも可能ですか?

はい。


はい。

お兄さん、どうやってやるの?

正しく理解できているかわかりませんが、聞いてください。

これは明らかに 1 対多の関係です。
返信を送信すると、現在の投稿 ID と返信の内容が取得されます。テーブルに保存するときは、ID によって投稿されたタイトルを取得できます。その後は保存を続けるだけです。
さらに、1 対多のもう 1 つがあるかもしれません。考えてみてください。

チェックするのに ID の代わりにタイトルを使用するのはなぜですか?
まず、$_GET からのデータと $_POST からのデータなどの短いデータ判定を行います。

if (trim($_GET['title']) == '') {

/ /操作禁止

}

if (intval($_POST['reid']) <= '0') {
//操作禁止
}
$_POST も['reid'] はフォームのどこに送信されましたか?隠しドメイン?
最後の header("location:http://localhost/contentpage.php") が表示されませんでした。 @header("Location: (space) http://localhost/contentpage.php" と記述することをお勧めします。 ");



正しく理解できているかわかりませんが、聞いてください。
これは明らかに 1 対多の関係です。
返信を送信すると、現在の投稿 ID と返信の内容が取得されます。テーブルに保存するときは、ID によって投稿されたタイトルを取得できます。その後は保存を続けるだけです。

また、1対多のものもあるかも知れませんが、考えてみましょう

返信する前に投稿のIDとタイトルを取得できますが、IDとタイトルは取得できません返信を送信した後、送信する前に ID とタイトルを取得するにはどうすればよいでしょうか?それとも他の方法を使用する必要がありますか?


なぜ ID ではなくタイトルを使用して確認するのでしょうか?

まず、$_GET からのデータと $_POST からのデータなどの短いデータ判定を行います。
if (trim($_GET['title']) == '') {

/ /操作禁止

}

if (intval($_POST['reid']) <= '0') {
//操作禁止
}
$_POST も['reid'] はフォームのどこに送信されましたか?隠しドメイン?
最後の header("location:http://localhost/contentpage.php") が表示されませんでした。 @header("Location: (space) http://localhost/contentpage.php" と記述することをお勧めします。 ");


if 判定が行われています。重要なのは、送信アクションが完了した後、ポストによって渡された値がまったく受信されないため、エラーが報告されるということです。投稿の値が受信されない場合はどうすればよいですか?データをクエリするにはどうすればよいですか?

誰かいますか? ? ? ? ? ? ? ? ? ? ? ?


投稿に post を使用する場合、受信するには get をどのように使用しますか? $_POST['title'] に変更します。 。私も初心者なので、私の言っていることが正しいか分かりませんが、もし正しいならポイントを差し上げます
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPの検証コード次の記事:PHPの検証コード