2017-01-09 6 views
0

Im пытается поставить contenteditable на основании значения term, например, если значение термина равно "Prelim", то префикс строки будет доступен для редактирования, а остальное не редактируется. Но проблема с моим решением заключается в том, что нет данных, но row number верен и expected row будет editable доступен для редактирования. Это просто пусто. Может ли кто-нибудь помочь мне найти причину этого?Динамически размещать контент на основе определенного значения

вывод моего кода: enter image description here Вот код. Я просто поставил здесь важный код Я не ставил другой код, потому что я думаю, что проблема, вызывающая проблемы, является способом моего , если инструкция else.

while($row = mysqli_fetch_array($result)) 
    { 

    $sql1 = "SELECT * FROM encode"; 
    $results = mysqli_query($con,$sql1); 
    while($row = mysqli_fetch_array($results)){ 
     $term = $row['term']; 
    } 
    $output .= '<tr> 
       <td>'.$row['lastname'].'</td> 
       <td>'.$row['firstname'].'</td> 
       <td>'.$row['middlename'].'</td>'; 
       if($term == "Prelim"){ 
       $output .= '<td class="prelim" data-id1="'.$row['grade_id'].'" contenteditable>'.$row['prelim_grade'].'</td>'; 
       } 
       else{ 
       $output .= '<td class="prelim" data-id1="'.$row['grade_id'].'">'.$row['prelim_grade'].'</td>'; 
       } 
       if($term == "Midterm"){ 
       $output .= '<td class="midterm" data-id2="'.$row['grade_id'].'" contenteditable>'.$row['midterm_grade'].'</td>'; 
       } 
       else{ 
        $output .= '<td class="midterm" data-id2="'.$row['grade_id'].'">'.$row['midterm_grade'].'</td>'; 
       } 
       if($term == "Finals"){ 
        $output .= '<td class="finals" data-id3="'.$row['grade_id'].'">'.$row['finals_grade'].'</td>'; 
       } 
       else{ 
        $output .= '<td class="finals" data-id3="'.$row['grade_id'].'">'.$row['finals_grade'].'</td>'; 
       } 
       if($term == "Final Grade"){ 
        $output .= ' <td class="final" data-id4="'.$row['grade_id'].'" contenteditable>'.$row['final_grade'].'</td>'; 
       } 
       else{ 
        $output .= ' <td class="final" data-id4="'.$row['grade_id'].'">'.$row['final_grade'].'</td>'; 
       } 
       $output .=' </tr>'; 
    } 

ответ

1

Ok. Вы использовали переменную $row неправильным образом. Сначала вы назначаете $row = mysqli_fetch_array($result) во внешнем цикле. Затем снова вы назначаете ту же переменную $row = mysqli_fetch_array($results) во внутреннем цикле while.

Значения, которые вы ожидаете получить, находятся в переменной $results. Но ваше текущее назначение (которое происходит во внутреннем цикле while) делает значение переменной $row переопределяемой строкой в ​​$result. Все, что вам нужно сделать, это просто использовать две переменные для доступа к строкам в этих двух запросах.

while($row = mysqli_fetch_array($result)) 
{ 

    $sql1 = "SELECT * FROM encode"; 
    $results = mysqli_query($con,$sql1); 
    while($otherRow = mysqli_fetch_array($results)){ 
     $term = $otherRow['term']; 
    } 
    // Your existing code 
} 

Надеюсь, что это решит вашу проблему.

+0

Спасибо, брат, это сработало! :) – nethken