|
|
|
| Как при multiple select внести данные в базу через запятую?
<select name="category" multiple>
<option value="1">Кафе</option>
<option value="2">Бар</option>
<option value="3">Ресторан</option>
<option value="4">Кофейня</option>
</select>
|
Спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 12:25)
| | Что из себя представляет дам базы? | |
|
|
|
|
|
|
|
для: mihdan
(22.10.2007 в 12:53)
| |
CREATE TABLE `catalog` (
`id` int(11) NOT NULL auto_increment,
`category` varchar(100) NOT NULL default '0',
`title` varchar(100) NOT NULL default '',
`full_title` varchar(250) NOT NULL default '',
`work_time` varchar(100) NOT NULL default '',
`cuisine_type` varchar(50) NOT NULL default '0',
`inform` text NOT NULL,
`address` varchar(250) NOT NULL default '',
`tel` varchar(50) NOT NULL default '',
`www` varchar(50) NOT NULL default '',
`sumvote` smallint(11) default '0',
`numvote` smallint(11) default '0',
PRIMARY KEY (`id`),
KEY `category` (`category`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=130 ;
INSERT INTO `catalog` (`id`, `category`, `title`, `full_title`, `work_time`, `cuisine_type`, `inform`, `address`, `tel`, `www`, `sumvote`, `numvote`)
VALUES (1, '8', 'Картинная галерея', 'Областная картинная галерея', '', '0', '', 'ул. Советская, 97', '72-64-58', '', 1, 1);
INSERT INTO `catalog` (`id`, `category`, `title`, `full_title`, `work_time`, `cuisine_type`, `inform`, `address`, `tel`, `www`, `sumvote`, `numvote`)
VALUES (2, '7', 'Краеведческий музей', 'Областной краеведческий музей', '', '0', '', 'ул. Державинская, 3', '72-63-43', '', 2, 1);
|
| |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 12:25)
| |
<?
$sel = '';
foreach ($_POST["category"] as $val) {
if($sel != '') $sel .=',';
$sel .= $val;
}
?>
|
И имя селекта укажите так - category[]. | |
|
|
|
|
|
|
|
для: sim5
(22.10.2007 в 13:08)
| | Работает. Спасибо.
А как сделать чтобы при открытии формы редактировании данных категории, категории были уже выбраны, которые были указаны при добавлении в базу? | |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 13:14)
| | Проверяйте при создании списка, и если значение опшена уже есть в базе, то указывайте для опшена значение selected, например:
<option value="1" selected>Кафе</option>
|
и т.д. | |
|
|
|
|
|
|
|
для: sim5
(22.10.2007 в 13:23)
| | А можно поподробнее? )) | |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 13:24)
| | Вот тут затруднение, я ведь не знаю как у вас формируется страница. Если вы делаете запрос к базе, получаете ее записи, а потом выводите элеметы страницы, включая форму, то:
1. строку содержащую значение селекта преобразуйте в массив (например explode(','$str),
2. при формировании списка проверяйте - если формируемый опшен списка уже есть в полученном масииве, устанавливайте ему значение selected. | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 13:41)
| | Мне трудно судить по этому, но если $rowc['id'] и $rowcat['id'] определяет это условие, то все правильно. Не понятно только, судя по дампу таблицы, что значит ваш первый вопрос - записать через запятую... В таблице 'Рестораны', 'Бары', 'Кафе' у вас - это раздельные записи ведь. | |
|
|
|
|
|
|
|
для: sim5
(22.10.2007 в 13:58)
| | << что значит ваш первый вопрос - записать через запятую...
Через запятую записать категории к которым относится запись.
<< определяет это условие, то все правильно
К сожалению, так выводится только самая первая категория, а не все... (( | |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 14:00)
| | Я не могу судить, по тому что вы представили, - что вы делаете, но, например:
Вы формируете список на основании записей в таблице, т.е., если у вас будет в таблице: один, два, три, то и селект будет состоять из трех опшенов. Как в этом случае можно говорить о том что они уже вибирались? Единственно правильно, это все отметить как выбранные.
Но если у вас в таблице: один, два, три, а вы еще добавляете - четыре, пять, шесть..., то здесь уже, можно сказать, вполне логично для первых трех опшенов указать, что они выбраны.
По каким критериям вы определяете выбор опшена - по тому, что он есть уже в базе, или по тому, что он чему-то соответсвует, а может по тому, что его ранее выбирали (отмечали). Поймите, я ведь не имею ни майлешего представляения, что к чему у вас, как я вам могу сказать в чем причина. | |
|
|
|
|
|
|
|
для: sim5
(22.10.2007 в 14:12)
| | Добавляем например в таблицу новое кафе-бар, выбираем для него категории к которой оно относится, т.к. это кафе-бар, следовательно оно относится к 2 категориям - кафе и бары. Добавили.
Теперь, например, нужно отредактировать данные об этом кафе-баре, мы открываем форму редактирования, и у нас в списке всех категорий должны быть уже выбраны две из них (кафе и бары), т.к. при добавлении данного кафе в базу мы выбрали именно их.
Так понятно? )) | |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 14:25)
| | Чужая душа - потемки. Знаете такое?)
То есть вы хотите, чтобы при добавлении в базу, результатом был вывод списка с выбранными опшенами только что добавленного? Так не получится, вы ведь не записываете в базу признака того, что вы добавляли/выбирали. Чтобы такое сделать, сохраняйте ID добавленного в сессии, например. Вот с этими значениями из сессии и сравнивайте ID выводимых в список катагорий (или подкатегорий). | |
|
|
|
|
|
|
|
для: sim5
(22.10.2007 в 14:56)
| | Мы друг друга не понимаем ))
Посмотрите вложение там форма добавления и редактирования, может так ситуация прояснится... )) | |
|
|
|
|
|
|
|
для: kis-kis
(22.10.2007 в 15:01)
| | Вы думаете у меня уйма времени сидеть и разбирать с формами. Я не знаю что у вас и к чему. Но в чем собственно проблема. У вас есть таблица категорий: id категории, описание ее и прочее. Есть таблица субкатегорий: id субкатегории, родитель (id категории), описание категории и т.п. Вы в режиме админа хотите добавить субкатегорию - выбираете из списка ей родителя, описываете и прочее, вносите в базу. Ну а далее способов редактирования куча:
1. Выбираете из списка каонкретную категорию, субкатегорию и пр. - редактируйте, вносите в базу.
2. Выбираете вывод всего списка категорий/подкатегорий - вносите в соответсвующее поле кактегории/подкатегории изменения, а потом сохраняете, это групповой метод редактирования, можно так сказать.
3. ... и так пока фантазия не иссякнет.
Вам сейчас нужно просто обдумать идею, что и как, может вы делаете что-то лишнее? | |
|
|
|
|
|
|
|
для: 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";
|
| |
|
|
|
|