リストボックスを使ってmysqlのテーブルから
データを得たデータをテキストボックスに入れる方法で悩んでいます。
やりたいことはこんな感じです。
[商品A▼]←リストボックス リストボックスの内容は
データベースより取得
[230 ]円←テキストボックス
mysqlテーブル
商品 値段
商品A 230
商品B 460
商品Aを選ぶと自動的にテキストボックスに値段が
入るようにしたいのですが・・リストボックスの
データを拾ってくることはできるのですが、テキスト
ボックスに入力することができません。やり方を
ご教授お願いします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
深く考えすぎのような気がします。
最初にsqlで情報を読み込んでおき、
セレクトで選択してサブミットするときに
各商品の情報をまとめて投げてやればすむでしょ?
まぁ前回同様スルーされそうですが、この手の
コーディングはなるべく単純な仕組みにおきかえて
書くと理解がふかまるとおもいます
<?PHP
if ($_GET["shohininfo"]==""){
print <<<eof
<form action="$PHP_SELF">
<select name="shohininfo">
<option value="001,商品A,230">商品A
<option value="002,商品B,460">商品B
</select>
<input type=submit value=check>
</form>
eof;
}else{
$shohin=split(",",$_GET["shohininfo"]);
print <<<eof
商品ID:{$shohin[0]}<br>
商品名:{$shohin[1]}<br>
価格:{$shohin[2]}<br>
eof;
}
?>
No.6
- 回答日時:
こんにちは。
前で述べた通りJavaScriptを使用しない場合はブラウザ上で何が
行われたか取得できないためにボタンを用意して、それを選択してもらう
必要があります。
<?php
// 選択された商品を受け取る
$code = $_POST['n'];
// どのボタンが押されたか
$flg = $_POST['btn'];
// 値段を初期化
$price = "";
$select = "<select name=\"n\">\n";
$select .= "<option value=\"\">商品選択\n";
while ( $r=mysql_fetch_array($result) ) {
$selected = "";
// 画面を再描画した際に選択内容を保持
if ( $r['CCODE'] == $code ) {
$selected = " selected";
}
$select .= "<option value=\"{$r['CCODE']}\"$selected>{$r['NAME']}\n";
}
$select .= "</select>\n";
if ( $flg == "値段を入力" ) {
// 値段を入力ボタンが押された時、受け取った商品コードを使用して
// テーブルより情報を取得し、price変数へ代入
// price変数は値段入力フィールドの初期値として使用
$sql = "SELECT PRICE FROM TESTTEST WHERE CCODE='$code'";
$result = mysql_query( $sql );
$r = mysql_fetch_array($result);
$price = $r['PRICE'];
} else if ( $flg == "登録" ) {
// 登録ボタンが押された時
// 便宜上登録にしてあるが、商品選択後に行う処理をここへ
print "登録処理";
}
?>
<html>
<head>
<title>商品選択</title>
</head>
<body>
<form action="test.php" name="test" method="post">
<?= $select ?>
<input type="submit" value="値段を入力" name="btn">
<br>
値段<input type="text" name="p" value="<?= $price ?>">
<br>
<input type="submit" value="登録" name="btn">
</form>
</body>
上記のようにすると、「値段を入力」ボタンが押された場合はデータベースより
商品コードを元にして値段を取得します。
取得した値段をテキストフィールドのvalueにセットすることで表示を行います。
No.5
- 回答日時:
こんにちは。
JavaScriptを使用しないで実現しようとすると前に上げた1番の方式になり、
また、コンボボックスを変更した時に自動的に入力することが出来ません。
(コンボボックスを変更したという動作をJavaScriptで拾っている為)
JavaScript無しでやる場合は
「値段入力」みたいなボタンを横に表示し、それをユーザに選択させて
サーバにコンボボックスの商品コードの選択値を送信し、
その商品コードを使用してテーブルよりその商品の値段を取得して
それをPHPにてテキストフィールドのvalueにセットして画面を呼び出します。
No.4
- 回答日時:
mysqlとjavascriptを切り分けて考えるとわかりやすい
かと思います。
ひとまずjavascripで以下のように書きます。
javascriptもオブジェクトとしてデータを管理する
とスケーラビリティを確保できます
これにあわせてmysql->phpでデータを流し込めば
よいでしょう。
<script language=javascript>
function setProperty(name,price){
this.name=name;
this.price=price;
}
function changeSelectFunc(obj){
var val=obj.options[obj.selectedIndex].value;
if (val==""){
obj.form.shohin_id.value=""
obj.form.shohin_name.value="不明"
obj.form.shohin_price.value="0"
}else{
obj.form.shohin_id.value=val
obj.form.shohin_name.value=shohin[val].name
obj.form.shohin_price.value=shohin[val].price
}
}
shohin =new Object();
shohin["001"]=new setProperty("商品A",230);
shohin["002"]=new setProperty("商品B",460);
shohin["003"]=new setProperty("商品C",500);
</script>
<form>
<select onChange="changeSelectFunc(this)">
<option value="">選択して下さい
<option value="001">商品A
<option value="002">商品B
<option value="003">商品C
</select><br>
ID:<input type="text" name="shohin_id"><br>
商品:<input type="text" name="shohin_name"><br>
価格:<input type="text" name="shohin_price"><br>
</form>
No.3
- 回答日時:
こんにちは。
方法はいろいろあると思いますが、こんな感じで出来ると思います。
<?php
// 商品と値段を取得するSQL
$sql = "";
// resultに取得した結果が入る
$result = mysql_query ( $sql );
$count = 0;
$price = array ();
// コンボボックス用の文字列生成
$select = "<select name=\"n\" onChange=\"setPrice(this.selectedIndex);\">\n";
$select .= "<option value=\"\">商品選択\n";
while ( $r=mysql_fetch_array($result) ) {
$select .= "<option value=\"\">{$r['NAME']}\n";
// 値段配列に取得した値段を代入
$price[$count] = $r['PRICE'];
$count ++;
}
$select .= "</select>\n";
// JavaScript用の配列文字列を生成
$js = "var price = new Array(".implode ( ",", $price ).");\n";
?>
<html>
<head>
<title>商品選択</title>
<script type="text/javascript">
<!--
<?= $js ?>
function setPrice ( index ) {
if ( index != 0 ) {
document.test.p.value = price[index-1];
} else {
document.test.p.value = "";
}
}
//-->
</script>
</head>
<body>
<form name="test">
<?= $select ?>
値段<input type="text" name="p">
</form>
</body>
こんな感じで行えば、商品を選ぶと事前に取得しておいた値段が
動的に入ります。
JavaScript必須となる書き方ですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- 財務・会計・経理 簿記の商品のボックス図について 商品勘定のボックス図で写真のように金額の増加と減少理由が借方貸方それ 2 2022/04/07 23:44
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- アニメ メルカリ ポケカに関して 1 2022/11/15 17:40
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) エクセル シート内のボックスを縦並びから横並びに 7 2023/04/05 04:28
- Amazon Amazonほしいものリストについて 1 2022/11/23 18:05
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLからのデータをページに1...
-
接続ができません
-
MySQLカラム名は日本語と英数字...
-
SQLのVARCHARとVARCHAR2の違い
-
cseデータ閲覧時に文字化け
-
mysqlへのインポート処理がうま...
-
like句を使って日本語を検索す...
-
php・Mysql Like文で日本語が使...
-
二進数を勉強しているのですが...
-
列数が多いと結果が行単位に改...
-
副問合せにLIKE文を使う方法は...
-
AccessからOrcleのODBCリンクテ...
-
ERROR 1045 (28000) (using pas...
-
Usage: \\.<filename> | sourc...
-
設定が間違っていないのに文字...
-
VBAで変数内に保持された二次配...
-
テーブル作成でエラーが出てき...
-
MySQLに外部PCから接続できない
-
Column '' not found.
-
postgresQL に格納した画像ファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームから送信した値とMySQL...
-
PHPにてSQLから取得したデータ...
-
プレースホルダを使った複数カ...
-
MySQLからのデータをページに1...
-
php+MySqlでの検索ページ
-
mysql sqlエラー
-
mysql+php リストボックスにつ...
-
フォームからmySQL-DBにデータ...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
MySQLカラム名は日本語と英数字...
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
VBAで変数内に保持された二次配...
-
プライマリーキーの昇順でソー...
-
ERROR 1045 (28000) (using pas...
-
INT型は金額の型に使用するべき...
-
like句を使って日本語を検索す...
-
RPMのmysqlとmysql-serverの違い
おすすめ情報