1

選択ボックスにデータベースのデータを入力しています。(SQL サーバー 2008)。

これが私の機能です:

function sample_items($product_types = array('METER KIT', 'TEST STRIP', 'LANCET', 'CONTROL SOLUTION', 'LANCING DEVICE', 'BATTERY', 'MISC'))
        {
        $a = array();
        $i = 0;
        $def = $product_types;
        foreach($product_types as $k)
            {
            $qty = sql::one_row("select min_, max_, interval from event.dbo.product_type where product_type = " . hexstr($k));
            $label = str_replace('CONTROL SOLUTION', 'C/S', $k); 
            $label = str_replace('LANCING DEVICE', 'L/D', $label); 
            $a[] = input_check("items[ok][$i]")->label($label);
            if ($k == 'TEST STRIP')
                {
                $a[] = input_select("items[ptcode][$i]", sql::two_column_array("select rtrim(a.CODE_), case when B.id IS NULL THEN rtrim(a.DESCRIPTION_) else 'BACKORDER:'+RTRIM(a.DESCRIPTION_) end
                    from PACWARE.ADS.PTDME a left outer join event.dbo.backorder b on a.CODE_=b.ptcode where a.MEDICAREID = 'SAMP' and a.DESCRIPTION_ like '%STRIP%'"), 1)->label('')->same_line()->set_class('wide2');
                }
            else if ($k == 'LANCET')
                {
                $a[] = input_select("items[ptcode][$i]", sql::two_column_array("select rtrim(a.CODE_), case when B.id IS NULL THEN rtrim(a.DESCRIPTION_) else 'BACKORDER:'+RTRIM(a.DESCRIPTION_) end
                    from PACWARE.ADS.PTDME a left outer join event.dbo.backorder b on a.CODE_=b.ptcode where a.MEDICAREID = 'SAMP' and a.DESCRIPTION_ like '%LANCET%'"), 1)->label('')->same_line()->set_class('wide2');
                }
            else if ($k == 'MISC')
                {
                $a[] = input_select("items[ptcode][$i]", \Ptdme::items_by_product_type(array('SAMPLE PRODUCT','MISCELLANEOUS SUPPLIES')), 1)->label('')->same_line()->set_class('wide2');
                }
            else { $a[] = input_select("items[ptcode][$i]", \Ptdme::items_by_product_type($k), 1)->label('')->same_line()->set_class('wide2'); }
            if (!empty($qty)) $a[] = input_select("items[qty][$i]", range($qty['min_'], $qty['max_'], $qty['interval']))->label();
            else $a[] = input_select("items[qty][$i]", range(0, 100))->label();
            $i++;
            }
        return input_group('Items', $a)->whole();
        }

これは、いくつかの css を含む小さなテーブルである入力グループに格納されています。

input_group('Items', $a)->whole();

保存した後、このサンプル ページの「イベント フォーム」を作成する別の関数を作成しました。

その関数は次のとおりです。

function new_pt_ss()
    {
    if ($this->create_npc_SS)
        {
        $task_id = '13';
        if (sql::value("select 1 from event.dbo.event where task_id =" . hexstr($task_id). " and status = 1 and patient_id = " . $this->patient->hex))
            return Message::add('New Patient Sample CC already exists. Event not created.', 'warn');
        $defs = array('METER KIT', 'TEST STRIP', 'LANCET', 'CONTROL SOLUTION', 'LANCING DEVICE', 'BATTERY', 'MISC');    
        $task_params = array();
        $oks = $this->get_oks();
        $oks_hex = array();
        foreach ($oks as $k=>$v) $oks_hex[] = hexstr($k);
        $qtys = zip($this->items['ptcode'], $this->items['qty']);
        foreach ($defs as $x)
            {
            $me = 0;
            foreach ($pt_types as $num=>$row)
                {
                if ($row['ev_product_type'] == $x)
                    {
                    $task_params["{$row['ev_product_type']}"] = $row['ptcode'];
                    $task_params["{$row['ev_product_type']}_qty"] = $qtys[$row['ptcode']];
                    if ($x == 'control_solution') $task_params['cs_bill'] = '1';
                    else if ($x == 'lancing_device') $task_params['lancing_bill'] = '1';
                    unset($pt_types[$num]);
                    $me = 1;//continue 2; // preserves sorting instead of continue
                    }
                }
            }
        $task_params = array_merge($task_params, array('ship_date'=>$this->ship_date
            ,'urgent'=>$this->urgent
            ,'valid_po'=>$this->valid_po
            ,'shipping_method'=>$this->shipping_method
            ,'reason'=>$this->reason
            ,'on_insulin'=>$this->on_insulin
            ,'patient_on_insulin'=>$this->patient_on_insulin
            ));
        Message::check($this->patient->event()->create($task_id,  $task_params), "Create Sample CC event.");
        return "NEW PT Sample CC EVENT TO BILLING FOR DOS $this->ship_date.";
        }
    }

サンプル ss 用にイベントがまだ作成されていない場合は送信後、イベントが作成され、$task_id = '13';これらのフィールドにデータが入力されます。

,'urgent'=>$this->urgent
,'valid_po'=>$this->valid_po
,'shipping_method'=>$this->shipping_method
,'reason'=>$this->reason
,'on_insulin'=>$this->on_insulin
,'patient_on_insulin'=>$this->patient_on_insulin

問題は、すべてのチェック ボックスにデータを入力し、for each ループでボックスを選択する方法がわからないことです。

イベント フォームに入力する必要があるフィールド名は次のとおりです。

<tr><td>Meter</td><td><?php sbox('part1',ptdme('E0607'),1, "' onChange=\" reason_swap(this); \" '"); ?></td><input type='hidden' value='1' name='part1_qty'/></tr>
<tr name='inact1' title='56151124' style='display:none;'><td></td>
    <td>Send True2Go Meter? <input type='checkbox' name='part8' value='21292002590'/></td><input type='hidden' value='1' name='part8_qty'/></tr>
<tr><td>Strips</td><td><?php sbox('part2', $samp_strips,1,'wide2'); ?></td><td><?php sbox('part2_qty', range(1,10)); ?></td></tr>
<tr><td>Lancets</td><td><?php sbox('part3', $samp_lancets,1,'wide2'); ?></td><td><?php sbox('part3_qty', range(1,10)); ?></td></tr>
<tr><td>Control</td><td><?php sbox('part4', ptdme('A4256'),1,'wide2'); ?></td><input type='hidden' value='1' name='part4_qty'/></tr>
<tr><td>L/D</td><td><?php sbox('part5', ptdme('A4258'),1,'wide2'); ?></td><input type='hidden' value='1' name='part5_qty'/></tr>
<tr><td>Battery</td><td><?php sbox('part6', ptdme('A4235'),1,'wide2'); ?></td><td><?php sbox('part6_qty', range(1,2)); ?></td></tr>
<tr><td>Misc</td><td><?php sbox('part7', ptdme2(array('SAMP','MISC')),1,'wide2'); ?></td><td><?php sbox('part7_qty', range(1,10)); ?></td></tr>
</table>
</fieldset>

それが理にかなっており、必要に応じてさらに情報を提供できることを願っています。

4

3 に答える 3

0

使用するチェックボックスの場合、checked="checked"または単にchecked 使用するドロップダウンの場合、selected="selected"または単にselected

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="vw">VW</option>
  <option value="audi" selected>Audi</option>
</select>

例はこちら

于 2013-06-21T22:37:58.243 に答える
0

チェック ボックスまたはラジオ ボタンをオンにするには、オプション要素で selected 属性を selected に設定する必要があります。

于 2013-06-21T22:38:16.860 に答える
0

次のコードを使用して、民族のドロップダウンを完了します。コードは従うのが簡単で、適応可能です。現在は廃止されている mysql_ を使用していますが、原則は保持されています。ご覧のとおり、その方法は SQL です。すべてのランセット、メーターキット、バッテリーなどを個別に選択し、各ドロップダウンを一度に 1 つずつ作成します。SQL でソートできる場合は、PHP でデータをソートしようとしないでください。あなたはバグだらけで、マイナーなスペルミスの影響を受けやすいコードに従うのが難しいコードを書くことになるだけです。

ユーザー インターフェイスを再考することをお勧めします。多くの糖尿病患者は高齢者であり、ドロップダウンに直面すると混乱しやすくなります。また、あまりよく見えないため、間違った順序で終わる可能性があります。選択ボックスは非常に起こりやすく、たとえそれがユーザーのせいであっても、あなたが責められることになります。c/s のような略語は賢明ではありません。医療専門家でさえ、UI が煩わしく、先延ばしされる可能性があります。

    $sql="Select ethnicitycode,ethnicitydesc from s_ethnicity where inuse=1 order by ethnicitydesc";
    $result=mysql_query($sql,$dbh);
    $optext="<select name='ethnicity1' class='select' onChange='Change()'><option value='0'>Choose Ethnicity</option>";
    while($row2 = mysql_fetch_array($result))
                {

                $option=$row2[ethnicitydesc];

                $code=$row2[ethnicitycode];

                if($row[ethnicitycode1]==$code){$selected="selected='selected'";}else{$selected="";}
                $optext=$optext.sprintf("<option value='%s'%s>%s</option>",$code,$selected,$option);
                } 

    $optext=$optext."</select>";
于 2013-06-21T22:40:00.173 に答える