2016-03-31 3 views
1

Im benutze das gleiche Formular für den neuen Eintrag sowie für Trainingsdetails zu bearbeiten.In dem ich habe die Praktikantenliste, die in separaten Tabelle gespeichert wird.So Beim Editieren des jeweiligen Eintrags muss ich die Daten des ausgewählten Eintrags im Formular anzeigen. Dafür verwende ich $_GET['act'] =="edit", um den Wert aus der Datenbank oder leere Steuerelemente für den neuen Eintrag anzuzeigen. In diesem ich habe Kontrolle, wo ich mehrere Auszubildende für das Training auswählen kann. Während der Bearbeitung lese ich die Trainee-Datenbanktabelle und zeige die ausgewählten Trainees an. Wenn ich total 10 Angestellte habe, wählte ich jetzt 5 Angestellte aus den Optionen aus. Ich muss diese 5 Mitarbeiter als ausgewählt und weitere 5 als nicht ausgewählt anzeigen. Aber wenn ich dies unter Verwendung von Codes verwende, haben meine 'Auswahl'-Steuerelemente Optionen wie' 5 Angestellte als ausgewählt 'und alle 10 Angestellten als nicht ausgewählt. Insgesamt 15 Optionen. Aber ich möchte nur 10 Optionen haben.Wie man ausgewählten Wert in mehrfacher Auswahl ohne repitition während der Bearbeitung in 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. 

Für Ex: Status: aktiv, inaktiv - wenn ich wählen Sie 'aktiv' in der aus, während der Bearbeitung der Steuer zeigt 'Status' wie Active (ausgewählt), aktiv, inaktiv. Wie vermeide ich diese Doppelungen?

+0

aufwendiger mehr was Sie wollen? –

+0

Welche Variable enthält Ihre Werte während der Bearbeitung? – Apb

+0

Nur geläufig es $ empresult foreach loop keine Notwendigkeit für sonst Teil als seine selben in beiden. – RJParikh

Antwort

0

Sie können ein Array mit dem Wert $row1["trainee"] vorbereiten. Dann ersetzen Sie den Code

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

mit:

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

Wenn Ihr Name von $empresult in Array von Auszubildenden wird dann eingestellt, es ausgewählt.

Hop das hilft!

+0

ist nichts ausgewählt. Wenn ich $ trlist drucke, wird "Alle restlichen Zeilen in der Ergebnismenge abrufen: Array ([0] => Array ([Auszubildender] => aaaa) [1] => Array ([Auszubildender] => bbbb) [2] => Array ([Auszubildender] => cccc)) "aber unten nichts ausgewählt. SO änderte ich als ... jetzt sind alle Optionen ausgewählt. – Anu

+0

Ihr Trainee-Array sollte wie 'Array ([0] => 'aaa' [1] => 'bbb' ....)' – Apb

+0

Ich habe $ stmt-> fetchAll (PDO :: FETCH_COLUMN); sowohl für den Praktikanten als auch für den Mitarbeitertisch. Also, diese beiden Arrays sind einfach zu vergleichen und jetzt funktioniert es. – Anu

Verwandte Themen