2016-04-08 9 views
0

Ich habe zwei Tabellen. Fähigkeiten, die alle verfügbaren Fähigkeiten enthält. und user_skills, die enthält, welche Fähigkeiten der Benutzer bekommen hat. Ich muss alle verfügbaren Fähigkeiten ausgeben, und diese Fähigkeiten, die der Benutzer hat (ich wähle es durch session['username']), werden markiert (Kontrollkästchen angekreuzt).Vergleichen und zeigen Sie verschiedene Daten aus zwei Tabellen

$get_all_skills = mysqli_query($conn, "SELECT * FROM skills"); 
$web_design = array(); 
$web_develop = array(); 
$automation = array(); 
$security = array(); 
while($show_row = mysqli_fetch_array($get_all_skills)){ 
    switch($show_row['skill_type']){ 
     case '1': 
      array_push($web_design, $show_row['skill_name']); 
      break; 
     case '4': 
      array_push($web_develop, $show_row['skill_name']); 
      break; 
     case '3': 
      array_push($automation, $show_row['skill_name']); 
      break; 
     case '2': 
      array_push($security, $show_row['skill_name']); 
      break; 
    } 
} 

Wie kann ich möglicherweise diese Arbeit machen? Ein Teil des HTML ist:

<div class=""> 
           <ul class="to_do"> 
            <?php 
            for($i=0;$i<count($web_develop);$i++){ 

            ?> 
            <li> 
            <p> 
             <input type="checkbox" class="flat"> <?php echo $web_develop[$i];?> </p> 
            </li> 
            <?php } ?> 
           </ul> 
           </div> 

Antwort

0

Betrachtet man eine user_skills Array ($ user_skills_array) erklärt und haben die Daten, verwenden Sie den unten HTML-Code

<div class=""> 
    <ul class="to_do"> 
    <?php 
    for($i=0;$i<count($web_develop);$i++){ 
     // check the global skill is available in the user skill set 
     $checked = (in_array($web_develop[$i], $user_skills_array)) ? 'checked="checked"': ''; 
    ?> 
    <li> 
     <p> 
     <input type="checkbox" class="flat" <?php echo $checked;?>> <?php echo $web_develop[$i];?> </p> 
    </li> 
    <?php } ?> 
    </ul> 
</div> 
0

versuchen, die folgenden, unten Erklärung.

<?php 
$get_all_skills = mysqli_query($conn, "SELECT * FROM skills"); 

$availableSkills = []; 
$skillTypes = [ 
    1 => 'Webdesign', 
    2 => 'Security', 
    3 => 'Automation', 
    4 => 'Web Development', 
]; 

while($show_row = mysqli_fetch_array($get_all_skills)){ 
    $skill = [ 
     'id' => $show_row['id']; 
     'name' => $show_row['name']; 
    ]; 
    $skillType = $show_row['skill_type']; 

    $availableSkills[$skillType][] = $skill; 
} 

// assuming user_skills: 
$userSkills = [ 
    1, 
    2, 
    5, 
    8 
]; 

?> 

    <ul class="to_do"> 
     <?php foreach ($availableSkills as $type => $skillsForType) : ?> 
     <li> 
      <?= $skillTypes[$type] ?> 
      <ul> 
       <?php foreach ($skillsForType as $skill) : ?> 
        <li> 
         <input 
          type="checkbox" 
          class="flat" 
          name="skill[<?= $type ?>]" 
          value="<?= $skill['id'] ?>" 
          <?= in_array($skill['id'], $userSkills) ? 'checked="checked"' : '' 
         > <?= $skill['name'] ?> 
        </li> 
       <?php endforeach; ?> 
      </ul> 
     </li> 
     <?php endforeach; ?> 
    </ul> 

Zuerst sammeln Sie alle Fähigkeiten, wie Sie es bereits getan haben. Als nächstes habe ich Ihr unterschiedliches Skill-Array in eins zusammengefasst und alle Skill-Typen aufgelistet.

Die verfügbaren Fähigkeiten werden anhand ihrer Typ-ID indiziert (siehe $ skillTypes).

Weiter ging ich davon aus, dass Ihre Benutzer-Skill-Sammlung wie gezeigt aussehen könnte.

Im HTML-Bereich übertrage ich jeden Skill-Typ und in einem verschachtelten foreach-Echo alle entsprechenden Skills. Wenn die Skill-ID der aktuellen Iteration in_array der Benutzer-Skill-Beziehung ist, wird das Attribut "checked" gesetzt.

Zur Verdeutlichung habe ich in diesem Beispiel eine kurze Syntax verwendet.

[] --> array() 
<?= --> <?php echo 

foreach() : endforeach; 
Verwandte Themen