Редактирование данных в MYSQL

Yura

Новичок
Редактирование данных в MYSQL

Есть таблицы tbl_folders (категории) с полями f_id, f_name; tbl_reports (отчеты) с полями r_id, r_name и связывающая их таблица tbl_fold_rep, в которой есть поля f_id и r_id. Один отчет может принадлежать нескольким категориям.
Для редактирования информации в таблице tbl_reports я делаю следующее:
1) сохраняю изменения в инфе в самом содержании отчетов :
mysql_query("UPDATE tbl_reports set... ");
2) сохраняю изменения в таблице tbl_fold_rep:
for ($i=0; $i<count($folderOfReport); $i++)
{
$edit_result3=mysql_query("DELETE FROM tbl_fold_rep WHERE r_id='$r_id'");
$edir_result4=mysql_query("insert into tbl_fold_rep (f_id, r_id) VALUES ('$folderOfReport[$i]', '$r_id')");
}


Можно ли сделать то же самое с меньшим количеством запросов к MYSQL?
 

Yura

Новичок
Автор оригинала: Panchous
подробнее расскажи про шаг №2...
В таблице tbl_fold_rep определяется, в какие разделы или подразделы входят отчеты. r_id - id отчета, f_id - id раздела (или категории). Возможна ситуация, когда, например необходимо, чтобы, например "Отчет 1" ранее принадлежавший, например, разделам 2, 5 и 8, после редактирования принадлежал разделам 1, 5, 6, 11.
Для этого в шаге 2 я удаляю данные из таблицы tbl_fold_rep, где r_id=r_id_Отчета1 и добавляю заново строку в эту таблицу. Только обнаружил еще одну проблему - неправильно данные из формы select multiple передаются. Вроде мысль есть. Думаю, с этим сейчас справлюсь. А вот насчет запроса мыслей никаких. Пока только вот как в предыдущем сообщении. В принципе, он вроде нормально работает, но для одного простого действия делать 3 запроса - думаю многовато.
 

Panchous

Павел
почему 3? - у тебя запросы в цикле выполняются.

и зачем DELETE в цикле стоит?
 

Yura

Новичок
Да, но в цикле при каждом проходе - 2 запроса.
Считаешь, что это -оптимальный вариант?

-~{}~ 11.08.06 13:15:

Не получается еще одну проблемку решить. Есть форма, в которой:
<select name=folderOfReport[] multiple size="8">
<?
$res = mysql_query("select * from tbl_folders LEFT JOIN tbl_fold_rep ON tbl_fold_rep.f_id=tbl_folders.f_id AND tbl_fold_rep.r_id='$idn' WHERE tbl_folders.f_parent!=0 order by tbl_folders.f_id");
while ($row = mysql_fetch_assoc($res)){
if (isset($row["f_id"])) {
$sel="selected";
}
else {
$sel="";
}
echo "<option value=\"{$row["f_id"]}\" {$sel}>{$row["f_name"]}";
}
?>
</select>

Когда я в ней при редактировании выделяю другие категории, то новые категории не передаются.

-~{}~ 11.08.06 13:17:

Автор оригинала: Panchous
почему 3? - у тебя запросы в цикле выполняются.

и зачем DELETE в цикле стоит?
Если DELETE не писать, то отчеты останутся в старых разделах + еще и добавятся в новые. А если нам старые не нужны или нужны только, например, 2 из 5?
 

Yura

Новичок
Понял вопрос. Я уже поставил перед циклом. Просто здесь в форум старый вариант написал, sory. Теперь у меня все тоже самое, только delete перед циклом.
 
Сверху