2016-03-31 6 views
1

新しいエントリに同じフォームを使用し、トレーニングの詳細を編集するIm私は別のテーブルに保存されているトレーニングリストを持っています。特定のエントリを編集している間は、選択したエントリのデータをフォームに表示する必要があります。$_GET['act'] =="edit"を使用してデータベースからの値を表示するか、新しいエントリの空のコントロールを表示します。 これで私はトレーニングセッションのために複数の研修生を選ぶことができる選択コントロールを持っています。編集中は、訓練生データベーステーブルを読んで、選択した訓練生を表示します。 私は全部で10人の従業員を雇っていますが、今は5人の従業員を選択しました。 私は5人の従業員を選択して、5人を未選択として表示しなければなりません。しかし、私はこれを以下のコードを使って行うと、私の「選択」コントロールには「選択された5人の従業員」と10人の従業員のすべてが選択されていないというオプションがあります。 状態:EXについてPHPで編集中に複数の選択肢で選択した値を反復せずに表示するには

<?php 
try { 
    $sql = "SELECT * FROM enrollment WHERE enrollid = :cid"; 
    $stmt = $DB->prepare($sql); 
    $stmt->bindValue(":cid",intval($_GET['cid'])); 
    $stmt->execute(); 
    $enrollresults = $stmt->fetchAll(); 
} catch (Exception $ex) { 
    echo $ex->getMessage(); 
} 
} 

try { 
$sql = "SELECT * FROM traineelist WHERE trainingid = :trid"; 
$stmt = $DB->prepare($sql); 
$stmt->bindValue(":trid",$enrollresults[0]["enrollid"]); 
$stmt->execute(); 
$trlistresult = $stmt->fetchAll(); 

} 
catch (Exception $ex) 
{ echo $ex->getMessage(); } 

try { 
$sql = "SELECT * FROM employees"; 
$stmt = $EMPDB->prepare($sql);     
$stmt->execute(); 
$empresult = $stmt->fetchAll(); 

} 
catch (Exception $ex) 
{ echo $ex->getMessage(); }  

?> 

    <div class="form-group"> 
      <label for="tr" class="control-label col-md-2">Trainee</label>  
      <div class="col-md-4"> 
        <select id="trainee" name="tr[]" multiple="multiple">    
       <?php   
       if(isset($_GET['act']) && $_GET['act']=="edit") 
        { ?> 
         <?php foreach($trlistresult as $row1){ ?> 
         <option value="<?php echo $row1["trainee"]?>" selected="selected"><?php echo $row1["trainee"]?></option> 
         <?php } ?> 
        <?php foreach($empresult as $row){ ?> 
        <option><?php echo $row['first_name']?></option> 
        <?php } ?> 

       <?php 
        }   
        else 
        { 
        foreach($empresult as $row){ ?> 
        <option><?php echo $row['first_name']?></option> 
        <?php } }?> 

       </select>  
      </div> 
     </div> 

I want like, it shows the default options with the selected value. 

有効、無効 - 、(選択した)アクティブアクティブ非アクティブように「ステータス」制御番組を編集しながら私は、からの「アクティブ」を選択した場合。この重複を避けるには?

+0

もっと精巧にしたい? –

+0

編集中にどの変数に値が含まれていますか? – Apb

+0

ちょうどそれは一般的に$ empresult foreachループは、両方で同じものとして他の部分の必要はありません。 – RJParikh

答えて

0

$row1["trainee"]の値の配列を準備できます。 $empresultから自分の名前が研修生の配列である場合、それが選択した設定

if(isset($_GET['act']) && $_GET['act']=="edit") 
{ 
    foreach($empresult as $row){ 
     if(in_array($row['first_name'], $trlistResultArray)) $selected = "selected"; 
     else $selected = ""; 
     ?> 
     <option <?php echo $selected; ?> ><?php echo $row['first_name']?></option> 
     <?php 
    } 
} 

:その後で、あなたのコード

<?php   
if(isset($_GET['act']) && $_GET['act']=="edit") 
{ ?> 
    <?php foreach($trlistresult as $row1){ ?> 
    <option value="<?php echo $row1["trainee"]?>" selected="selected"><?php echo $row1["trainee"]?></option> 
    <?php } ?> 
    <?php foreach($empresult as $row){ ?> 
    <option><?php echo $row['first_name']?></option> 
    <?php } 
} ?> 

を交換してください。

ホップこれが役に立ちます!

+0

何も選択されていません。私は$ trlistを出力すると、 "結果セットに残りの行をすべて取得します:Array([0] => Array([trainee] => aaaa)[1] => Array([training] => bbbb) [2] =>配列([訓練生] => cccc))ですが、以下では選択しません。あなたは ..のように変更されました。 – Anu

+0

あなたの研修生の配列は 'Array([0] => 'aaa' [1] => 'bbb' ....)のようにする必要があります。 – Apb

+0

私は$ stmt-> fetchAll(PDO :: FETCH_COLUMN);を使いました。訓練生と従業員の両方のテーブル。したがって、これら2つの配列は比較が容易で、現在は機能しています。 – Anu

関連する問題