Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление нескольких записей
 
 автор: sirop   (20.07.2007 в 05:14)   письмо автору
 
 

есть такая форма:

<form action="?page=project&act=insert" method="post" enctype='multipart/form-data'>
Название проекта: <input title="Не более 254 символов" maxlength=254 size=55 type=text name="project"><br>
Вид выполненных работ: <select style=width:355 name="type">
        <option value="1">дизайн интерьера
        <option value="1">отделочные работы</select><br>
Дизайнеры проекта: <input type=checkbox name="designer[]" value="1">Оксана Петрова<br>
        <input type=checkbox name="designer[]" value="2">Вася Пупкин<br>
        <input type=checkbox name="designer[]" value="3">Иван Иванов<br>
        <input type=checkbox name="designer[]" value="4">Пётр Петров<br>
<input type=submit value=' Добавить ' title="Добавить" style="cursor:hand">
</form>


Если в форме выбран один дизайнер, то как добавить - знаю , а если выбрать несколько дизайнеров сразу, то как добавить эти данные из формы в базу?

(как-то через foreach, но никак не получается оформить правильно запись) помогите, пожалуйста

   
 
 автор: Trianon   (20.07.2007 в 09:58)   письмо автору
 
   для: sirop   (20.07.2007 в 05:14)
 

показывайте структуры таблиц проектов , дизайнеров ... и контрактов (отношение дизайнеров к проектам)

   
 
 автор: sirop   (20.07.2007 в 14:49)   письмо автору
 
   для: Trianon   (20.07.2007 в 09:58)
 

Вот дамп таблицы всего проекта ( в неё ложатся поля "Название проекта" и "Вид выполненных работ"):

CREATE TABLE `gallery_project` (
  `id` int(11) NOT NULL auto_increment,
  `project` tinytext NOT NULL,
  `type` int(11) NOT NULL default '0'
  PRIMARY KEY  (`id`)
) ENGINE=MyISAMж

Вот дамп таблицы дизайнеров ( в неё ложатся поля "Дизайнеры проекта" и "ID самого проекта из верхнего дампа для связки"):

CREATE TABLE `gallery_designer_project` (
  `id` int(11) NOT NULL auto_increment,
  `designer` int(11) NOT NULL default '0',
  `project` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

Данные из отправленной формы добавляю так:

<?php

$_POST
['project'] = mysql_escape_string($_POST['project']);

$query "INSERT INTO gallery_project SET project = '".$_POST['project']."', type = '".$_POST['type']."'";
$new mysql_query($query);
//ИД только что добавленного проекта
$id_add mysql_insert_id();

if(
$new)
{
  
//Здесь нужно добавить записи в таблицу дизайнеров
}
?>

   
 
 автор: Trianon   (20.07.2007 в 15:14)   письмо автору
 
   для: sirop   (20.07.2007 в 14:49)
 

что Вы называете таблицей дизайнеров - я как раз назвал таблицей контрактов.
В ней и укладывается информация - кто в какой проект вовлечен. Впрочем дело не в названии.
Где таблица, которая хранит сами имена людей?
ведь gallery_designer_project.designer это чужой ключ в другую таблицу ?
Где она?

Впрочем код добавления можно и без нее наварить.
сейчас набросаем. ...

   
 
 автор: sirop   (20.07.2007 в 15:34)   письмо автору
 
   для: Trianon   (20.07.2007 в 15:14)
 

>Где таблица, которая хранит сами имена людей?
>ведь gallery_designer_project.designer это чужой ключ в другую таблицу ?
>Где она?


CREATE TABLE `gallery_designer` (
  `id` int(11) NOT NULL auto_increment,
  `designer` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

Поле designer и есть Имя и Фамилия дизайнера. А в таблице gallery_designer_project в поле designer хранится ID для связи

>Впрочем код добавления можно и без нее наварить.
>сейчас набросаем. ...

Уважаемый, Trianon, надеюсь на Вашу помощь. Спасибо

   
 
 автор: Trianon   (20.07.2007 в 15:37)   письмо автору
 
   для: sirop   (20.07.2007 в 15:34)
 


<?php
  $project 
=  mysql_escape_string($_POST['project']);
  
$type =     intval($_POST['type']);

  
$sql "INSERT INTO gallery_project
              SET  project = '
$project',
                   type = 
$type";
  
$new mysql_query($sql)             // добавляем проект
  
if(!$new)
      echo(
"Error in $sql : "mysql_error());
  else
  {
      echo 
"Проект добавлен. ";
      
$project_id mysql_insert_id(); // ИД только что добавленного проекта
      
$designer = @$_POST['designer'];

      if(!empty(
$designer))
      {
         foreach(
$designer as $num => $id)
             
$designer[$num] = intval($id); // оставляем только целые

         
$designer_list implode(','$designer); // список в строку через запятую

      
}
      
$sql "INSERT INTO gallery_designer_project (project,designer)
                SELECT 
$project_id AS project, id
                   FROM gallery_designer
                  WHERE id IN (
$designer_list)";

      
$res mysql_query($sql))   // добавляем разработчиков
      
if(!$res)
           echo(
"Error in $sql : "mysql_error());
      else
           echo 
"Разработчики добавлены.";
  }

?>

   
 
 автор: sirop   (20.07.2007 в 16:25)   письмо автору
 
   для: Trianon   (20.07.2007 в 15:37)
 

Гениально. Trianon, огромное спасибо, всё классно работает.
P.S.: $res = mysql_query($sql)) - убрал вторую закрывающую скобку и вместо неё точку с запятой - просто у Вас опечатка

Спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования