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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как при multiple select внести данные в базу?

Сообщения:  [1-10]   [11-17] 

 
 автор: kis-kis   (22.10.2007 в 15:48)   письмо автору
 
   для: sim5   (22.10.2007 в 15:14)
 

Вот что было нужно -


echo "<select name=\"cat[]\" multiple=\"multiple\">";
$result = mysql_query("SELECT * FROM cat_catalog where subcat='3' ORDER BY name ASC");
while($categ = mysql_fetch_object($result))
{
$categArray = explode(',', $row[category]); 
$selected = '';
if(in_array($categ->id, $categArray))
{
$selected = ' selected';
}
echo "<option value=\"".$categ->id."\"".$selected.">".$categ->name."</option>\n";
}
echo "</select>\n";

   
 
 автор: sim5   (22.10.2007 в 15:14)   письмо автору
 
   для: kis-kis   (22.10.2007 в 15:01)
 

Вы думаете у меня уйма времени сидеть и разбирать с формами. Я не знаю что у вас и к чему. Но в чем собственно проблема. У вас есть таблица категорий: id категории, описание ее и прочее. Есть таблица субкатегорий: id субкатегории, родитель (id категории), описание категории и т.п. Вы в режиме админа хотите добавить субкатегорию - выбираете из списка ей родителя, описываете и прочее, вносите в базу. Ну а далее способов редактирования куча:

1. Выбираете из списка каонкретную категорию, субкатегорию и пр. - редактируйте, вносите в базу.
2. Выбираете вывод всего списка категорий/подкатегорий - вносите в соответсвующее поле кактегории/подкатегории изменения, а потом сохраняете, это групповой метод редактирования, можно так сказать.
3. ... и так пока фантазия не иссякнет.

Вам сейчас нужно просто обдумать идею, что и как, может вы делаете что-то лишнее?

   
 
 автор: kis-kis   (22.10.2007 в 15:01)   письмо автору
 
   для: sim5   (22.10.2007 в 14:56)
 

Мы друг друга не понимаем ))

Посмотрите вложение там форма добавления и редактирования, может так ситуация прояснится... ))

   
 
 автор: sim5   (22.10.2007 в 14:56)   письмо автору
 
   для: kis-kis   (22.10.2007 в 14:25)
 

Чужая душа - потемки. Знаете такое?)
То есть вы хотите, чтобы при добавлении в базу, результатом был вывод списка с выбранными опшенами только что добавленного? Так не получится, вы ведь не записываете в базу признака того, что вы добавляли/выбирали. Чтобы такое сделать, сохраняйте ID добавленного в сессии, например. Вот с этими значениями из сессии и сравнивайте ID выводимых в список катагорий (или подкатегорий).

   
 
 автор: kis-kis   (22.10.2007 в 14:25)   письмо автору
 
   для: sim5   (22.10.2007 в 14:12)
 

Добавляем например в таблицу новое кафе-бар, выбираем для него категории к которой оно относится, т.к. это кафе-бар, следовательно оно относится к 2 категориям - кафе и бары. Добавили.

Теперь, например, нужно отредактировать данные об этом кафе-баре, мы открываем форму редактирования, и у нас в списке всех категорий должны быть уже выбраны две из них (кафе и бары), т.к. при добавлении данного кафе в базу мы выбрали именно их.

Так понятно? ))

   
 
 автор: sim5   (22.10.2007 в 14:12)   письмо автору
 
   для: kis-kis   (22.10.2007 в 14:00)
 

Я не могу судить, по тому что вы представили, - что вы делаете, но, например:
Вы формируете список на основании записей в таблице, т.е., если у вас будет в таблице: один, два, три, то и селект будет состоять из трех опшенов. Как в этом случае можно говорить о том что они уже вибирались? Единственно правильно, это все отметить как выбранные.
Но если у вас в таблице: один, два, три, а вы еще добавляете - четыре, пять, шесть..., то здесь уже, можно сказать, вполне логично для первых трех опшенов указать, что они выбраны.

По каким критериям вы определяете выбор опшена - по тому, что он есть уже в базе, или по тому, что он чему-то соответсвует, а может по тому, что его ранее выбирали (отмечали). Поймите, я ведь не имею ни майлешего представляения, что к чему у вас, как я вам могу сказать в чем причина.

   
 
 автор: kis-kis   (22.10.2007 в 14:00)   письмо автору
 
   для: sim5   (22.10.2007 в 13:58)
 

<< что значит ваш первый вопрос - записать через запятую...

Через запятую записать категории к которым относится запись.

<< определяет это условие, то все правильно

К сожалению, так выводится только самая первая категория, а не все... ((

   
 
 автор: sim5   (22.10.2007 в 13:58)   письмо автору
 
   для: kis-kis   (22.10.2007 в 13:41)
 

Мне трудно судить по этому, но если $rowc['id'] и $rowcat['id'] определяет это условие, то все правильно. Не понятно только, судя по дампу таблицы, что значит ваш первый вопрос - записать через запятую... В таблице 'Рестораны', 'Бары', 'Кафе' у вас - это раздельные записи ведь.

   
 
 автор: kis-kis   (22.10.2007 в 13:41)   письмо автору
 
   для: sim5   (22.10.2007 в 13:33)
 

1. Дамп таблицы сверху.
2. Дамп таблицы с категориями:


CREATE TABLE `cat_catalog` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(50) NOT NULL default '',
  `en_name` varchar(50) NOT NULL default '',
  `subcat` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  KEY `subcat` (`subcat`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=30 ;
-- 
-- Дамп данных таблицы `cat_catalog`
-- 
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (16, 'Рестораны', 'restaurants', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (17, 'Бары', 'bars', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (18, 'Кафе', 'cafes', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (19, 'Кофейни', 'coffee_houses', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (21, 'Пиццерии', 'pizzerias', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (26, 'Детям', 'kids', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (27, 'Кондитерские', 'confectionery', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (28, 'Чайные', 'tea_houses', 3);
INSERT INTO `cat_catalog` (`id`, `name`, `en_name`, `subcat`) VALUES (29, 'Пабы', 'pubs', 3);


Кусок формы редактирования категории


<select name="cat" class=form style="width: 500 px;" multiple size="5">
<?php
$resultc
=mysql_query("SELECT * FROM cat_catalog WHERE id = '$row[category]'") or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
$rowcat mysql_fetch_array($resultc);
$tcat $rowcat['id'];
$result=mysql_query("SELECT * FROM cat_catalog where subcat='3' ORDER BY name ASC") or die("<B>Error ".mysql_errno()." :</B> ".mysql_error()."");
while(
$rowc mysql_fetch_array($result)) 

?>
                <option value="<?php echo $rowc['id']; ?><?php if ($rowc['id']== $tcat) echo "selected"?>
                <?php echo $rowc['name']; ?>
                </option>
                <?php 

?>
              </select>

   
 
 автор: sim5   (22.10.2007 в 13:33)   письмо автору
 
   для: kis-kis   (22.10.2007 в 13:24)
 

Вот тут затруднение, я ведь не знаю как у вас формируется страница. Если вы делаете запрос к базе, получаете ее записи, а потом выводите элеметы страницы, включая форму, то:
1. строку содержащую значение селекта преобразуйте в массив (например explode(','$str),
2. при формировании списка проверяйте - если формируемый опшен списка уже есть в полученном масииве, устанавливайте ему значение selected.

   

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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