[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись элементов из мультисписка в БД
Romario
Доброго времени суток!

Столкнулнся с такой проблемой, немогу(незнаю как) заставить несколько выбраных значений их мультисписка добавиться в БД, добавляется только одно.

пример кода
$html .= '<select name="field['.$field['id'].']" id="cats"  size="3" multiple="1" >';
foreach($items as $i){

$html .= '<option value="'.$i.'"';
if($i == @$cfg['default']) { $html .= 'selected'; }
$html .= ' >'.$i.' </option>';

}
$html .= '</select>';


Подскажите пожалуйста, как реализовать...

Заранее благодарю.





Спустя 23 минуты, 45 секунд (11.05.2011 - 13:12) sharki написал(а):
Romario
А где собственно сам код добавления в БД?

Спустя 2 часа, 8 минут, 59 секунд (11.05.2011 - 15:21) Romario написал(а):
Извиняюсь, неправильно сформулировал и привел пример(т.к. выше кусок большого скрипта, там много раз идет преобразование переменных).

подскажите пожалуйста на таком примере, как реализовать, что бы при выборе нескольких значений option они записались в БД
 $b=$_POST['last'];
$sql="INSERT INTO links (url) VALUES ('$b')";
$result=mysql_query($sql);
echo "Спасибо! Информация занесена!\n";
} else {
?>
<form action="corce.php" method="POST">
<
select name="last" id="cats" size="3" multiple="1" >
<
option value="123" >123</option>
<
option value="000" >000</option>
<
option value="444" >444</option>
</
select>
<
input type="Submit" name="submit" value="Ввод информации">
</
form>
<?
}
?>

Спустя 7 минут, 47 секунд (11.05.2011 - 15:29) sharki написал(а):
на выходе мы получаем массив $_POST['last'] со всеми выбранными опшинами, можешь глянуть через print_r($_POST['last']);
 <select name="last[]" id="cats"  size="3" multiple="1" >
<option
value="123" >123</option>
<option
value="000" >000</option>
<option
value="444" >444</option>
</select>


Потом можно например занести в базу те значения которые были выбраны, через запятую, обработав функцией implode

$sql = "INSERT INTO links (url) VALUES ('".implode(",",$_POST['last'])."')";

Спустя 10 минут, 56 секунд (11.05.2011 - 15:40) Romario написал(а):
Спасибо большое, помогло.

теперь буду прикручивать к основному скрипту

Спустя 7 дней, 22 часа, 42 минуты, 51 секунда (19.05.2011 - 14:23) Romario написал(а):
Есть ли какойто вариант что бы в name="alloner" уже передавались несколько значений value
без изменения name="alloner" на name="alloner[]" ?

<form action="test.php" name="oner" method="POST">
<
select name="alloner" size="3" multiple="1" >
foreach($items as $i){
<option value="$i" >$i</option>
}
</select>
<
input type="Submit" name="submit" value="Ввод информации">
</
form>


P.S. пробовал вставить форму в форму но ничего неполучилось (

Спустя 1 час, 21 минута, 18 секунд (19.05.2011 - 15:44) sharki написал(а):
Romario
Хочешь чтобы внутрь списка добавлялись новые значения, но не трогались уже существующие, динамически?

Спустя 3 минуты, 26 секунд (19.05.2011 - 15:47) Romario написал(а):
да
т.к. у меня первый селект имеет уже name="field['.$field['id'].']"
и он обрабатывается и переробаиывается не в одном месте и поэтому его нехочется трогать

Спустя 3 минуты, 10 секунд (19.05.2011 - 15:51) sharki написал(а):
ну тогда надо сделать одно поле hidden и туда скидывать доп. инфу. т.к выбрать одновременно из НЕ МУЛЬТИСПИСКА нельзя.

Спустя 2 минуты, 35 секунд (19.05.2011 - 15:53) Romario написал(а):
а можно на примере как это сделать...

Спустя 1 минута, 29 секунд (19.05.2011 - 15:55) sharki написал(а):
Romario
давай размебермся, как ты хочешь динамически добавить инфу в список? Что из себя представляет эта инфа, тоже вид списка? Или просто строка?

Или как я понял ты хочешь объединить 2 списка в один? Но не хочешь делать из него мультисписок?

Спустя 5 минут, 47 секунд (19.05.2011 - 16:00) Romario написал(а):
напрмер есть список "товаров" цифробуквенные значения которые выводятся через переменную $i
есть первый <select name="field['.$field['id'].']">
и вот в это нэйм нужнро передать выбранные значения $i через запятую

т.е. если бы было так <select name="field[]"> то все работает но name="field['.$field['id'].']" нельзя менять т.к. он много где преобразовывается, т.е. мне в name="field['.$field['id'].']" на до уже передать готовые выбранные значения из мультисписка через запятую

Спустя 5 минут, 21 секунда (19.05.2011 - 16:06) sharki написал(а):
Допустим мы из первого списка выбрали значение "мониторы", он имеет значение "43"

далее, нам надо создать еще один список с именем выбранного значения т.е 43? и этот список тоже заполняется подкатегориями "мониторов" ?

Спустя 5 минут, 12 секунд (19.05.2011 - 16:11) Romario написал(а):
нет, есть список, например
*пуд 45
*йцувай
*йу89

в нем(мультисписке) выбираем напрмер 2а значения (пуд 45, йу89)
и вот эта строка "пуд 45, йу89" вносится в name="field['.$field['id'].']"

Спустя 2 минуты, 20 секунд (19.05.2011 - 16:13) sharki написал(а):
нет, есть список, например
*пуд 45
*йцувай
*йу89

Это первый список!

и вот эта строка "пуд 45, йу89" вносится в name="field['.$field['id'].']"

Это второй список?


ИЛИ выбранные значения списка должны заменить имя своего же списка на "пуд 45, йу89" ?

Спустя 10 минут, 38 секунд (19.05.2011 - 16:24) Romario написал(а):
мультисписок всего один, в идеале он выглядит так
<form action="test.php" name="qwerty" method="POST">
<select name="field['.$field['id'].']" size="3" multiple="1" >
foreach($items as $i){
<option value="$i" >$i</option>
}
</select>
<input type="Submit" name="submit" value="Ввод информации">
</form>
в таком виде в name="field['.$field['id'].']" он передает только одно выбранное значение $i
, а нужно что бы передал все выбранные $i

я немогу сделать так name="field[]" т.к. name="field['.$field['id'].']" много где используется и преобразуется, поэтому нужно както уже спарсить все выбранные значения $i и репедать через <select name="field['.$field['id'].']" size="3" multiple="1" >

Спустя 3 минуты (19.05.2011 - 16:27) sharki написал(а):
замени
<select name="field['.$field['id'].']" size="3" multiple="1" > 
на
<select name="field['.$field['id'].'][]" size="3" multiple="1" >


И лови свои значения в новом массиве :)

