• 締切済み

PHP + Oracleで『処理中です』を表示したい…

PHP + Oracleで『処理中です』を表示したい… PHP5 + Oracle10gでの開発中です。 フォーム1(1.php)でUser・PWを入力し、 ボタンをクリックすると SQL(SELECT文)を実行して結果をフォーム2(2.php)に 表示する』といったものを開発したいと考えています。 結果画面でのSQL結果表示は問題なくできたのですが、 結果表示までに時間がかかってしまいます。 2.phpはこんな感じです。 <?php // POSTされたUser・PWのチェック // <head>をecho // Oracleに接続 // SQL実行 <-- これが時間がかかる // <body>をecho <-- <table>にSELECT結果をセット ?> そこで、SELECT結果を表示するまでの間『処理中です』みたいなものを 表示したいのですがどうしたらいいのでしょうか。 可能であれば、'処理中です'という文字と プログレスバーのようなGIFを表示したいと思います。 よろしくお願いいたします。

  • e60
  • お礼率100% (5/5)
  • PHP
  • 回答数2
  • ありがとう数4

みんなの回答

  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.2

Ajaxが無かった頃はこんな↓ことをやってました。 --- ・forkして別プロセスにSELECT処理をさせる ・親プロセスでは「処理中です」と表示。  そのHTML内で子プロセスの結果を表示するURLへのリンクを書いたり、  自動でリロードするようにしたり。 ・子プロセスはSELECTが完了したら、それを示すフラグ(←DB上にある)を  更新して終了。 ・結果表示処理は上記のフラグを見て処理中なら「処理中です」を再度表示。  処理終了なら結果を表示してフラグをクリア。 --- 姑息な手段ですが、まぁそれなりの効果はありますよ。

e60
質問者

お礼

Webのシステムって、いろいろとやり方があるんですね。 参考になりました。 ありがとうございました。

  • takapiii
  • ベストアンサー率55% (944/1707)
回答No.1

Ajaxを使用するですかね…。JavaScriptに抵抗がなければですが。 http://allabout.co.jp/internet/javascript/closeup/CU20060315A/ 「Ajax インジケーター」で検索してみてください。

e60
質問者

お礼

JavaScript自体に抵抗はないのですが、 あまり経験がないので具体的なイメージがまだできていません。 いろいろと調べてみます。 ありがとうございました。

