• 締切済み

HTMLのSelectBOXがonchangeした場合の処理方法について

下記のコードで、 "サイズ"選択するとそのサイズの在庫数に応じて セレクトBOXの"数量"の値を再表示させたいのですが、 やはりPHPだけでは不可能でしょうか?(クライアントは選択するのみでボタンなどは押さずに) また、JavaScriptのonchange()を使用して行う場合も PHPとの連携が良く分かりません。 具体例を元にご教授頂けると幸いです。 <?php if($article_size[$i]){ print"<br /> 【サイズ】 <select name='a_size' style='height:8; ' > <option value=''>選択</option>"; for($ii=1;$ii<=$ii_max;$ii++){ if($article_info[$i][$ii]["amount"]>0){ print " <option value='".$article_size[$i][$ii]."'>".$article_size[$i][$ii]." </option>"; }else { print " <option value='".$article_size[$i][$ii]."品切れ'>".$article_size[$i][$ii]."品切れ</option>"; }//END OF IF }//END OF FOR print" </select>"; } else { print" <br />"; }//END OF IF ELSE ?> 【数量】 <select name='a_amount' style="height:8; "> <?php if($article_info[3][0]["amount"]<=0){ print" <option value='0'>品切れ</option>"; }else if($article_info[3][0]["amount"]>0){ for($iii=1;$iii<=$article_info[3][0]["amount"];$ii++){ print" <option value='".$iii."'>".$iii."</option>"; } } ?> </select>

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

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

>セレクトBOXの"数量"の値を再表示させたいのですが、 >やはりPHPだけでは不可能でしょうか? PHPはサーバーサイドの技術なので動的な変更は不可能です。 一度サーバーにデータをおくり、その結果を再表示する ことになりますので。 この手の処理は、 (1)全商品の在庫数を渡してもらっておき、javascriptできりかえる (2)ajaxでそのたびに問合せをおこない結果をえる (3)formでなげて結果をえる のいずれかがよいと思います。 それにしても前回の質問もそうでしたが、質問するソースにしては あまりに情報がたりなすぎます。回答者がこまるので最低限 動くようなソースにしてもらわないとまっとうな回答は期待できませんね

sato777
質問者

お礼

お返事ありがとう御座いました。 多方面から良い方法が解り解決しましたが 質問する側ももう少し解説や情報量を配慮しなくては いけないなとご指摘どおりいつも痛感しております。 当方のスクリプトが数百の外部Functionファイルから構成されているのでGooの文字制限でいつも当方の説明や情報が文字オーバーになり 思うように投稿できないストレスは否めませんが 質問用に新たに動く小さなスクリプトを作る位の配慮が この”教えてGoo”というものを利用するには必要かも知れませんね。 この度はご指摘ありがとう御座いました。

関連するQ&A

  • 多次元配列の値が変わってしまいます

    以下のソースでブラウザ出力すると、セレクトボックスの 選択項目が、1号、10号、11号になってしまいます。 ためしに9号を99号にしてみたところ、今度は19号と出力されました。 どこが間違っているのでしょうか? ご教授頂けると幸いです。 <?php $a_size[3][1]="9号";//size $a_size[3][2]="10号";//size $a_size[3][3]="11号";//size $a_size[3][4]="12号";//size $a_size[3][5]="13号";//size $a_size[3][1]["amount"]=1;//amount $a_size[3][2]["amount"]=1;//amount $a_size[3][3]["amount"]=1;//amount $a_size[3][4]["amount"]=0;//amount $a_size[3][5]["amount"]=0;//amount $ii_max=5;//ring size = 9,10,11,12,13 ?> ////////////////////////////////////////////////// 【サイズ】 <select name='a_size' style="height:8; "> <?php if(!$a_size[$i]){ print " <option value=''>---</option>"; }else{ print " <option value=''>選択</option>"; for($ii=1;$ii<=$ii_max;$ii++){ if($a_size[$i][$ii]["amount"]>0){ print " <option value='".$a_size[$i][$ii]."'>".$a_size[$i][$ii]."</option>"; }//END OF IF }//END OF FOR }//END OF IF ELSE ?> </select>

    • ベストアンサー
    • PHP
  • html onchange

    下記のコードでf002は動きますが、f001が動きません。 scriptで作ったオプションメニューもonChangeが働くようにするには、いかがしたらよろしいでしょうか? <script language="JavaScript"><!-- function f001(){ if (document.test.s1.value==2) alert("2が入力されました"); } function f002(){ if (document.test.s2.value==2) alert("2が入力されました"); } var i,ht=[]; i=0; ht[i] = '<select onChange="f001()" id="s1" >'; for( var i=1; i<=5;) ht[i] = '<option value='+(i)+(i==1?' selected':'')+'>'+(i++)+'</option>'; ht[i] = '</select>'; document.write('s1 =', ht.join('')); // --></script> <form name="test"> s2 = <select onChange="f002()" id=s2> <option value=1 selected>1</option> <option value=2>2</option> <option value=3>3</option> <option value=4>4</option> </select> </form>

  • 日付のセレクトボックスで0付きの日付にしたい

    ネットで探した式を張り付ける位しかできない超初心者です。 以下のような当日表示の日付のセレクトボックス を探してペーストしたのですが1や2を01、02と表示しません。 これをどうやって直せば01,02,03,04,05と0付きの表示のセレクトボックスに 直せるでしょうか? どうぞよろしくお願いいたします。 <? $time = time(); $year = date("Y", $time); $month = date("n", $time); $day = date("j", $time); print("<select name=\"ayear\">"); //年は修正してください for( $i = 2010; $i <= 2020; $i++ ){ if( $i == $year ){ print("<option value=\"$i\" selected>$i</option>"); }else{ print("<option value=\"$i\">$i</option>"); } } print("</select>年"); print("<select name=\"amonth\">"); for( $j = 1; $j <= 12; $j++ ){ if( $j == $month ){ print("<option value=\"$j\" selected>$j</option>"); }else{ print("<option value=\"$j\">$j</option>"); } } print("</select>月"); print("<select name=\"aday\">"); for( $k = 1; $k <=31 ; $k++ ){ if( $k == $day ){ print("<option value=\"$k\" selected>$k</option>"); }else{ print("<option value=\"$k\">$k</option>"); } } print("</select>日"); ?>

    • ベストアンサー
    • PHP
  • javascriptのselectboxについての

    <select id="select" class="dropdown"> <option>選択してください</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option>             <option value="4">4</option> </select> このようなセレクトボックスを使ってif文?のように 1のoptionを選択したならAと表示する 2のoptionを選択したならBと表示する... というふうにするにはどのようなプログラムにするべきでしょうか? どうかお知恵をお貸しください。

  • phpの値の受け渡し方法について

    b.phpの <dl> <form action='a.php' method='post'> <dt>生年月日</dt> <dd> <select name="Y"> <?php $start = 1920; //始まりの年 $end = 2020; //終わりの年 $select = 2000; //最初に選択された状態で表示したい年 for ($i=$start;$i<=$end;$i++){ if($i==$select){ echo "<option value=\"$i\" selected=\"selected\">$i</option>\n"; }else{ echo "<option value=\"$i\">$i</option>\n"; } } ?> </select> 年 <select name="M"> <?php for ($i=1;$i<=12;$i++){ echo "<option value=\"$i\">$i</option>\n"; } ?> </select> 月 <select name="D"> <?php for ($i=1;$i<=31;$i++){ echo "<option value=\"$i\">$i</option>\n"; } ?> </select> 日 </dd> </dl> <input type="submit" value="送信する" /> </form> というコードで取得した生年月日をa.phpに渡し、表示させます。 a.phpファイルで <?php print('誕生日は:' . ($_REQUEST['Y']. '年',ENT_QUOTES)); print(($_REQUEST['M']. '月',ENT_QUOTES)); print(($_REQUEST['D']. '日',ENT_QUOTES)); ?> と、コードを入力しましたら、 誕生日は:1985年1月31日 という値を受け取り、ブラウザ上で表示することはできたのですが、他のコードで表示する方法はないのかと考えております。 もし、他のコードで表示できる方法がありましたらぜひ教えてください。お願いします。

    • ベストアンサー
    • PHP
  • jsのselectboxについて

    さきほど select id="select" class="dropdown"> <option>選択してください</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option>             <option value="4">4</option> </select> このようなセレクトボックスを使ってif文?のように 1のoptionを選択したならAと表示する 2のoptionを選択したならBと表示する... というふうにするにはどのようなプログラムにするべきでしょうか? どうかお知恵をお貸しください。 と質問したのですが、補足です。 この表示というのはalertではなくdocument.write("")の形での表示です。

  • わかりません・・・

    <select name="hour"> <option value="" selected>-- <?php for($i=0;$i<24;$i++){      if(strlen($i) == 1){        if($hour == $i){ ?>          <option value="'0'.<?=$i?>" selected>0<?=$i?> <?php     }else{  ?>          <option value="'0'.<?=$i?>">0<?=$i?> <?php     }        }else{        if($hour == $i){   ?>          <option value="<?=$i?>" selected><?=$i?> <?php     }else{   ?>          <option value="<?=$i?>"><?=$i?> <?php     }       }     }  ?> </select>時 ------------------------------------------------------- 上記のようなスクリプトを作成しました。 リストボックスの時間について、 一桁なら0を付加(1→01)しています。 今、変数$hourに(00~23)までの値が入っていれば、 リストボックスには、$hourの値を等しいものを表示、 $hourに値が入っていなければ、デフォルト表示の”--”を 表示したいと考えています。 上記のスクリプトを動かしてみると、 $hourに値があるときは正常に動作します(リストボックスの値を $hourの値と等しいものを表示)が、 $hourに値がないときになぜか”00”を表示してしまいます。 本当は”--”を表示したいのですが・・・ なにかおかしいですか?

    • ベストアンサー
    • PHP
  • プルダウン 値保持 onchange

    失礼します、現在年月のプルダウンを作成しており プルダウン自体は年月の作成ができなのですが再読み込みした際に プルダウンに選択した値を保持して欲しいです。 現在リダイレクト先を自身にしております。また、onChangeでプルダウンをした際に読み込むようにしています。 ご教授頂きたいです。宜しくお願い致します。 htmlに埋め込んでいるので読みにくいかと思いますがご了承ください <form action="<?php $self ?>" method="POST"> <select name = "year" onChange="javascript:submit()"> <?php for ($y = 2000; $y < date(Y)+1; $y++) :?> <?php if($s == 0) : ?> <option value="<?php echo $y ?>">選択してください</option>; <?php ++$s ?> <?php endif; ?> <option value="<?php echo $y ?>"><?php echo $y ?></option> <?php endfor; ?> </select> <?php $a = array('1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'); ?> <select name = "month" onChange="javascript:submit()"> <?php foreach ($a as $key => $value) :?> <?php $b = $key + 1 ?> <?php if($h == 0) : ?> <option value="<?php echo $y ?>">選択してください</option> <?php ++$h ?> <?php endif; ?> <option value="<?php echo $b ?>"><?php echo $value ?></option> <?php endforeach; ?> </select> </form>

    • ベストアンサー
    • PHP
  • コンボボックス生成の際の文字埋め

    print("<select name=\"emonth\">\r");  for( $i = 1; $i <=12; $i++ ){   if($i == $month ){    print("<option value=$i selectd>$i</option>\r");   }else{    print("<option value=$i>$i</option>\r");    }  } print("</select>"); 上記のようなソースの場合$iの頭を0で埋めて2桁にする場合どのような方法がありますでしょうか? LPAD関数を使ったのですがうまくいきませんでした。 例)print("<option value=lpad($i,2,'0')>$i</option>\r"); よろしくご教授願います。

    • ベストアンサー
    • PHP
  • selectで選択した情報を再表示させる方法を教えてください。

    はじめて質問させて頂きます。 PHPでプログラムを組んでいたのですが選択した項目の情報を金額表示と一緒に表示させたいのですが初心者のためどのようにすればいいか分かりません。 解決方法を教えてください。 下記が作ったプログラムです。 <html> <head><tile>項目の選択ページ</title></head> ピザ生地を選択してください。<br> <form action="piza.php" method="post"> <select name="kizi"> <option value="1">パン生地</option> </select></p> </select></p> <p>トッピングを選んでください。<br> <select name="top"> <option value="1">サラミ</option> </select></p> <p>ソース選んでください。<br> <select name="sou"> <option value="1">イタリアン</option> <option value="2">カレー</option> </select></p> <p>個数を入力してください。<br> <select name="ko"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select> <select name="ko2"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select> <select name="ko3"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select> 個<br><br> <input type="submit" name="submit" value="合計金額"><br><br> <p><font><合計金額></font><br> <?php $kizi=$_POST['kizi']; $sou=$_POST['sou']; $top=$_POST['top']; $ko=$_POST['ko']; $ko2=$_POST['ko2']; $ko3=$_POST['ko3']; $Gn = 0; $n10 = intval ("$ko"); $m10 = intval ("$ko2"); $l10 = intval ("$ko3"); $ga = ($n10 * 100 + $m10 * 10 + $l10); $Gn = ($An + $Bn + $Cn); //An,Bn,Cnは金額1枚当たりの金額 //$A,B,Cは個数によって割引される上限 //Gnは個数×金額 //gaは選択された個数 if ($kizi=="1" && $sou=="1" && $top=="1" ){ $An = 260; $Bn = 263; $Cn = 221; $Dn = 0; $A = 10; $B = 20; $C = 30; if($ga <= $A){ $An ; }else if($ga > $A && $ga <= $B){ $Bn ; }else if($ga > $B && $ga <= $C){ $Cn ; }else{ $Dn ; print "当店ではそれ以上作れません"; } }elseif ($kizi=="1" && $sou=="2" && $top=="1" ){ $An = 323; $Bn = 240; $Cn = 204; $Dn = 0; $A = 10; $B = 20; $C = 30; if($ga <= $A){ $An ; }else if($ga > $A && $ga <= $B){ $Bn ; }else if($ga > $B && $ga <= $C){ $Cn ; }else{ $Dn ; print "当店ではそれ以上作れません"; } } if(!isset($_POST['kizi'])){ print ""; $Gn = 0; } $Gn = 0; if($n10==0 && $m10==0 && $l10==0){ $Gn = $An * 0 + $Bn * 0 + $Cn * 0; }else if($ga <=$A){ $Gn = ($ga * $An) * 10; }else if($ga > $A && $ga <= $B){ $Gn = ($A * $An + ($ga - $A) *$Bn )* 10; }else if($ga > $B && $ga <= $C){ $Gn = ($A * $An + ($B - $A) * $Bn + ($ga - $B) * $Cn) * 10; }else{ $Gn = ($Dn); } ?> <input type="text" name="kingaku" size="20" value="<?=$Gn?>">円<BR><BR><HR> </Form> <a href="default.htm">戻る</a><BR><BR> <a href="../../default.htm">トップページ</a><BR><BR> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう