• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(PHP)入力されたテキストをデーターベースに保管)

PHPでテキストをデータベースに保存する方法と問題点

このQ&Aのポイント
  • PHPを使用して、ユーザーの入力テキストをデータベースに保存する方法について説明します。
  • また、ユーザーが無意識にカンマを入力してしまった場合に起こる問題と解決策についてもご紹介します。
  • さらに、テキストの保存方法として、カンマ区切りではなく別の方法を検討することもおすすめします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

DBの設計に問題があります。 10件と数量も少ないのなら、質問フィールドを 10個設けて、ローテンションしながら使えば よろしいのではないですか? 質問毎にレコードを分け、枝番をキーの一部に する方法もありますが、新レコードの採番が 面倒だし、排他制御も難しくなります。 もし、設計を変更できないとするなら、区切りを カンマではなく、タブとか、利用者がキー入力で 入れられない文字にするという手もあります。

n-yuuki
質問者

お礼

区切りをタブでいこうと思います! 有難うございました!!

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

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>別の根本的なテクニック等 キーワードは「正規化」 SQLの基本的な考え方なので、まずは参考書などで学習してください。 (今回提示されたやり方はSQLとしては最悪の部類のデータ管理です)

n-yuuki
質問者

お礼

早々に有難うございます。 キーワードは正規化について、学習しようと思います。 やはりダメなデーター管理方法なのですね。 それがわかっただけでもありがたいです。

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

あまり10件まとめるなどは行わないのでなんともいませんが、 入力文字は半角を全角に置き換えて保存してはいかがでしょうか? 『mb_convert_kana』でできます。 半角の『,』と全角の『、』が別になるので、やりたいことはできますが、 入力内容はそのままにしたい時はむりです。 私がおこなうなら、フィールドを10個もつか、レコードを複数(10行)もち、 Indexで管理します。 1⇒2⇒3・・・10⇒1 のようにして保存しますね。 参考になれば幸いです。

n-yuuki
質問者

お礼

このたびは有難うございました。 結局のところ、タブ区切りでいくことにします! いろいろ制限があり、この結果になりました。 有難うございました。

n-yuuki
質問者

補足

早々に有難うございます。 なるほど、「半角を全角に置き換えて」 ってのがよさそうです。 でも、そのまんまは無理ですね。 ん~~問題はないので、これいこうか検討してみます。 それと、フィールドを10個もつってやつですが、 確かにこれも検討しました。 でも 10個目のフィールドが埋まれば 次に1個目のフィールドへ上書きしていく・・・というやり方が上手く表現できず、 実現はできたのですが、なにか力技になってるようで、 却下しました。 うまく、あとあと分かりやすく管理できる方法があればいいのですが・・・・。

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

