2015-07-03 2 views
0

Поэтому у меня есть три таблицы:Tick флажок из цикла WHILE

docs 
    doc_id 

cats 
    cat_id 

doc_cat_join 
    id 
    doc_id 
    cat_id 

Я создал способ создать документ (так же, как пост) и категория Документов перейти в таблицу DOCS и категории идут в таблицу кошек. при редактировании документа я показываю доступные категории посредством цикла while. это работает отлично, в зависимости от того, что я отмечаю, он принимает doc_id из url и cat_id флажков, которые вы укажете. То, что я хочу сделать, - это когда я снова вернусь и снова отредактирую, он показывает только галочки в флажках из тех, которые я выбрал ранее, посмотрев таблицу соединений.

Вот как я в настоящее время перебрать и показать категории:

<?php 
function build_cat_checkboxes(){ 

    global $dbc; 
    global $id; 

    $q = "SELECT * FROM cats"; 
    $r = mysqli_query ($dbc, $q); // Run the query. 

    $currentDoc = $id; 

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

    $checked = (($row['cat_id'] == $currentDoc) ? 'checked' : ''); 

    echo '<ul> 
      <li><label> 
      <input type="checkbox" name="cat_id[]" value="' . $row['cat_id'] . '" checked="'.$checked.'"> ' . $row["cat_name"] . '</label></li> 
      </ul>'; 
    } 

} 
?> 

Как вы можете видеть, что я попытался создать способ проверки их, но все это делает это тикают все коробки, потому что мой запрос это явно не так, как оно не проверяя присоединиться к таблице, чтобы увидеть, если doc_id связан с cat_id

Итак ...

я соединял этот вопрос:

$q1 = "SELECT * FROM doc_cat_join WHERE doc_id = '$id'"; 
$r1 = mysqli_query($dbc, $q1); 

, и если я нахожу на нем print_r, он возвращает мне числа строк, которые я ожидаю, беря doc_id из URL-адреса, а затем показывая мне, есть или нет строк в таблице соединений, связанных с я редактирую документ. Мне нужно найти способ пометить флажки, но я действительно борется.

ответ

0

Вы возвращаете boolean в своем заявлении, помещая его в круглые скобки;

Заменить:

$checked = ($row['cat_id'] == $currentDoc) ? 'checked' : ''; 
<input type="checkbox" name="cat_id[]" value="' . $row['cat_id'] . '" checked="'.$checked.'"> ' . $row["cat_name"] . '</label></li> 
</ul>'; 

С:

$checked = (($row['cat_id'] == $currentDoc) ? 'checked="checked"' : ''); 
<input type="checkbox" name="cat_id[]" value="' . $row['cat_id'] . '" '.$checked.'"> ' . $row["cat_name"] . '</label></li> 
</ul>'; 
+0

Хм, так что до сих пор помечает все галочки даже с предложенным изменением. – PhpDude

+0

Правильно, если он проверял атрибут, он будет проверен. Однократное редактирование. – taxicala

+0

Итак, ни один из отметок не отмечен сейчас ... (Несмотря на то, что строки существуют в таблице соединений) – PhpDude