2012-04-27 10 views
1

一部の製品では、PHPで注文ページを開発しています。ユーザーは複数のタイプの製品を選択できる必要があるため、HTMLフォームにチェックボックスが必要です。HTMLフォーム(チェックボックス)から複数の「値」を転記できますか?

"name"属性でチェックボックスの配列を設定しました。

私の問題は、ユーザーが選択した内容を確認ページに表示したいので、これらのチェックボックスの「価値」が最終的に製品名と製品価格を返すことです。私は一つの値だけで立ち往生するつもりだ伝えることができますので、私はこれを回避しようとしてきた限り:

<?php 
//variables for the array and the count 
$parray = $_POST['product']; 
$pcount = count($parray); 

//arrays for each product's information; i've only listed one for simplicity 
$br = array("Big Red", 575); 

/*The idea for this was for each product ordered to add a line giving the product information and display it. When the $key variable is assigned, it is stored simply as a string, and not an array (yielding [0] as the first letter of the string and [1] as the second), which I expected, but my general idea is to somehow use $key to reference the above product information array, so that it can be displayed here*/ 


if (!empty($parray)) 
{ 
    for ($i=0; $i < $pcount; $i++) 
{ 
    $key = $parray[i]; 
    echo "<tr><td height='40'></td><td>" . $key[0] . "</td><td>" . $key[1] . "</td></tr>"; 

} 
} 
?> 

それがあるかのように私の$キー変数は、実際に行動するためにとにかくあり配列の名前は?に設定されていますか? そうでない場合は、これを行うには良い方法がありますか?

+0

あなたのHTMLは何に見えますか? – PeeHaa

答えて

5

だからあなたのHTMLテーブルに、あなたはこのように、各チェックボックスをレンダリングする必要があります:$keyは項目番号である

<input type="checkbox" name="selectedIDs[]" value="$key" /> 

あなたのPHPには、という変数があります。これは、チェックされたすべての項目番号の配列です。

for($i = 0; $i < count($_POST["selectedIDs"]); $i++) { 
    $key = $_POST["selectedIDs"][$i]; 
    $product = $products[$key]; 
    echo "<tr><td height='40'></td><td>" . $product[0] . "</td><td>" . $product[1] . "</td></tr>"; 
} 

唯一の本当の違い:あなたは、このようなループを使用して、選択した製品の一覧を印刷することができ

$products = array(1 => array("Big Red", 575), 2 => array("Spearmint", 525)); 

あなたは、このような製品リストの配列を持っていると仮定すると、これとあなたが書いたことは、私の$products配列が2次元であり、私の$key$products配列から関連する製品をつかむために使われるということです。

3

optionvalueには、対応するアイテムのIDの値を指定できます。次に、IDの配列を受け取ってから、$br配列に再度マップすると、そのIDで項目の名前と価格を検索します。あなたはそう、IDとして配列のキーを使用することができます。もちろん、あなたの配列がデータベースに由来

<!-- Form: --> 
<input type="checkbox" name="product[]" value="1" /> 
<input type="checkbox" name="product[]" value="..." /> 
<input type="checkbox" name="product[]" value="15" /> 
[...] 

<?php 
$product = array(); 
$product[1] = array('name' => "Big Red", 'price' => 575); 
$product[...] = array('name' => "...", 'price' => ...); 
$product[15] = array('name' => "Small Green", 'price' => 475); 

foreach ($_POST['product'] as $pId) 
{ 
    echo $products[$pId]['name'] . " costs " . $products[$pId]['price']; 
} 
?> 

場合は、チェックボックスの値として、テーブルのIDを使用することができます。その後、コンマで$ _POST ['product'](もちろんエスケープした後)を埋め込み、SELECT ... WHERE ID IN ($productIds)クエリで使用することができます。

+0

あなたにお返事いただきました。非常に参考になり、私はそれを感謝します。 – Esten

1

私が正しくあなたを理解していた場合は、チェックボックスのようなものがあります:あなたのサーバーへの配列としてチェックされているものは何でも投稿する必要があります

<input type="checkbox" name="product_id[]" value="1">Product #1<br/> 
<input type="checkbox" name="product_id[]" value="2">Product #2<br/> 
<input type="checkbox" name="product_id[]" value="3">Product #3<br/> 

を。

0

gen_paper1.php

<div style="overflow: auto; height: 500px; border: 1px solid;"> 
           <form action="" method="post"> 
           <fieldset style="font-size: 15px; font-weight: bolder;"> 
            <h4><u>Your Existing Header's are listed below</u> </h4> 
            <hr/> 

           <?php 
             $xhdr = mysql_query("SELECT * from s_user_header ORDER BY 'ASC'"); 
              while($rheader = mysql_fetch_array($xhdr)){ 
                $h = $rheader['h_content']; 
                $hid = $rheader['h_id'];?> 
            <script> 
             $(document).ready(function(){ 
              //$('input[type=checkbox]').val('<?php echo $hid ; ?>').tzCheckbox({labels:['<?php echo $h; ?>','<?php echo $h; ?>']}); 
              //$('#c').tzCheckbox({labels:['<?php echo $h; ?>','<?php echo $h; ?>']}); 
              $('').tzCheckbox({labels:['<?php echo $h; ?>','<?php echo $h; ?>']}); 
             }); 
            </script> 
            <table> 
              <td><input type="checkbox" id="c" name="u_hdr[]" value="<?php echo $hid; ?>"></td> 
              <td style="font-weight: bolder"><?php echo $h."<br />"; ?></td> 
            </table> 
            <?php } ?> 
           </fieldset> 
          </div> 

gen_paper2 ..... 3 ..... iは、さらにページ内のすべてのこの値が必要なので、隠された変数

をとっている
<input type="hidden" name="hstdid" value="<?php echo $stdid; ?>"> 
         <input type="hidden" name="hsubid" value="<?php echo $subid; ?>"> 
         <input type="hidden" name="hdifid" value="<?php echo $difid; ?>"> 
         <input type="hidden" name="hmarks" value="<?php echo $t_marks; ?>"> 
         <input type="hidden" name="h_hid[]" value="<?php echo $hh; ?>"> 

gen_paper4.php

$getstdid = $_POST['hstdid3'] ; 
      $getsubid = $_POST['hsubid3'] ; 
      $getdifid = $_POST['hdifid3'] ; 
      $gethmarks = $_POST['htmarks'] ; 
      $hdr= $_POST['h_hdrid'] ; 
      $h = implode($hdr); 


<table> 
              <?php 
                $h1 = explode(",",$h); 
                count($h1) . "<br />"; 
                for($i=0;$i<count($h1);$i++){ 
                 $h1[$i]; 
                  $xheader = mysql_query("SELECT * from s_user_header WHERE h_id = ".$h1[$i]); 
                  while($row = mysql_fetch_array($xheader)){ ?> 
                   <tr> 
                   <td><b> 
                   <?php echo $i + 1 . ".&nbsp&nbsp&nbsp"; ?> 
                   </b></td><td> 
                   <?php echo $header = $row['h_content'] . "<br />"; 
                   ?></td> 
                   </tr> 
                   <?php 
                  } 
                } 
              //echo $header; ?> 
              </table> 
関連する問題