• 締切済み

AJAX→PHP -DB(MySQL)- PHP→AJAXのフローについて

Yahoo! User Interface の DataTable Control を使った編集可能なリスト作成を考えています。 しかし、Ajaxでの入力値のPHPへの投げ方、また、DBから受け取った値をAjax(DataTable Control)で表示させる方法とも、やり方が全くわかりません…。 (Jasonという形式に成型して出力させる??) YUIを使用して外部テキストファイルを表示してみたりアニメーションを動かしてみたり、Ajax初心者なりに1ヶ月ぐらい試みてみましたが、DataTable Controlについては今のところ全く成果なしで困り果てています…。 どなたか勘所のある方、ご教示頂けませんでしょうか? 宜しくお願いします。 http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html

みんなの回答

  • oka5130
  • ベストアンサー率66% (35/53)
回答No.3

すみません、Inlineで編集できることは知りませんでした。 セルをクリックした時に入力欄が表示されますが、それはinputタグです。 firebugで確認してみると、クリック時にbodyタグの直下にinputタグが生成されています。 なので、データの編集にinputタグを使っていないわけではありません。 サンプルでは、データを編集して「OK」ボタンを押すとテーブルが更新されますが、 この時に非同期通信でPHPにデータを送信してMySQLのデータを更新してやれば良いと思います。 yuiのdatatable-beta.jsを見てみると、「OK」ボタンをクリックした時に editorSaveEvent というイベントが発生するようになっているので、 次のようにイベントハンドラを追加します。 (ここでは、サンプルのコードで使われている変数名を使います。) this.myDataTable.subscribe("editorSaveEvent", updateDataSource); updateDataSource関数は自分で作った関数で、この中に非同期通信の処理を記述します。 function updateDataSource(oArgs) { // 編集後の値はoArgs.newDataに格納されています // 編集したセルの列名はoArgs.editor.column.getKey()で取得できます // 編集したセルのレコードの各値はoArgs.editor.record.getData()で取得できます(MySQLのデータを更新するのに必要になってくると思います) // POSTで送信するデータをqueryに入れて… YAHOO.util.Connect.asyncRequest( "POST", url, callback, query ); } 順序が逆になってしまいましたが、PHPからデータを取得して表示させる方法は下記のページを参考にしてみてください。 http://developer.yahoo.com/yui/examples/datatable/dt_xhrjson_clean.html ご存知かもしれませんが、PHPでJSONを生成するにはjson_encode()関数が便利です。 ここではJavaScriptのコードをあまり書きませんでしたが、 簡単なものだと40行ぐらいで書けたので、オブジェクトの中身を firebugで根気強くデバッグしながらいろいろ書いて試してみてください。

squirrely
質問者

お礼

お返事遅くなりすいません。 お陰さまで値を取ることができました。 ただ実は一括で値をPOST送信する方法を模索しています。 こちらでだいぶヒントは頂いたので、具体的になりましたらまた質問させていただこうと思います。 有難うございました。

全文を見る
すると、全ての回答が全文表示されます。
  • oka5130
  • ベストアンサー率66% (35/53)
回答No.2

inputタグがない、というのがいまいちよくわからないのですが…。 inputタグを使わずに(selectやtextareaも使わず)どのようにデータを編集しようとお考えですか? connectionを使うと、Ajaxを使わない通常のフォームでデータを送信するのと同じように、 フォームのデータを簡単にPHPに送信することができます。 <form id="form1"> <input type="text" name="text1" /> <input type="button" value="送信" onclick="formSubmit(this.form);" /> </form> <script type="text/javascript"><!-- function formSubmit( form ) { YAHOO.util.Connect.setForm( form ); YAHOO.util.Connect.asyncRequest( 'POST', 'http://~', callback ); } //--></script> PHPからデータを受け取る処理は、callbackのsuccessに指定した関数で行います。 詳しくはこちらをご覧ください。 http://developer.yahoo.com/yui/connection/#forms

squirrely
質問者

補足

度々すいません。有難うございます。 >inputタグを使わずに(selectやtextareaも使わず)どのようにデータを編集しようとお考えですか? 実際にDataTable:Inline Cell Editingを見ていただくと分かると思うのですが、このパッケージのオブジェクトを使用して編集させているようです。http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html 今回の趣旨は、そのオブジェクト内で編集された値を取得し、phpに渡せるようにしたいということです。 でも、ソースを見るとHTMLタグはdivタグぐらいしか見当たりません。。 表示自体は<div id="cellediting"></div>内に表示させているようですが、それを<form id="cellediting"></form>と変えただけでは上手くいきませんでした。 ちなみに、過去に作ったソースを見直したら、アニメーションさせるBOX内に外部テキストを読み込ませていたので、connectionは使っていました。 しかしここでも高さなどを指定するのにformタグを使用しています。 このオブジェクトテーブル内の値さえ取れれば大丈夫だと思うのですが…。

全文を見る
すると、全ての回答が全文表示されます。
  • oka5130
  • ベストアンサー率66% (35/53)
回答No.1

YUIでAjaxでしたらconnectionですね。 いきなりDataTableにAjaxを組み合わせるのは難しいと思うので、 まずはconnectionを使えるようになる必要があります。 HTTP通信や非同期通信の仕組み、JSON(XMLでもいいですが)の構造、 フォームからPHPへのデータ受け渡しなどを勉強して、 connectionが使えるようになってからDataTableと組み合わせてみてはいかがでしょうか。 YUIで外部テキストファイルの表示やアニメーションができただけでは、 まだまだ知識が不十分だと思います。 まずはJavaScript、PHP、通信の基礎からですね。

squirrely
質問者

補足

かれこれ5年やっているのでPHPのHTTP通信で値をやり取りする手法は知っています。 しかし、JavaScriptで記憶してるのはかなり過去の簡単なものです。 私が知っている手法だとinputタグがないのでdocument.form.element.option.valueなどで値を取って任意phpファイルにsubmit()することができません。 ですので、例によってこのパッケージ特有の値をとる関数でもあるのでしょうかという質問でした。 値の読み込みはXMLでもJSONでも、型が定まりさえすればその型になるようPHPでファイル生成したのち、そこから読み込みできるので問題ありませんが、それ以外でパッケージ側で用意した手法があるのでしょうかという意味です。 inputタグがなくても、万事connectionパッケージで値が取れ、submit可能なのでしょうか。 ご存知でしたらお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AjaxでDBから取得したデータをリスト表示したいです

    AjaxでDBから取得したデータをリスト表示したいのですが、 successの部分にどのように記述したらいいのかが分かりません。 PHPからjason形式で配列で戻せればと思っています。 htmlには n行3列の形で縦長になる形のリストをDOMで表示(になるんですかね?)を考えています。 よく分からないので教えて下さい。

  • Javascriptの丸括弧の意味

    jQueryを勉強しなくてはならないのですが、JavaScriptの文法で疑問があるのでお尋ねします。 以下のURLで、気になる書式があります。 http://d.hatena.ne.jp/watanata2000/20100307/1267956738 > (function($) { > $.fn.foo = function(arg) { > // 処理 > }; > })(jQuery); この、最後の行の (jQuery) は何なのでしょうか?なぜこんなものが必要なのでしょうか? functionの定義なら、中括弧だけで済むはずです。 また、次のようなサンプルもあります。 http://developer.yahoo.com/yui/examples/datatable/dt_basic.html この中の「JavaScript:」の24行目。 > }(); となっています。 なんとなく予想してみると、関数を定義して、その引数を決めているようなイメージを持っているのですが、その考えが正しいかどうかが解りません。 もし解説が難しいのであれば、解説してあるドキュメントなどを教えて頂けないでしょうか。 本をおすすめ頂けたりすると、とても助かります。 宜しくお願いします。

  • The Yahoo! User Interfaceでの値取得

    こんにちは。The Yahoo! User Interfaceに関しての質問です。 現在、The Yahoo! User InterFace(YUI)のなかにある 上限値と下限値を設定できるスライドバーを利用し、 それぞれの値を取得して、フォームで送信したいと思っています。 ↓スライドバー http://developer.yahoo.com/yui/examples/slider/slider_dual_with_highlight.html しかし、バーを動かせるまでにはなったのですが、 設定した上限値と下限値を、取得する方法が分からずこまっています。 値をそれぞれ取得できる方法があれば、ぜひともご教授いただきたいと思います。 javascript初心者+プログラミング関連で初めて質問をするので、 質問の仕方等、至らない点があるかと思いますが、どうぞよろしくお願いいたします。

  • 【ASP.NET】MySQLのテーブルレコードの検索結果について

    お世話になります。ASP.NETおよびMySQLに関する質問です。 現在、ASP.NETで開発をおこなっております。 データベースにはMySQLを使用しており、以下の内容でSELECT文を 発行してテーブルレコードを取得しております。 ------------------------------------------------------ Private Function fcSelect_Table As DataTable Dim dt As New DataTable 'DB接続文字列の設定 Dim connectionString As String connectionString = "server=localhost;database=db01;user id=xxx; password=xxx;" 'DB接続 Dim _Connection As New MySqlConnection(connectionString) _Connection.Open() Dim cmd As MySqlCommand = _Connection.CreateCommand() Dim dr As MySqlDataReader = Nothing Try 'SQL文の作成 sql.Length = 0 'SELECT sql.Append(" SELECT " & vbCrLf) sql.Append(" ,AFFI_CODE " & vbCrLf) sql.Append(" ,REGIST_NUM " & vbCrLf) sql.Append(" ,KIND " & vbCrLf) 'FROM sql.Append(" FROM TBL_TEST " & vbCrLf) 'WHERE sql.Append(" WHERE " & vbCrLf) sql.Append(" AND AFFI_CODE = '" & Trim(tfx_所属.Text) & "'" & vbCrLf) sql.Append(" AND REGIST_NUM = '" & Trim(tfn_登録番号.Text) & "'" & vbCrLf) sql.Append(" AND KIND = '" & DropDownList_種別.SelectedIndex & "'" & vbCrLf) 'MySQLCommand作成 cmd.CommandText = sql.ToString 'SQL文実行 dr = cmd.ExecuteReader()       // 正常処理されることを確認済 // ここにDataTable型オブジェクトdt にdrの内容を格納する処理が必要? Catch ex As Exception End Try Return dt End Function ------------------------------------------------------ 上記で取得した結果をDataTableに格納し、それを画面に表示させたいのですが、DataTableへの格納方法がわかりません。 どなたかご教授いただけないでしょうか?

  • 【php&mysql】 何でDBを作っていますか?

    データベース、テーブルを新規に作成する時、 現在 phpmyadminを使用しているのですが phpmyadminでDBやテーブルを作成するというのは一般的なのでしょうか?

    • ベストアンサー
    • MySQL
  • PostgreSQL+DataGridView

    質問させてください。 環境:PostgreSQL、VB.NET2010、Npgsql PostgreSQL上のDBには以下のテーブルを準備 create table test_table ( id serial not null primary key, category_name text not null ); とりあえず1行のデータのみ入っています。 ユーザフォームにDataGridViewとButtonとBindingSourceを1つづつ配置。 以下のプログラムでフォームロード時にDBの内容をDataGridViewへ表示させることまでできました。 Imports Npgsql Public Class Form1 Public Const conn = "Server=****;Port=****;User Id=****;Password=****;Database=****;" Private DA As NpgsqlDataAdapter Private DT As New DataTable Private Sub Form1_Load(省略) Try Dim command As String = "select * from test_table" DA = New Npgsql.NpgsqlDataAdapter( command, conn ) DT = New DataTable DA.Fill(DT) BindingSource1.DataSource = DT DataGridView1.DataSource = BindingSource1.DataSource Catch ex As Exception MessageBox.Show(ex.Message.ToString(), "エラー") End Try End Sub End Class そこで、このDataGridViewへユーザが入力、修正し、配置したボタンを押すことでDBへ反映させたいのですが、この部分がよくわからなくて困っています。 PostgreSQL以外のDBはサンプルが沢山あるのですが・・・・ よろしくお願いします。

  • PHPでMySQLのDBに接続

    PHP,MySQLが使えるレンタルサーバーを借りているのですが, PHPでMySQLに接続し、php_dbを選択をするようにしたいのですが、 この時DBファイルはどこに置けばいいのでしょうか? 現在はMySQLの管理コマンド(?)とは別にpublic_htmlの中に PHPフォルダを作り、そこにDBファイルを入れています。 PHPのスクリプトは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>練習</title> <meta http-equiv="content-language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head><body> <?php $con = mysql_connect(); if (!$con) { echo ("Error:MySQLに接続できませんでした。<br />"); } else { echo ("接続ID=$con<br>\n"); } $selectdb = mysql_select_db("php_db" ,$con); if (!$selectdb) { echo ("Error:データベースを選択できませんでした"); } else { echo ("データベースphp_dbを選択しました。"); } ?> </body></html> としています。 MySQLには接続ができるのですが、php_dbには接続ができません。 php_dbのおき場所を変えるのか、ファイルの指定が間違っているのか その他、どの要に変更をしたらよいのでしょうか? お願いします。 環境はレンタルサーバーがLINUXでPHPのバージョンなどはわからないんです・・・!! 開発がOSがW2kでFTPで転送してます。

    • ベストアンサー
    • PHP
  • PHPからMySQL・異なるDBにコピー

    PHPからMySQL・異なるDBに接続し同じ構造のテーブルのデータをコピーすることは可能ですか? 以下を実行するとクエリが実行されず「コピーできません」が表示されてしまいます。 どのようにすればコピーできるか教えてください。 $connect1 = mysql_connect("localhost", "user1", "pass1") ; mysql_select_db("db1", $connect1); //db1内にtable1 $connect2 = mysql_connect("localhost", "user2", "pass2") ; mysql_select_db("db2", $connect2); //db2.内にtable2 $sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; $result = mysql_query($sql, $connect1)or die("コピーできません"); //$result内「$connect1」でも「$connect2」結果は同じです。 //table1とtable2の構造は同じです。

    • ベストアンサー
    • PHP
  • PHP+MySQLで社員DB

    PHP+MySQLで社員データベースを作りたいと考えています。 テーブルは共通にしておき、各社員が、自分のデータだけを見たり変更したりすることが出来るようにしたいと思っています。つまり、各社員は1つのテーブルのうち、その人のレコードだけしかアクセスできないようにしたいのです。 果たして、このようなことは可能でしょうか。

    • ベストアンサー
    • MySQL
  • Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイト

    Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイトでDBのデータが変わるとWEBサイトの表示も変わるようにするにはどうすればいいのでしょうか。

    • ベストアンサー
    • AJAX