関連するQ&A

  • 複数データベースへの問い合わせ

    同一サーバーに(DB1,DB2,DB3)と複数のデータベースがあった場合(ユーザーは同じです)、SELECTの際に複数のDBに対しての問い合わせをすることはできるのでしょうか? それぞれのデータベースはテーブルも全く同じ構造で、 そこから特定のフィールドのレコードだけを引っ張り出して使いたいのですが、SQLをどのように書いていいのかがわかりません・・・ ヒントだけでもいただけると嬉しいです。よろしくお願いします。

  • 日付を入力するには?

    PHP+SQLサーバ2003でWEB作成をしています。 PHPでPOSTされた年月日をSQLサーバのカラム(smalldate型)に格納したいのですが、入力された通りにはDBに日付が格納されないのです。 例)2007/10/10 → (DB)1905/06/14 ソースはこんな感じです。 //年、月、日と入力された値を"年/月/日" の形にする $day = implode("/",array($_POST["year"],$_POST["month"],$_POST["day"])); //入力された日付をDBに格納する。 $sql = "insert into table_name(date) values($day)"; 根本的に何かが間違っていると思われるのですが、よくわかりません。 どなたかアドバイスお願いします。

  • htmlソースからタグ内のテキストを配列に

    お世話になっております。 $addfname = trim($_POST["url"]); $html = file_get_contents($addfname); $html = mb_convert_encoding($html,"EUC-JP","auto"); 以上のように、フォームに入力されたURLを読み込み、各タグ内に記述されたテキストなどを排出(配列に格納)しようと思い、<h2></h2>のようにh2タグで囲まれたテキストは、 $pattern = '/<h2>(.*)<\/h2>/is'; $match = array(); preg_match_all($pattern, $html, $match, PREG_SET_ORDER); $h2text1 = str_replace("<h2>", "", $match4[0][0]); $h2text2 = str_replace("</h2>", "\t", $h2text1); $h2array = explode("\t", $h2text2); $h2cnt = count($h2array)-1; とすることで、なんとか配列に格納することが出来ました。 が、しかし、CSSなどで、<h2 class="~"></h2>となっていたりすると、正常に読み込むことが出来ず、</h2>タグ以降のテキストなども読み込んでしまいます。 配列に格納する方法も、どこかぎこちないように思えたりもしますが、以上のような、idや、classなど、<h2>だけで括られている以外のテキストなども読み込むには、どのようにしたら宜しいのでしょうか? お忙しいなか恐縮ですが、アドバイスのほどよろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • テキストボックスへにセル値の入力

    エクセルマクロの初心者で恐縮なのですが、ユーザーフォームのテキストボックスに下記のようなことは可能でしょうか? 例1)ユーザーフォーム上にある「テキストボックス」に「オプションボタン1」を選択するとワークシートのセル値を入力(反映)することは可能でしょうか? 例2)次に、「オプションボタン2」を選択すると、例1でテキストボックスに入力(反映)した値を消去し、かつ、このテキストボックスに数値を直接入力したら、ワークシートの別セルに入力した数値が反映されるようにすることは可能でしょうか? 例1・2)についてどのようなマクロを組めばよいのでしょうか? マクロにお詳しい方、大変申し訳ございませんか、ご指導お願いいたします。

  • VBAテキストボックスについて

    こんばんは。 エクセルVBAのテキストボックスの使用方法で行き詰っています。 配列内のデータをテキストボックスへ表示してあります。 テキストボックスを、ダブルクリックして内容を変更し、 変更したデータを配列へ格納する仕組みにしようとしています。 問題は、ダブルクリックすると、テキストボックス内のデータが消えてしまう事です。変更せず他のテキストボックスをクリックすると、データが消えたままになってしまいます。 データは表示したままで、必要な箇所のみ変更する。 ダブルクリック後何もせず、他のテキストボックスをクリックしても 、データは残る仕組みにしたいのですが、可能でしょうか? ご教授お願いいたします。 ※仕事の関係でお礼が遅くなりましたら申し訳ございません。

  • ディレクトリにあるファイルのパスをテキストフィールドに取得してDBに格

    ディレクトリにあるファイルのパスをテキストフィールドに取得してDBに格納したい javascriptを使いWEBサイトを作っています。 いろいろなディレクトリに分けたファイルを表示させて そのファイルを選ぶとパスがテキストフィールドに入るように modaldialogを使ってみましたが、javascriptではできないのでしょうか?

  • phpとhtml間のデータ送信時「テキスト改行」処理について

    自分で調べてみましたが、どうしてもわからず行き詰まりました。 どなたかお知恵を貸して頂ければ幸いです。 【使用ファイル】 a.php php処理 b.html db抽出データ表示とフォーム(編集画面) c.html フォーム入力内容表示(確認画面) データ送信はPOSTとSmarty併用 dbへはMySQLで格納 【変数】 $z テキストエリアの項目値 【流れ】 a.php→b.html→a.php→c.html→a.php→b.html/dbへ格納 1:a.phpでdbよりデータ(テキスト)を抽出し追加、変数$zに格納。 2:Smartyでb.htmlへ$zを送る。送り先はフォーム内のテキストエリア値。 3:$zにテキスト追加で改行発生 (\n発生と予測)。 4:b.htmlからPOSTでa.phpへ。 nl2br($z)処理をし、<br />挿入。 5:Smartyでc.htmlへ$zを送る。 $zには<br>と\nの両方が入っている状態。改行表示される。ブラウザのページソースでは<br />が入っている。 6-1:c.html(POST)→a.php(smarty)→b.html str_replace("<br />,"","$z)で<br />を取り除き\nのみの状態 smartyでb.htmlへ 6-2:c.html(POST)→a.php→db格納  str_replace("<br />,"","$z)で<br />を取り除き\nのみの状態でdbへ格納 6-1,2とも<br />を入れたままだと文字列に<br />が入ってしまう 7:a.php→b.htmlで再度$zを呼び出してみると(1:の処理)<br />を取り除いたはずなのに、ブラウザではきちんと改行表示されている。 ブラウザのページソースに<br />の表示はない 【疑問点】 3:\nは発生してPOSTでa.phpにきているのか? きている種類が\nまたは他の改行文字かどうかを調べる手段はあるのか?バイナリ関連で調べるのか? 6-1:<br />を削除してhtmlへ送っているのに改行表示されるのか? <br />が文字列扱いになるのはなぜか? 6-2:dbでは\nが改行として認識されるのか? 7:\nしか入っていない文字列をブラウザ表示して、なぜ改行表示されるのか? 以上です。考えれば考える程にわからなくなってきました。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • phpによるデータベース操作について(MySQL)

    http://www.yc.tcu.ac.jp/~yamada/doc/mysql/win/0602.html のサイトを参考に以下のような「データベースの内容を表示させる」プログラムを書いたのですが、うまく表示されません。(webブラウザで確認したところまっさらなページで何も表示されません) ちなみに、私はレンタルサーバを借りており、その中で作成したデータベースにphpMyAdminにてテーブルやカラムの作成を行いました。以下のプログラムは「db_sample.php」という名前で保存(エンコード:utf-8)し、レンタルサーバーの公開しているフォルダ「httpdocs」にffftpにてアップロードしています。バージョンは、phpMyAdmin2.11.11.3と、php4.1?(最新の5.2よりひとつ前のもの) ここでは仮に ホスト名:aaa.com (←これは独自に作成したドメイン名でいいのかな?) ユーザー名:user パスワード:pass データベース名:db テーブル名:person とします。 ----------以下プログラム------------ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title></title> </head> <body> <?php //データベースサーバ名の設定 $db_host = "aaa.com"; //ユーザ名の設定 $db_user = "user"; //パスワードの設定 $db_passwd = "pass"; //データベースサーバへの接続 $db = mysql_connect($db_host,$db_user,$db_passwd); //データベース名の設定 $db_name = "db"; //データベースの選択 mysql_select_db($db_name,$db); //SQL文の設定 $str_sql = "select * from person"; //SQL文の実行 $rs = mysql_query($str_sql,$db); //結果セット内の各レコードを順次参照し、連想配列に代入 while($arr_item = mysql_fetch_assoc($rs)) { //レコード内の各フィールド名と値を順次参照 foreach($arr_item as $key => $value) { //フィールド名と値を表示 print "[{$key}] = {$value}<br>\n"; } print "<br>\n"; } //データベースサーバへの接続の切断 mysql_close($db); ?> </body> </html> ------------------------------------------ わかる方いらっしゃいましたらご教授願います。

  • PHPでテキストエリアのデータを配列に入れるには?

    テキストエリアに入力されたデータ(正確にはURL)を配列で取得して、別のテキストエリアに加工して出力する、という処理を作ろうとしています。 <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post"> <textarea name="url_from" rows="20" cols="50"> </textarea><br> <input type="submit" value="作成"><input type="reset" value="リセット"> </form> ためしに、 http://www.google.co.jp/ http://www.yahoo.co.jp/ と入力して、どんな入り方をしているのか確かめてみました。 $url_from という変数に入れて取り出してみたところ、上記のふたつのURLデータのあいだに 長い空白が入っているみたいでした。 そこで、このデータを配列に入れようとしているのですが、入れ方が分からずに困っております。 入力できるデータ数は、最大で20件(20行)としていますが、5件のときもあれば10件のときも あるという仕様です。 「切り分ける関数」のようなものがあれば、できそうな気がするのですが…。 みなさんなら、どのようにして配列に組み込もうとしますか?

    • ベストアンサー
    • PHP
  • アクセス2000の使い方についての質問

    アクセス2000の使い方について2つ質問があります。だれか教えて下さい。 1.フォーム上に2つのテキストボックスを配置し、一方のテキストボックスに全角で入力した文字を、ボタンを押したら、他方のテキストボックスに半角で返すようにしたいのですが、どのようにすればいいでしょうか? 2.データが格納されているフォルダのフルパスを入力するためのフィールドを作成し、例えば、「d:\db\data\」のように入力するようにしてあるのですが、このフィールドに初心者でもフォルダのフルパスを入力できるようにしたいのですが、ボタンを押すと、フォルダを指定するダイアログボックスを表示させ、そのダイアログボックスでフォルダを選択させるようにすることはできないでしょうか? 教えてください。

このQ&Aのポイント
  • 先日購入したブラザー製品のl2550dwを使用している際に、印刷中に常に気分が悪くなるタイプの匂いが発生しました。この問題は換気が必要なレベルであり、使用されているドラムトナーは純正のものです。
  • Windows10を使用し、USBケーブルで接続しています。関連するソフト・アプリは特にありません。また、電話回線はひかり回線を利用しています。
  • このトラブルについて解決策を教えてください。発生している匂いはどのような原因が考えられるのでしょうか?また、その対策方法はありますか?
回答を見る