|
|
|
| Уважаемые, подскажите, пожалуйста!
В форме есть список с multiple, имя задано так, чтобы выбор формировался в массив (name = "id[]").
В файле-обработчике формы указаны небезызвестные
foreach($_POST["id"] as $key=>$value)
echo "$key = $value <br>";
|
А вот как бы сделать так, чтобы непосредственный вывод выбранного пользователем не происходил, а данные массива аккуратно записывались в отдельные переменные для их последующей пересылки с помощью функции mail? | |
|
|
|
|
автор: ?? (04.08.2009 в 18:45) |
|
|
для: Black__Hole
(04.08.2009 в 18:27)
| |
$array = array();
foreach($_POST["id"] as $value)
array_push($array, $value);
| ?? | |
|
|
|
|
|
|
|
для: ??
(04.08.2009 в 18:45)
| | Извините, я в массивах совсем не разбираюсь.
После реализации Вашего примера при подстановке в функцию mail переменной $value выводится только последнее выбранное пользователем значение (всего на выбор 9 значений списка), а не все. | |
|
|
|
|
автор: ,,,, (04.08.2009 в 19:18) |
|
|
для: Black__Hole
(04.08.2009 в 19:00)
| | array_push() нормально вставляет значение переменной в конец массива
<pre><?php
if (isset($_POST["id"]) && is_array($_POST["id"])) {
$array = array();
# print_r($_POST["id"]);
foreach($_POST["id"] as $value) {
$value = intval($value);
array_push($array, $value);
}
print_r($array);
}
?></pre>
<hr/>
<form action="" method="post">
<select size="3" multiple name="id[]">
<option disabled>Выберите чего-нибудь</option>
<option value="1">первое</option>
<option value="2">второе</option>
<option value="3">третье</option>
<option value="4">четвёртое</option>
</select>
<input type="submit" value="send">
</form>
|
может вам нужна строка вместо массива,
тогда просто используйте
$string .= (empty($string))? $value: ', ' $value;
|
| |
|
|
|
|
автор: ,,,,, (04.08.2009 в 19:21) |
|
|
для: Black__Hole
(04.08.2009 в 19:00)
| | или просто , без выкрутасов с () ? : ; | |
|
|
|
|
|
|
|
для: ,,,,,
(04.08.2009 в 19:21)
| | Мне лишь нужно отправить на e-mail информацию о том, что было выбрано пользователем из multiple списка:
$tomail = "mail@mail.ru";
$sub = "Состоялся выбор";
$mes = "Пользователь выбрал: далее идут значения, выбранные из multiple списка;
$send = mail ($tomail, $sub, $mes, "Content-type:text/plain; charset = utf-8");
|
То есть на данный момент я столкнулась с проблемой отправки массива выбранных значений. | |
|
|
|
|
автор: ,,,,,, (04.08.2009 в 20:39) |
|
|
для: Black__Hole
(04.08.2009 в 20:09)
| | вариантов много . c циклом
<?
$mes = 'Пользователь выбрал:';
while($str = array_pop($_POST["id"]))
$mes .= ' ' . intval($str);
$mes .= ' и т.д...';
| или без цикла
если без цикла, сначала каким-нибудь array_map() или array_walk()
проверять и устанавливать значения, можно и сразу implode, с последующей обработкой
, мне кажется лучше так или while(.......array_shift()),
только если в массиве будет '0' , чтобы цикл не оборвался нужно сравнивать как !== NULL значение возвращаемое array_pop() или array_shift() | |
|
|
|
|
|
|
|
для: ,,,,,,
(04.08.2009 в 20:39)
| | Я, вероятно, настолько криво объясняю, что самые элементарные решения ищутся долгими часами.. :(
Спасибо Вам за помощь!
А решила вопрос таким образом:
if(isset($_POST["id"]) && $_POST["id"]) {
$selected = "";
for($i = 0; $i < count($_POST["id"]); $i++)
$selected .= $_POST["id"][$i]; }
$mes = "Было выбрано следующее: $selected";
|
| |
|
|
|
|
автор: ......... (04.08.2009 в 23:33) |
|
|
для: Black__Hole
(04.08.2009 в 22:34)
| | просто люди не безотрывно за мониторами, отрывают и отрываюсь ;)
а с пониманием у меня всегда было туговато
if(isset($_POST["id"]) && $_POST["id"])
|
не совсем правильно if ( переменная ) может быть 0, '0', '', NULL, FALSE чтобы проверка не сработала , а в случае с массивом там Array , даже если он пустой или заполнен нулями | |
|
|
|
|
автор: ,,,,,, (04.08.2009 в 23:41) |
|
|
для: .........
(04.08.2009 в 23:33)
| | чёт не то сказал :)
$array = array(NULL); сработало
а $array = array(); не сработало
значит всё почти правильно , извиняюсь | |
|
|
|
|
автор: ....... (04.08.2009 в 21:27) |
|
|
для: Black__Hole
(04.08.2009 в 20:09)
| | обход массива без его изменения
<?
while((list(,$str) = each($_POST["id"])) !== FALSE)
$mes .= ' ' . intval($str);
|
| |
|
|
|