PHPでDBのテーブル内容変更画面を作成する際の入力チェックについて

このQ&Aのポイント
  • PHPでDB内のデータを取得してテキストボックスに表示する画面を作成しています。変更(UPDATE)操作の際にJavaScriptで入力チェックを行いたいのですが、複数行の入力チェック方法についてわかりません。
  • JavaScriptでは複数行の入力チェックには配列を使用する必要がありますが、PHPのfetch関数を使って表示しているため、行数がわかりません。行数を取得する方法について教えてください。
  • 入力チェックによって空欄やバイト数の制限をかけることで、DBのテーブル内容変更画面をより安全に操作できるようにしたいです。行数を取得する方法についてお知恵を拝借したいです。
回答を見る
  • ベストアンサー

複数のテキストボックスに対する入力チェック

こんにちは。PHPでDBのテーブル内容変更画面を作成しています。PHPでDB内のデータを取得し、それをwhileで列数分回してテキストボックスの中に表示させ、その中身を変えて変更ボタンを押せば変更、削除ボタンを押せば削除したりできるような画面です。 変更(UPDATE)にあたってJavaScriptで入力チェック(空欄チェックとバイト数チェック)をかけたいのですが、1行だけしか出力されない(=DBテーブル内にデータが1行分しかない)場合にはチェックが有効なのですが、複数行になるとチェックしてくれません。 JavaScriptでは複数行のチェック(?)には配列を使わなければならないと知りましたが、PHPのfetch関数を使って回して表示しているため、行数がいくつになるかはわかりません。行数をどうやって取得すればいいのか、ご存知の方がいらっしゃいましたらぜひご教授ください。よろしくお願いいたします。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 1レコードに対してテキストボックスと「更新」「削除」のボタンが存在するということで良いでしょうか? 下のようなHTMLが生成されているとします。 <form name="record1" action="regist.php" method="post"> <input type="hidden" name="id" value="1"> <input type="text" name="text1"> <input type="button" value="更新" onClick="updateCheck(this.form);"> <input type="button" value="削除" onClick="deleteData(this.form);"> </form> <form name="record2" action="regist.php" method="post"> <input type="hidden" name="id" value="2"> <input type="text" name="text1"> <input type="button" value="更新" onClick="updateCheck(this.form);"> <input type="button" value="削除" onClick="deleteData(this.form);"> </form> <form name="record3" action="regist.php" method="post"> <input type="hidden" name="id" value="3"> <input type="text" name="text1"> <input type="button" value="更新" onClick="updateCheck(this.form);"> <input type="button" value="削除" onClick="deleteData(this.form);"> </form> <form name="record4" action="regist.php" method="post"> <input type="hidden" name="id" value="4"> <input type="text" name="text1"> <input type="button" value="更新" onClick="updateCheck(this.form);"> <input type="button" value="削除" onClick="deleteData(this.form);"> </form> こうあったとしたら、 function updateCheck ( formObj ) { // テキストエリアの情報を取得 var text1 = formObj.text1; if ( text1 != "" ) { formObj.submit(); } else { alert ( "空での登録は出来ません。"); } } 更新ボタンをクリックするとそのフォームオブジェクトがupdateCheckに渡され、 そのフォームオブジェクト内のtext1の内容を取得して、空白であるかどうか チェックを行い、入力されていればそのフォームをサブミットします。 入力されていなければalertでエラーを表示します。 このようなフォームの出力の仕方だとしたら行数は特に取得することなく 希望どおりの動作が出来ると思います。 全然違っていましたら、またご相談ください。 ちなみに行数の取得方法ですが、DBにもよりますが取得結果より件数を取得する 関数が用意されています。それを使い、HTML(JavaScript)を生成するときに 埋め込めばいいと思います。 <?php // 取得件数を取得 $cnt = 取得; ?> ・・・・ ・・・・ ・・・・ function test () { var recordMax = <?= $cnt ?>; } こうすることによりJavaScriptでも取得した件数を使うことが出来ます。

chizudara
質問者

お礼

どうもありがとうございました!御礼が遅くなってしまって申し訳ありません。大変参考になりました。今はオフィスにいないのでまだ試せませんが、仕事明けで早速試してみたいと思います。本当にありがとうございました。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 #1です。 すいません。 function updateCheck ( formObj ) { // テキストエリアの情報を取得 var text1 = formObj.text1; if ( text1 != "" ) { formObj.submit(); } else { alert ( "空での登録は出来ません。"); } } は下が正しいです。 function updateCheck ( formObj ) { // テキストエリアの情報を取得 var text1 = formObj.text1.value; // ここを間違えていました。 if ( text1 != "" ) { formObj.submit(); } else { alert ( "空での登録は出来ません。"); } }

chizudara
質問者

お礼

2度もご丁寧にありがとうございました!

関連するQ&A

  • 複数チェックボックスの入力制限について

    現在PHP5.05+Mysql4.0.25にて、プログラムを作成しておりますが、 例えば10個のチェックボックスに対して、入力を2個まで とするのに、Javascriptで出来るのを見つけましたが、 それはformタグ内で、数えている為に、 複数のチェックボックスのグループがあると 一度に送信出来なくなってしまいます。 一度に、複数のチェックボックスのグループの データを送信するのに、何かよい方法はありますでしょうか、 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • チェックボックスについて

    こんばんは。いつもお世話になっておりますが、こちら(JavaScript)では、初めての投函です。 よくヤフーやホットメールなどのwebmailの受信ボックスなどに、削除するためのチェックボックスが備わっておりますが、全てのチェックを入れるために、最初の一行目のチェックボックスにチェックを入れることで全てにチェック。チェックを外す事で全てを外す。という動作が行われていると思います。 私、PHPの方ではよく質問させていただく事もあり、お恥ずかしいながら、上記質問をPHPで・・と思っていたら、これら動作はJavaScriptであることをお教え頂きました。 これまでJavaScriptには無縁であったこともあり、色々なサイトにお邪魔しているものの、設定ボタン、解除ボタンによる設定・解除の説明はあるものの、チェックボックスによる、これらの動作の説明がなく、改めてこちらにて質問させて頂くに至りました。 色々と試してはいるものの、チェックボックスにチェックを入れると全てにチェックが入るが、解除するまでに至っておりません。 お忙しい中恐縮ですが、ご指導のほど宜しくお願い申し上げます。

  • エクセルでのチェックBOXの並べ替えについて

    エクセルでチェックBOXを使って表を作成しました。 列数は10列以上で行数も100行位はあります。 行ごとで並べ替えをすると チェックBoxのみずれてしまいます。 下記についてはネットで調べ設定済みです。 (1)Boxがセル内に余裕をもっておさめる (2)セルに合わせて移動する設定にする。 (3)並べ替えをする時に表全体を選択する。 3列位の表だとちゃんとチェックBoxも行に合わせて動いてくれるのですが・・・・ 列数や行数が多い場合は無理なのでしょうか? 何か裏技のようなものがあるのでしょうか? 列数が少ないと出来て多くなると出来ないというのもいまいち納得がいかないのですが・・・ 方法をご存知の方がいらっしゃったら教えてくださいm(_ _)m 宜しくお願いします。

  • チェックボックスからの複数検索条件での抽出

    phpとpsqlを使っています。 配列で受け渡されたチェックボックスで複数選択された値$param[]を、別テーブル(t_sample)のフィールド(data)で保存されているカンマ区切りのデータと参照して$paramのデータが1つでもあれば、そのテーブルの行を抽出したいのですが…。 $param[]の数によって、SQL文が変わるので、悩んでいます。 どなたか解決の糸口をご指南ください。

    • 締切済み
    • PHP
  • テキストエリアのチェック

    TEXTAREAに複数行のデータを入力する場合、 ROWSで設定した行数内に収まっている事(スクロール不要である事)を チェックする方法は無いでしょうか?

  • リスト表示からのボタンアクションに関して

    漠然とした質問で申し訳ありませんが、教えて下さい。 あるDBからデータを検索したものをリスト表示し、その情報に対して 変更ボタンや削除ボタンを設けて、アクションを起こしたいと考えて いますが、PHPでそのようなケースはどんな記述をするのが適切で しょうか? PHPの場合、例えば1行毎に変更ボタンや削除ボタンを設けたとし ても、同じ情報を2のファイルへ送信できないかと思われます。 それぞれの行にチェックボックスを設けてそこへチェックが入った ものを変更、更新するとか。。。。 できればサンプルなんかも頂ければ幸いです。 よろしくお願いします。

    • 締切済み
    • PHP
  • 複数行のデータのPOST処理に関して

    複数行のデータのPOST処理に関して 初歩的な質問で申し訳ありませんが、教えて下さい。 現在、テーブルよりデータを取得し、それを画面上にレコードとして複数表示させて います。 但し、そのデータは更新対象である為、その中の幾つかのデータに対し修正を加え、 登録ボタンで一斉に登録したいと考えています。 単純に対象レコードが1件のみで、それのみが表示され、その内容を変更するというような 場合は、POST処理等で更新処理が簡単ですが、複数のデータが一挙に表示され、それら内の 複数が1つボタンで一挙に更新するとなるとどのようにPOST処理をすれば良いでしょうか・・・ javascript と併用して、INPUTのname を変数化してあげればなんとなくは実現可能かとは 思われますが、画面上をフラットとしたい為、INPUTはなるべく避けたいと考えています。 何か良い方法はないでしょうか。。。。 教えて下さい。

    • ベストアンサー
    • PHP
  • テーブルのテキストボックスにDB取得値入れたい

    いつもお世話になっております。 今度以下のようなWEBページを作成したいのですが、 どのような言語でしたら作成可能でしょうか。 テーブルの行に、5つのセルがあり、それはテキストボックスで作成されています。 行の横に、検索ボタンを設置して、そのボタンを押すと、子ウィンドウのようなものが開き、 そこで、大区分、小区分を選択して、「選択」ボタンを押すと、DBに登録されているデータを取得して、親ウィンドウの5つのセルに値を代入したいのです。 例えば以下のようなテーブルがあるとします。 | 検索ボタン | 種類 | 値段 | 個数 | 仕入原価 | 小計 | 検索ボタンを押して、子ウィンドウを開き、例えば大区分「フルーツ」、小区分「りんご」を選ぶと、DBに登録してある、りんごの「値段」と「仕入原価」を取得して、 テーブルに値を格納します。 | 検索ボタン | 種類 | 値段 | 個数 | 仕入原価 | 小計 |         | りんご| 100 | | 70 | | 後は、個数を入力すると、小計に、「値段」×「個数」値を入れたいと思います。 いろいろ調べてみたのですが、これといった情報を見つけることができませんでした。 あいまいで申し訳ないのですが、最低限のこの言語があれば、作成可能というのを教えていただけないでしょうか。 javascript + AJAX あたりではないかと思うのですが、全く確証がなくて困っております。 「こういう言語で、こういう方法があればできる」というのを大変お手数ですが、 教えていただけると助かります。 宜しくお願いします。

  • チェックボックスから複数のvalueを取り出す

    HTMLフォームから、action="file.php"でデータの受け渡し→PHPで送られてきたvalueに応じて文章を出力、というプログラムを作っています。 例: グループAのラジオボタン1にチェック、送信 →グループAで押されたラジオボタンを送信されたvalueで判別、この場合はvalue==A →value==Aの場合に表示する文章を変数に受け渡し、その変数で表示 ラジオボタン、テキストボックスのvalueは$_POST['XXX']で取り出せたのですが、チェックボックスのデータだけが取り出せません。こちらの質問を検索したとき、多次元配列という言葉を見かけたのですが、いまいちよく分かりませんでした。 チェックボックスの複数のvalueで、上記の例のような動きを実現させるにはどうしたらいいでしょうか。どなたかご教授ください。

    • ベストアンサー
    • PHP
  • 複数式のチェックボックス

     こんにちは。 お昼からjavateaです。 PG初級者なので教えてください。(o⌒∇⌒o) 今複数式のチェックボックスを作っているのですが、これをボタンがクリックされたときに表示するようにしたいです。例えばボタンが押されたら46都道府県(46個)のチェックボックスが同画面に小さく出てきて複数個選択できる。そして選択したものの情報が値として送られる。 分かりにくくてすいませんが、このような物は出来ますでしょうか??よろしくお願いします。(*^▽^*) あ、分からないところは「複数個チェックボタンを作るところ」や「値の受け渡し」ではなく「プルダウンみたいな感じでチェックボックスを表示させるところです。」**

専門家に質問してみよう