関連するQ&A

  • FORMからPHP処理  

    こんにちわ ある参考書をみながらスクリプトを打ち込んでいるのですがFORM(touroku.html)で登録ボタンを押すと(touroku.php)にpostで送信されデータベース処理をした結果(登録完了)と表示されるはずなのですが何も表示されません。参考書ではhttp://touroku.htmlからhttp://touroku.phpに移動しているのですけど自分のはC:\www\touroku.htmlからC:\www\touroku.phpに移動しています。このあたりが何か関係あるのでしょうか?サーバーはANHTTPDを使用しています。なにか設定が間違っているのでしょうか?スクリプトは以下の様です。 <html> <body> <?php if(!$con=mysql_connect("localhost,"mysql","****")){ echo"接続エラー"; exit; } if (!mysql_select_db("****",$con)){ echo"データベース選択エラー"; exit; } $sql = "insert into ****_tbl(name,age) values('$nm',$age)"; //sqlを実行 if(!$res=mysql_query($sql)){ echo "Sql実行時エラー"; exit; } mysql_close($con); echo "登録完了"; ?> </body> </html>

    • ベストアンサー
    • PHP
  • 処理件数を非表示にしたい

    ManagementStudioでストアドプロシージャの開発をしています 開発中、デバッグのためにプロシージャをコールすると、SQLの発行の度に 「何件処理されました。」 「何件処理されました。」 「何件処理されました。」 「何件処理されました。」 「何件処理されました。」 ・・・ と処理件数が表示され、確認の際に邪魔で困っています。 処理件数を非表示にするにはどうすれば良いでしょうか? また同様に、SELECT文の発行ごとにSELECT結果がグリッドに表示されるのを非表示にできないでしょうか?

  • プログレスバーの表示方法

    VB6.0 SP5 WINDOWS2000 で開発しています。 処理中のフォームをEnabled=Falseにして、 プログレスバーだけを別のフォームに表示させて、 処理中はプログレスバーのValueをどんどん増やす。 終わるとプログレスバーのフォームを閉じて、 処理してたフォームをEnabled=Trueにしるのですが、 プログレスバーを表示させてるフォームが、変なんです。 プログレスバーが増えている状態の時、 そのフォームが透けてるような、後ろのフォームとまざってるような、 そんな感じになるんです。 これをきれいに表示させたいのですが、何か良い方法はないものでしょうか?

  • PHP+MySQLの繰り返し処理で…

    PHPとMYSQLを使ってWEBページを作っています。 わからないところがあるので、どなたか教えていただけないでしょうか?php5+mysql4.0.1です。 検索フォームから送られてきた条件をもとに、1ページに10件の検索結果を表示しています。表示するのはテーブル1の名前で、ここまではうまくいっています。 例:------------------------------------------ 検索結果 神奈川県 林さん 東京都 遠藤さん 北海道 近藤さん 例:------------------------------------------ このあと、上記クエリの結果が続く限りテーブル2 から名前に該当する趣味を表示したいと思います。 例:------------------------------------------ 検索結果 神奈川県 林さん テニス 東京都 遠藤さん サッカー 北海道 近藤さん 絵画 例:------------------------------------------ この処理を加えると、一ページに10件表示されていたものが最初の一件だけしか表示されなくなってしまいます。whileの中に新たにクエリを書いているからでしょうか…? 以下に問題部分だけ見やすくまとめなおしたソースを書きました。 (1)$sql = "SELECT name,ken FROM tablename where ken=$ken"; $mysql->query($sql); while($row = $mysql->fetch()){ $name = $row[name]; (2)$sql2 = "SELECT syumi FROM tablename2 WHERE name='$name'"; $mysql->query($sql2); while($row2 = $mysql->fetch()){ $syumi = $row2[syumi]; } echo "$ken"."$name"."$syumi"; } わかりづらい説明ですみません。 テーブル1に趣味のフィールドを作ることはできない前提で、このままのDB構造でうまく上記を解決することはできますか? ご指導よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPの書き方について

    PHPを独学で勉強中で、気になったことがあるので質問させていただきます。 最初に買った書籍とその次に買った書籍で書き方が違うところがあるので、普通はどちらでやるのか、また、使い分けがあるのかが知りたいです。 たとえば、データベースを1行ずつ取り出す処理で、1冊目では $pdo = new PDO($dnsinfo,$USER,$PW); $sql = "SELECT * FROM ○○"; $stmt = $pdo->prepare($sql); $stmt->execute(null); $res = ""; while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $res .= $row['△△'] ."," .$row['□□'] ."<br>\n"; } ・・・というコードがあったのですが、2冊目には同じような処理が mysqli_fetch_assoc()を使って書かれていたり、 接続の仕方も1冊目では「new PDO($dnsinfo,$USER,$PW);」を使って書かれているのが、2冊目では「mysqli_connect()」になっていたり、 他にも同じような処理がよく似たコードで書かれています。 調べてみると、PHP5.5から1冊目のやり方になった・・・ような記事を見つけたのですが、どちらの本もPHP5.5と書いてあり、いまいちよくわかりません。 詳しい方いらっしゃいましたらご教示お願いいたします。

    • ベストアンサー
    • PHP
  • PHPからのLIKE検索ができません。

    こんばんわ。お世話になります。 PHPからSQLを発行してLIKE検索をしようとしているのですがうまくいきません。(Xampp MySQL) $keyword = htmlspecialchars($_POST['keyword']); mysql_real_escape_string($keyword); $sql = "select * from master where name like '%{$keyword}%'"; テーブル内の name にマッチするはずの言葉があるのにマッチしません。 ちなみに echo $sql; とSQL文を表示させてPhpMyAdminでそれを実行すると、目的の検索結果が表示されます。 いろいろ検索してみたところ、LikeをLike Binary にする方法などがありましたが、どうにもうまくいきませんでした。文字コードはフォーム側、PHP・SQLともにUTF-8です。 '%{$keyword}%'あたりの書き方が悪いのでしょうか。 お手数おかけいたしますがアドバイスの程お願いいたします。

    • ベストアンサー
    • MySQL
  • PHP4とORACLE接続について

    こんにちは。質問をさせてください。 過去レスで調べたのですが、わからない部分がいくつかあったので 改めてご質問させていただきます。 PHP4とORACLEを接続し、ただ指定したテーブルからデータを取得する のみの動作を行いたいと考えています。 PHP4とapacheの環境設定は終了しています。 下記のソースを実行するとメモリがReadに・・・というエラーメッセージが表示されます。 ----------sample.php-------------------- <?php /* Oracleに接続 */ $conn = OCILogon("***", "***", "***"); /* SQLの作成 */ $sql = "select * from sample_php_tbl"; /* SQLのparse */ $sql = OCIParse($conn, $sql); /* 実行 */ $ncols = OCIExecute($sql, OCI_DEFAULT); /* SELECT文ならFETCH */ While (OCIFetch($sql)) { $tmp = OCIResult($sql, "COLUMN_NAME"); } /* リソースの解放 */ OCIFreeStatement($sql); /* 切断 */ OCILogoff($conn); ?> -------------------------------------------------- Oracleやその他の設定がいまいち理解できません。 ご存知の方、この件に関して詳しいサイトをご存知の方 教えていただければ幸いです。 ご質問の内容がわかりづらいかもしれませんが、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpでmysqlで作成したdbを表示したい。

    現在phpのプログラムの学習を行っています。、 phpmyadminで作成したデータベースを読み込もうとしているのですが、うまくいきません。 参考書やサイトも参考にしたのですが、警告が出ています。 よくわからなくなってきましたので、教えていただきたいです。 ------------------------------------------------------------------------------- ・実行結果 Resource id #31Resource id #40 接続ID: 選択の成否: 結果ID: 行数: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\job\job.php on line 45 ------------------------------------------------------------------------------- ・ソース <?php /*$con = mysql_connect('localhost','root','root') or die("接続できません"); print "接続に成功しました。"; mysql_close($con);*/ $url = "localhost"; $user = "root"; $pass = "***"; $db = "***"; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM t01prefecture"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //結果保持用メモリを開放する mysql_free_result($result); echo "$link"; echo "$sdb"; echo "$result"; echo "$rows"; echo "<br>"; echo "接続ID:<?= $link ?><br />"; echo "選択の成否:<?= $sdb ?><br />"; echo "結果ID:<?= $result ?><br />"; echo "行数:<?= $rows ?><br />"; $recordSet = mysql_query('SELECT * FROM my_items'); while($data = mysql_fetch_assoc($recordSet)){ /*このあたりが45行目 */ echo $data['item_name']; /* ここの値を変える*/ echo '<br>'; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。");

    • ベストアンサー
    • PHP
  • PHPからMySQLのデータが表示できない

    〇質問の主旨 PHPでMySQLのデータベース(テーブル)から データを表示させようと考えていて、 一度目は表示させることはできました。 しかし同じURLでブラウザをリロードしたところ、 二度目は表示されません。 もう一度データを表示させるためには、 どのあたりをチェックすればよいでしょうか? ご存知の方がいらっしゃいましたら、 ご教示願います。 〇質問の補足 PHPによるコードとMySQLによるクエリ文は次のとおりです。 現在、PHPの「処理1」にある"Success!"は表示させることができますが、 「処理2」は表示させることはできません。 ・コード <?php // データベースの接続 try { $dbh = new PDO('mysql:host=localhost;dbname=mydatabase', 'myname','mypassword'); } catch(PDOException $e) { var_dump($e->getMessage()); exit; } // 処理 1 echo "Success!"; // 処理 2 $sql = "select * from users"; $stmt = $dbh->query($sql); foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $user) { var_dump($user['name']); } echo $dbh->query("select count(*) from users")->fetchColumn() . "records found"; // 切断 $dbh = null; ・クエリ文 create table users ( id int(11) not null auto_increment primary key, name varchar(50), email varchar(255) unique, password char(16) ); insert into users (name,email,password) values ('hoge','hoge@dummy.com','abc'); insert into users (name,email,password) values ('foo','foo@dummy.com','def'); 以上、よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • VB2010で時間のかかる処理をする場合

    vb2010で開発しています。 時間のかかる処理をするのに、プログレスバーやアニメーションgifを使って 処理をしていることをユーザ側に知らせたいのですが、うまくいきません。 BackgroundWorkerという機能を使うというのはネットで調べたのでが、 それはLOOP等で繰り返し行う処理の場合はできそうなのですが、 今回はSQLSERVERに対して、DELETEやUPDATEを実行したいのです。 SQLを発行するのは一回なのですが、データ量が多いために時間がかかります。 それをうまく処理できる方法はありませんか?

専門家に質問してみよう