フォーム部品の増加とDB・ソースの変更

このQ&Aのポイント
  • フォーム部品が増えると、DBやソースの変更が必要になることがあります。
  • しかし、可変的にDBやソースを変えずにフォーム部品を増やす方法はあるのでしょうか?
  • 理想的には、ブラウザ上での設定で自動的に掲示板や発注管理システムを構築したいと考えています。
回答を見る
  • ベストアンサー

formが増える

テキストやラジオ、チェックボックスといったフォーム部品。 図書管理システムと発注管理では、フォーム部品を増やしたり、減らさなければなりません。 それにしたがって、DBやソースも改変する必要があります。 フォーム部品が増えても、可変的にDBやソースを変えなくてもよいプログラムはあるのでしょうか? 私的には、DB(Mysql、sqlite)のフィールドを増やすのはよいですが、ソースのSQL文の書き換えやバインドが変わって、エラーが起きやすいのでソースを書き換えなくする方法があったらよいな、と都合よく考えてしまいます。 理想としては、ブラウザ上でフォーム部品を設定したら、完璧でなくても自動的に掲示板やら発注管理システムを構築できるとうれしいです。いまは手書きで全部直しています。

noname#102630
noname#102630
  • PHP
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> フォーム部品が増えても、可変的にDBやソースを変えなくてもよいプログラムはあるのでしょうか? フォームの作成自体は、PHPなら部品数に関係なく汎用的なソースを作るのはさほど難しくないと思いますので、 問題は、DBの扱いと考えます。 アンケートシステムなどフォーム内のパラメータがフレキシブルなシステムで使われる手法では、 1.テーブルを細分化する。 (1件の項目を複数のテーブル内の集合として表現するリレーショナルデータベースの本来の使用方法?) 2.シリアライズする。 (パラメータを全て1つの文字列表現に置き換える) などが良く見受けられます。  1は、RDB設計にそれなりの知識が必要ですが、プロの方々は処理効率や後々データの利用のしやすさからこちらを好むようです。  2は、標準的に必要なパラメータは、DB上に全て専用のフィールドを用意します。さらにもう一つTEXT形式のフィールドを用意しておきます。 標準外のパラメータは全てserializeにより文字列に置き換えてDBに保存します データを利用する場合は、unserializeすれば全て元の変数に戻ります 1つのレコードで変数の数を可変できるため設計が楽です 欠点としてデータ検索などのデータ利用上の処理効率は落ちます。 http://jp.php.net/manual/ja/function.serialize.php http://jp.php.net/manual/ja/function.unserialize.php

その他の回答 (1)

  • tom951
  • ベストアンサー率30% (29/96)
回答No.1

自分はDB操作用の自作クラス作っているけど 機能としたらベースのプログラムからは連想配列(このキーをDB側のフィールドと同じにして)と値を渡して insert文とupdate文の挿入情報は自動的にSQL文生成されている。 ただしGETやPOSTで受け取ったデータをそのまま渡すのはセキュリティー的に問題があるので各種エスケープ処理は必須です。

noname#102630
質問者

お礼

回答ありがとうございました。 できるんですね! スキル的には複雑ですが、そんなクラスがあったら便利。 ぜひ公開お願いしますm(_ _)mw

