質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

解決済

Ajax 一秒間隔で実行して自動で画面を更新する方法

samidare_chan
samidare_chan

総合スコア142

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

1回答

-5評価

0クリップ

493閲覧

投稿2022/02/20 12:32

提示コードですがphpの<!-のコメント部ですがAjaxでupdate.phpを実行して掲示板の投稿に新しい投稿があればそれを追加で表示すという処理を作りたいのですが以下のことがわかりません。

1,一秒間隔で自動に実行して画面を更新する方法
2,値を渡す方法と取得する方法が知りたいです。

参考サイト:https://kinocolog.com/jquery_ajax/

update.php

php

<?php $dsn = 'mysql:dbname=Bulletin_Board;host=localhost;charset=utf8'; $dbh = new PDO($dsn,"root","Shigurechan7240"); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbh->setAttribute(PDO::ATTR_AUTOCOMMIT, 0); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = 'SELECT * FROM Post WHERE thread_UUID=:id ORDER BY create_time_stamp ASC LIMIT :limit OFFSET :offset '; $stmt = $dbh->prepare($sql); $stmt->bindValue(':id', $url,PDO::PARAM_STR); $stmt->bindValue(':limit', $viewNum, PDO::PARAM_INT); $stmt->bindValue(':offset', $pageNumber * $viewNum, PDO::PARAM_INT); $_SESSION["pageNumber"] = $pageNumber; $stmt->execute(); $post = $stmt->fetchAll(); ?>
php

php