Спустя 9 минут, 14 секунд (19.05.2011 - 16:36) Romario написал(а):
так он необрабатывает массив, и везде уже идет Array, а нужно что name="field['.$field['id'].']
получал готовое сформированное значение значение(строку из выбранных значений $i)

т.е. сейчас получается типо такого
name="field['.$field['id'].'] = array(1,2,3, и т.д.)
а нужно типо такого
name="field['.$field['id'].'] = "1,2,3, и т.д."

Спустя 4 минуты, 29 секунд (19.05.2011 - 16:41) sharki написал(а):
ну так полученный массив обработай функцией implode()

Спустя 7 минут, 8 секунд (19.05.2011 - 16:48) Romario написал(а):
в этом вся и загвоздка, что значение name="field['.$field['id'].'] обрабатывается не в одном месте , а в 20+
нужно както в name="field['.$field['id'].'] передать не массив от выбранных выбранных $i
а готовое значение(строку) выбранных $i

Спустя 5 минут, 4 секунды (19.05.2011 - 16:53) sharki написал(а):
тогда нужно курить JS, и перед тем как отправить на сервер, получить значения выбранных эл-ов, и заменить атрибут name на другое, которое нужно.

Спустя 2 минуты, 9 секунд (19.05.2011 - 16:55) Romario написал(а):
спс, с php только начал разбираться , а до JS еще далеко (

Спустя 9 минут (19.05.2011 - 17:04) sharki написал(а):
Romario
Все когда приходится учить)

Спустя 17 часов, 37 минут, 41 секунда (20.05.2011 - 10:42) Romario написал(а):
Сделал что то почти рабочее
$dfr = $_POST['alloner'];
$rty = implode(",",$_POST['jjj']);

print_r($dfr);

?>

<form action="test.php" method="POST">
<
select name="alloner" style="width:70px;" size="6" multiple="1" >
<?php echo '<option value="'.$rty.'">rty</option>'; ?>
</select>
<
select name="jjj[]" style="width:70px;" size="6" multiple="1">
<
option value="000">000</option>
<
option value="111">111</option>
<
option value="222">222</option>
</
select>
<
input type="Submit" name="submit" value="Ввод информации">
</
form>

т.е. оно работает както с задержкой, напрмер
при выборе rty и 111, сначало ничего не происходит
затем выбираю например rty и 222, и он показывает
предыдущее выбранное значение(rty и 111)
и наверное поэтому неработает в общем скрипте


так же нашел скрипт на яве

<FORM>
Набор канцелярских товаров:
<SELECT onChange="form.elements[1].value='';
for(i=0;i<form.elements[0].length;i++)
if(form.elements[0].options[i].selected==true)
form.elements[1].value = form.elements[1].value+i;"
multiple>
<option
value="000">000</option>
<option
value="111">111</option>
<option
value="222">222</option>
</SELECT>

Выбраны позиции:
<INPUT NAME=cgbhn SIZE=57 MAXLENGTH=57
onFocus
="form.elements[1].blur();">
</FORM>


но в NAME=cgbhn как я понял он записывает только порядковый номер выбранного значениея

есть ли у кого нибудь идеи как всетаки всетаки в name="alloner" передать уже сформированную строку из выбранных значений option?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.