関連するQ&A

  • データ検索について

    現在フォームに入力された日付を検索して、その値に紐付くデータを 表示させるといった、検索システムを作成しています。 しかしフォームの値が上手く渡りません。 現在の症状としては フォームの値 2008-01-01 × フォームの値 "2008-01-01" ○ 上記の様に値をダブルクォーテンションで囲むと上手く渡るのですが、 囲まないと上手く渡りません。 なぜこのような動作になってしまうのか分からず、解決できません・・・ この解決策をご教授頂けると幸いです。 開発環境は UI Flex DB接続 AMF PHP DB MYSQL 日付のフォーマットはyyyy-mm-dd dateフィールドの値はtext 以下がソースになります。 ************************************************************* //$date フォームの値 function SearchData($date = "") { GLOBAL $dbh; //DB接続 if($date) { $sql = " SELECT * FROM tDate WHERE date = \"".$date."\""; } else { $sql = " SELECT * FROM tDate"; } $result = mysql_query( $sql ); while( $val = mysql_fetch_assoc( $result ) ) { $res_list[] = array( "date" => $val['date'], ); } return $res_list; } ************************************************************* 以上よろしくお願い致します。

    • 締切済み
    • PHP
  • Yomi-search(PHP)を設置する際のconfig.phpの設定

    http://sql.s28.xrea.com/src/ の手順でYomi-sseach(PHP)を設置する際にconfig.phpの設定をしてサーバーへUPし、パーミッションの変更までしてみましたがセットアップ画面に行き着きません。どなたか詳しい方がいらっしゃいましたら、ぜひ教えて下さい!あほなので出来れば分かり易く具体的に・・・。贅沢行って申し訳有りません。詳細は以下のとおりです。 ・サーバー:ロリポップ ・MySQL:作成済み ・パーミッションは合っているかちょっと不明 <?php #データベース設定 $cfg = array( #'db_sql' =>'sqlite', #SQLサーバ名 'db_sql' =>'mysql', #SQLサーバ名 'db_host' =>'localhost', #SQLのホスト名 'db_user' =>'MySQLのユーザ名', #SQLのユーザ名 'db_password' =>'MySQLのパスワード', #SQLのパスワード 'db_database' =>'MySQLのデータベース名', #SQLのデータベース名 'sqltb' =>'ys_', #テーブルのプレフィックス ) ?> 上記のホスト名・テーブルのプレフィックスは意味が分かってないので自信ありません。

    • 締切済み
    • PHP
  • WEBベースのDBシステム

    MySQLをDBとしWEBベースで検索や登録、削除などを直接SQLを使わずに運用できるシステム(オープンソースで実現したもの)はあるでしょうか? イメージ的にはデヂエ http://d.cybozu.co.jp/ ですが、個人で使うには費用がかかりすぎますので。 関連URLなどあったらご教示ください。

  • SQL キーワード検索にて

    お世話になります。 DBからSQLでキーワードによる検索をかけるときですが、 二つ以上のワードがあるときに、一つのキーワードがほかのキーワードと かぶってしまう場合、例えば゛、『あいうえお』と『いうえ』等で絞り込むと、 結果的に『あいうえお』が含まれるものだけが該当しますが、これを、 『あいうえお』を含み、更にそれ以外にも『いうえ』が含まれるものを 絞り込むには、どうすればよいでしょうか。 つまり、『あいうえお』のみしか含まれないものは該当しないようにする方法です。 現在のSQLは、 (SELECT * FROM xxxx WHERE tablename LIKE '%あいうえお%' AND tablename LIKE '%いうえ%') のような感じです。 使用しているDBは、MySQL、SQLiteです。 何卒よろしくお願いいたします。

  • フォームからDBへの接続

    フォームからDBへのデータ挿入なんですが、どうしてもうまくいきません・・・。 MYSQLへの接続はうまくいくのですが・・・ <? $link=mysql_connect("localhost","****","::::"); mysql_select_db("@@@@@",$link); $sql=" insert into users( passwd, name, name_kana, seibetu, birthday, email, postal_code, xmpf, address1, address2 ) values( '$passwd', '$name', '$name_kana', '$seibetu', '$year-$month-$day', '$email', '$postal1', '$xmpf', '$address1', '$address2' )"; mysql_query($sql,$link); mysql_close($link); ?> 上記がソースです。 bithdayのフォールドはdatetimeで、年はyear月はmonth日はdayとしています なにかおかしいところありますか?

    • ベストアンサー
    • MySQL
  • CGIによる、MySQLのデータの更新処理が出来きず困ってます。

    最近、perlの勉強をはじめ、 勉強がてら、 ユーザ管理フォームを作りたく CGIのソースを書いています。 データはMySQLに登録しています。 以下のプログラムを使用し、 データの更新をしたい際に、 更新作業を行うと、 エラーなどは出ず、 ソースにあるように、 「データを正常に更新しました」と表示されますが、 更新されたか?をMySQLで確認すると、 データが更新されておらず、 更新作業を行う前と何ら変わらない値が登録されています。 「update文」のあたりがおかしいのかな?と 感じたのですが、 どこが検討はずれなのか?が分からず、 前に進めないでいます。 アドバイスいただけると大変ありがたいです。 宜しくお願い致します。 ソースは以下の通りです。 ========================================= use CGI; use DBI; $form = CGI->new; print "Content-type: text/html\n\n"; print "<html><body>\n"; # DBに接続 $db=DBI->connect("DBI:mysql:dbname","username","pwd", {RaiseError => 0, PrintError => 1}); if(!$db){ print "失敗\n"; exit; } # UPDATE文作成 $sql = "update test20090702 set agent='$agent',attend='$attend',name='$name',sex='$sex',remarks='$remarks' where name='$name'"; # SQL実行 $sth = $db->prepare($sql); if(!$sth->execute){ print "SQL-fail\n"; exit; } # ステートクリア $sth->finish; # DB切断 $db->disconnect; print "データを正常に更新しました。\n"; print <<"HTML"; HTML ========================================= ■開発環境:Fedora9 ■MySQL:mysql-5.0.77-1

    • ベストアンサー
    • CGI
  • 今回、windows 環境下で動くデスクトップアプリケーションを構築し

    今回、windows 環境下で動くデスクトップアプリケーションを構築しようと思っています。 データベースを使用することも考えておりますが、その選定で悩んでいます。 一応、色々と調べてみて候補として【sqLite】【Sql Server】を考えていますが、どちらにするのかと言うと、いまいち決め手がありません。 上記二点を候補に挙げたのは、以下の点です。 ・動作が軽快である(との記述が多い) ・C# .Net Framework との実績がある(SqlServer に関しては、問題ないと思います。sqLiteに関しては、C#での使用実績を参考にしています) 作成するアプリケーションに関しては、公開して配布出来れば良いかなと思っています。(あくまで希望ですが) その為、Mysql や PostgreSQL の様なDBサーバー(と言うでしょうか?)の導入は今回省きました。 再配布に関するライセンスと、インストーラー作成の際に同時に簡易的に構築できるのかどうかとかその辺を決め手にしたいと考えております。 通常このような要件の場合、どのようなDBシステムを採用するのが良いのでしょうか? ご意見をお聞かせください。 もちろん、上記DBシステム以外の物であっても推薦して頂ければ嬉しいです。

  • oracle,sql-server,DB2,フリーDB

    oracle 10g sql-server 2005 DB2 フリーDB(mysqlなど) はどれがいいでしょうか? 一応3年ぐらい前までは開発現場にいたので一通り知っています。 すべて経験ありますが管理はしたことはありません。 価格ならフリーが一番でしょう。信頼性で言うとoracle でもコストが高い。 MSとくっつくならsql-serverだと思うのですが。 まだ社内でどの程度の規模になるかも把握し切れていませんが、 やはり無難にoraが一番でしょうか?? 後々に業務システムの開発をします。 javaにするかVB,delphiなどにするかも決まってません。 DB2なら一応資格も持っているんですけどね。 管理、構築の容易さなどそれぞれの特徴も教えてください。

  • SQLiteによる運用について

    SQLite3によるプロジェクト管理システム(Tracとか)の運用を考えております。 下記件について知りたく投稿させていただきました。 1.SQLiteは、データが肥大化するほどパフォーマンスが低下しますか? 2.SQLiteは、データの損失が発生しやすいでしょうか? の以上です。 比較対象としてはMySQLを考えています。本用途については、下記に述べますので、本用途での運用での問題及び、MySQLを使った場合の利点についてお答いただければ幸いです。 2.に関しては、どちらも大差ないと思いますが、当方ではVMWareにより、ゲストPCを仮想ファイル上で運用しておりまして、DBファイルも仮想ファイル上の中に入ります。その運用上で注意しなければならないことがございましたらご連絡いただきたいです。 開発者はせいぜい10~15人程度ですので、複数のセッションからのアクセスについては、あまり考慮しなくてよいと考えております。

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。