<html lang=ja> <head> <meta charset="utf-8"> <link rel="stylesheet" href="style.css"> <title>send</title> </head> <body> <?php session_cache_limiter('none'); ini_set("display_errors",1); error_reporting(E_ALL); session_cache_limiter('none'); session_start(); Require_once "renderer.php"; Require_once "dataBase.php"; $viewNum = 10; $url = isset($_GET["title"]) ? $_GET["title"] : NULL; // if(isset($_GET["page"]) == false) { $dsn = 'mysql:dbname=Bulletin_Board;host=localhost;charset=utf8'; $dbh = new PDO($dsn,"root","Shigurechan7240"); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $sql = 'SELECT * FROM Post WHERE thread_UUID=:id'; $stmt = $dbh->prepare($sql); $stmt->bindValue(':id', $url, PDO::PARAM_STR); $stmt->execute(); $totalPageNum = ceil($stmt->rowCount() / $viewNum); $pageNumber = $totalPageNum -1; if($pageNumber < 0) { $pageNumber = 0; } } else { $pageNumber = $_GET["page"]; } ?> <?php try { $dsn = 'mysql:dbname=Bulletin_Board;host=localhost;charset=utf8'; $dbh = new PDO($dsn,"root","Shigurechan7240"); $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //post $post = null; $stmt = null; if($pageNumber == NULL) { $sql = 'SELECT * FROM Post WHERE thread_UUID=:id ORDER BY create_time_stamp ASC'; $stmt = $dbh->prepare($sql); $stmt->bindValue(':id', $url, PDO::PARAM_STR); $stmt->execute(); $post = $stmt->fetchAll(); $t = $stmt->rowCount() % $viewNum; $r = 0; if($t > 0) { $r = $stmt->rowCount() - $t; } else if($t == 0) { $r = $stmt->rowCount() - $viewNum; if($r < 0) { $r = 0; } } else if($t < 0) { $r = 0; } $sql = 'SELECT * FROM Post WHERE thread_UUID=:id ORDER BY create_time_stamp ASC LIMIT :limit OFFSET :offset '; $stmt = $dbh->prepare($sql); $stmt->bindValue(':id', $url,PDO::PARAM_STR); $stmt->bindValue(':limit', $viewNum, PDO::PARAM_INT); $stmt->bindValue(':offset', $r, PDO::PARAM_INT); $stmt->execute(); $post = $stmt->fetchAll(); $_SESSION["pageNumber"] = $r; $postNum = $stmt->rowCount(); //全部のページ数 $pageNum = $viewNum; //1ページの表示件数 $totalPageNum = ceil($postNum / $pageNum); } else { $sql = 'SELECT * FROM Post WHERE thread_UUID=:id ORDER BY create_time_stamp ASC LIMIT :limit OFFSET :offset '; $stmt = $dbh->prepare($sql); $stmt->bindValue(':id', $url,PDO::PARAM_STR); $stmt->bindValue(':limit', $viewNum, PDO::PARAM_INT); $stmt->bindValue(':offset', $pageNumber * $viewNum, PDO::PARAM_INT); $_SESSION["pageNumber"] = $pageNumber; $stmt->execute(); $post = $stmt->fetchAll(); } } catch(PDOException $e) { die($e->getMessage()); } ?> <!-------------------------------------------------> <script> $(function(){ //.sampleをクリックしてajax通信を行う $('.sample_btn').click(function(){ $.ajax({ url: 'updatePage.php', type: 'GET', /* json形式で受け取るためdataTypeを変更 */ dataType: 'text', }).done(function(data) { }).fail(function(data){ /* 通信失敗時 */ alert('通信失敗!'); }); }); }); </script> <!-------------------------------------------------> <!-------------------------------- スレッドを列挙 --------------------------------> <?php if($post != false) { Renderer_TopBar($post[0]); } for($i = 0; $i < $stmt->rowCount(); $i++) { $sql = 'SELECT * FROM Account WHERE UUID =:id'; $stmt2 = $dbh->prepare($sql); $stmt2->bindValue(':id',$post[$i]["create_UUID"] , PDO::PARAM_STR); $stmt2->execute(); $account = $stmt2->fetch(); if($post[$i]['enable'] == false) { //削除された投稿 Renderer_PostThread_Delete($post[$i]); } else if(isset($_SESSION["login"]) == true) { if(strcmp($_SESSION['UUID'],$account['UUID']) == 0) { //自分の投稿 Renderer_PostThread($post[$i]); } if(strcmp($_SESSION['UUID'],$account['UUID']) != 0) { //他人の投稿 Renderer_PostThread_Other($post[$i],$_SESSION['UUID']); } } else { // ログインしていない時 Renderer_PostThread_Logout($post[$i]); } } ?> <br> <br> <?php $sql = 'SELECT * FROM Post WHERE thread_UUID=:id'; $stmt = $dbh->prepare($sql); $stmt->bindValue(':id', $url, PDO::PARAM_STR); $stmt->execute(); $postNum = $stmt->rowCount(); //全部のページ数 $totalPageNum = ceil($postNum / $viewNum); $allPage = $totalPageNum; //print($totalPageNum); if((isset($_SESSION['login']) == true) && (($pageNumber == ($totalPageNum - 1)) || (($pageNumber == NULL)))) { ?> <h3>投稿</h3> <form action="submit.php" method="post"> <input type="hidden" name="title" value=<?php echo $url; ?> > <input type="hidden" name="nowPage" value=<?php echo $pageNumber; ?> > <p>文章</p> <textarea name="comment"></textarea > <br> <p><button type="submit">送 信</p> </form> <?php } else if( (isset($_SESSION['login']) == false) && ($pageNumber == $totalPageNum - 1 ) ) { ?> <h3>投稿するにはログインしてください。</h3> <?php } ?> <?php for($i = 0; $i < $totalPageNum; $i++) { ?> <a href="thread.php?title=<?=$url?>&page=<?=$i?>" > <?php echo $i ?></a>&nbsp &nbsp; <?php } ?> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2022/02/20 21:21

この段階で何も分からないのなら結局元々の処理やWebのリクエストやレスポンスを全く理解してないと言うことになるので、どんなアドバイスも無駄になります。 作業依頼なら業者にしてください。基礎の理解に努めてください。
int32_t

2022/02/21 00:12

1はJavaScriptの入門書ならだいたい書いてあるんじゃないでしょうか。本を読んでみてください。 2は https://teratail.com/questions/lphb5zv8pwjcee の回答に書いてありますが、読んでないんでしょうか。
AbeTakashi

2022/02/21 10:30

いきなり掲示板のスレッドを非同期で表示するとかややこしいことをやらずに、まずはJavaScriptの非同期処理だけについて理解を深めるとか単純なことから始めた方が良いですよ。これまでの質問を見てると、階段を登るのにいきなり5段飛ばしくらいでやろうとしてますし、分からないところをほぼ丸投げな感じです。1段ずつ登っていくのがいいと思います。焦らずに。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。