- ベストアンサー
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>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
やりたいことは「選択した項目を表示したい」ということでしょうか。 PHPは送信されたデータは$_POSTの中に入ってます。 提示されたプログラムですと、<select>の<option>内にあるvalueの数字しか渡っていません。 「パン生地」や「サラミ」など表示させたい場合はそれらを明示的に指定してあげる必要があります。 たとえば生地で$_POST["kizi"]に1が入っていると仮定し、 <?php // 定義 $kiziArray = array( 1=>"パン生地" ,2=>"薄いアレ" ); // 送信情報を取得 $kizi = $_POST["kizi"]; // 生地のテキスト取得 $kiziText = $kiziArray[$kizi]; // 出力 echo $kiziText; ?> とすることが出来ます。 ほかの項目も同じ要領で書き出すことが出来ます。 その辺は頑張ってください。 配列にすると項目の追加が非常に楽です。 optionタグの部分も配列を使用し、 <option value="a">パン生地</option> ↓ <php foreach($kiziArray as $key => $str) { echo "<option value=" . $key . ">" . $str . "</option>\n"; } ?> とすることで、配列を増やしたり減らしたりで項目が増えたり減ったりするので 管理が非常に楽になります。 // やり方しだいでは非常に面倒になるのですが // その辺は設計力の見せ所です ------------------------ 以下突っ込み <p><font><合計金額></font><br> →エンティティ化しませんと「合計金額」がタグに見られるかもしれません <合計金額> $n10 = intval ("$ko"); →$n10 = intval($ko); のほうが正確 </select></p> →kiziの閉じタグがひとつ多く見えます。 つかHTMLがガタガタですな
その他の回答 (1)
- Suzi
- ベストアンサー率38% (130/334)
最終的にどのようなレイアウトで表示させるのかが良く分らないのですが、「?>」の上に、以下を追記して表示させましたが、この辺のをお好みにアレンジしてみたらいかがでしょうか。 if($_POST['kizi'] == '1') $KIJI = 'パン生地'; if($_POST['top'] == '1') $TOP = 'サラミ'; if($_POST['sou'] == '1') $SOU = 'イタリアン'; elseif($_POST['sou'] == '2') $SOU = 'カレー'; print "<li>生地 = ". $KIJI; print "<li>トッピング = ". $TOP; print "<li>ソース = ". $SOU; print "<li>個数:\$ga = ".$ga; print "<li>合計:\$Gn = ". $Gn; print "<li>合計(カンマ付き):number_format(\$Gn) = ". number_format($Gn)."円"; print "<hr>"; ?>