Задача такая. Есть меню и в нем список категорий. При редактировании контента категории к которым принадлежит новость должны быть отмечены selected в списке SELECT, чтобы при редактировании видеть к какой категории принадлежит новость. Вот код функции, но эта функция почему то делат активными все категории, подскажите где ошибка: PHP: function multicat() { $multicat = ''; $rescat = mysql_query("SELECT id, name FROM `category`"); $resnews = mysql_query("SELECT category FROM `news`"); while($row = mysql_fetch_assoc($rescat)) { if ($resnews['category'] == $rescat['id']) { $multicat .='<option value="'. $row['id'] .'" selected>'. $row['name'] .'</option>'; } else { $multicat .='<option value="'. $row['id'] .'">'. $row['name'] .'</option>'; } } return $multicat; } Первая выборка id и название всех категорий из базы выводится в меню SELECT, вторая выборка поле категории из таблицы новости. Также пробовал указывать id новости, но результат тот же. Все категории отмечены selected – т.е. получаются активными. Может в цикле что-то неправильно сделано.
толи я забыл все что знали, толи тут бред написан =) не хватает как минимум расковыривалки второго запроса. Условий никаких нет, т.е. выбираться будет все подряд. Хз. Давай структуру бд и связи.
Ну вот так переписал но все равно не сработало PHP: function multicat() { $multicat = ''; $rescat = mysql_query("SELECT id, name FROM `category`"); $resnews = mysql_query("SELECT category FROM `news`"); $row2 = mysql_fetch_assoc($resnews); while($row = mysql_fetch_assoc($rescat)) { if ($row2['category'] == $row['id']) { $multicat .='<option value="'. $row['id'] .'" selected>'. $row['name'] .'</option>'; } else { $multicat .='<option value="'. $row['id'] .'">'. $row['name'] .'</option>'; } } return $multicat; }
Все, разобрался с ошибкой, балбес я конечно. Там нужно просто указывать ID новости из которой выбираешь категории. Но вот у меня теперь еще одна проблема выскочила. Я сделал мультивыбор категорий при добавлении и массив преобразую через impode в строку. Получается 1,2 запись в базу. А как же теперь для редактирования сделать возврат. Мне же нужно получить снова эти строки как массив и уже не просто обрабатывать переменную с номером категории, а обрабатывать вложенный массив. Например: Новость ID 1 принадлежит category 1,2 (эту строку же в массив нужно занести и обработка опять не сработает)