2016-03-31 11 views
1

Aynı formu yeni giriş için kullanmanın yanı sıra eğitim detaylarını düzenlemek için kullanıyorum.Ayrıca ayrı bir masada kaydedilen kursiyer listesine sahip olduğumu görüyorum.So Belirli bir girişi düzenlerken, formda seçili girdinin verilerini göstermem gerekir. Bunun için $_GET['act'] =="edit" değerini kullanarak veritabanından veya yeni giriş için boş denetimlerden değeri gösteriyorum. Burada, egzersiz seansı için birden fazla kursiyer seçebileceğim seçme kontrolüm var. Bu yüzden, düzenleme yaparken, stajyer veritabanı tablosunu okuyorum ve seçilen kursiyerleri gösteriyorum. Eğer toplam 10 çalışanım varsa, şimdi seçenekler arasından 5 çalışanı seçtim. Bu 5 çalışanı seçili olarak ve diğer 5 seçili olarak göstermem gerekiyor. Ancak bunu aşağıdaki kodları kullanarak yaptığımda, 'select' kontrollerim 'seçili olarak 5 çalışanı' ve 10 personelin tamamı seçili olmayan seçenekleri var. Tamamen 15 seçenek var.Ama sadece 10 seçeneğe sahip olmak istiyorum. exPHP'de düzenleme yaparken çoğaltma sırasında seçili değeri nasıl gösterirsiniz?

<?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. 

: Durum: aktif, inaktif - Aktif gibi 'Durum' kontrol gösterir düzenlerken i gelen 'aktif' seçeneğini etkin, etkin (seçilir). Bu kopyalardan nasıl kaçınılır?

+0

ne istediğinizi daha ayrıntılı olarak açıklıyor musunuz? –

+0

Düzenleme sırasında hangi değişken değerlerinizi içerir? – Apb

+0

Sadece yaygın olan foreach döngüsünün, her ikisinde de aynı olan bölümlere ihtiyaç duymamasıdır. – RJParikh

cevap

0

$row1["trainee"] değer dizisini hazırlayabilirsiniz. $empresult adresinin adı stajyer dizisinde o zaman seçili kümesi ise

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 
    } 
} 

: Sonra ile kod

<?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 } 
} ?> 

değiştirin.

Bu yardımcı olur!

+0

hiçbir şey seçili değil. $ Trlist yazdırdığımda, "Sonuç kümesindeki tüm kalan satırları getir: Array ([0] => Array ([trainee] => aaaa) [1] => Array ([stajyer] => bbbb) [2] => Array ([stajyer] => cccc)) "ancak aşağıda seçilen hiçbir şey yok. SO olarak değiştirildi. Tüm seçenekler seçildi. – Anu

+0

Stajyer diziniz şöyle olmalıdır: Array ([0] => 'aaa' [1] => 'bbb' ....) ' – Apb

+0

$ stmt-> fetchAll (PDO :: FETCH_COLUMN); Hem stajyer hem de çalışan masası için. Yani, bu iki dizinin karşılaştırması kolaydır ve şimdi çalışır. – Anu

İlgili konular