Прошу помочь разобраться с простой функцией foreach

iliasru

Новичок
Прошу помочь разобраться с простой функцией foreach

Я понимаю этот вопрос очень простой. Но мне это надо. Прошу не отправлять меня читать мануалы. А просто помочь - если Вам это не сложно.

Ситуация следующая:

имеется следующая форма
PHP:
<head>
<title>Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>

<body>
<form action="form.php" method="post" lang="ru">
<select name="slct[]" size="5" multiple>
<option value="Россия" selected >Россия</option>
<option value="Европа" >Европа</option>
<option value="Азия" >Азия</option>
<option value="Америка" >Америка</option>
<option value="Япония" >Япония</option>
</select>
<input type="submit" name="okbutton" value="OK">
</form>

<?

$slct=$_POST['slct'];
if ($slct) {
    echo "Вы выбрали следующие страны: <b><i>";
    foreach ($slct as $slcts) {
    echo $slcts . ', ';
    }
}
?>
</body>
</html>
помогите мне присвоить к одной переменной все выбранные элементы массива. Чтобы я затем мог использовать его за пределами функции foreach. К примеру:

PHP:
$slct=$_POST['slct'];
if ($slct) {
    echo "Вы выбрали следующие страны: <b><i>";
    foreach ($slct as $slcts) {
    $slcts = $slcts;
    }
}
echo $slcts;
Буду очень благодарен за ваш совет.
 

iliasru

Новичок
Автор оригинала: damngood
$slcts = $slcts; это как вообще?
это я привел пример. на самом деле я согласен это бред.

но мне надо его исправить чтобы он корректно работал.

Если кто знает начиркайте - как это все будет выглядеть правильно....


:D
 

damngood

Мозг был, но ушел...
http://ru.php.net/manual/en/language.types.array.php

читаем про скобки []

Далее, если при выводе тебе хочется так объединить все, что ты засунешь в массив запятыми в виде: 1,2,3,4... читаем про функцию http://ru.php.net/manual/en/function.join.php
 

baev

‹°°¬•
Команда форума
Мда

iliasru, давайте Вы уже мозги включите?

Из этих двух строк:
PHP:
    echo $slcts . ', ';
и
PHP:
    $slcts = $slcts;
то, что Вам нужно, составляется ну очень легко.

Что делает оператор echo?
А что делают операторы "=" и "." («точка»)?
 

iliasru

Новичок
Автор оригинала: baev
Мда

iliasru, давайте Вы уже мозги включите?

Из этих двух строк:
PHP:
    echo $slcts . ', ';
и
PHP:
    $slcts = $slcts;
то, что Вам нужно, составляется ну очень легко.

Что делает оператор echo?
А что делают операторы "=" и "." («точка»)?
спасибо за помощь...
 

Royal Flash

-=MaestrO=-
Я бы посоветовал сделать так:

1. Хранить названия стран в массиве, так с ними проще работать
PHP:
$country = array(0 => 'Россия', 1 => 'Япония');
Форма, соответственно:

PHP:
// Генерируем option
$option = '';
foreach ($country AS $key = $value)
  {
  $option .= '<option value="'.$key.'">'.$value.'</option>';
  }
Вывод:
PHP:
$country_selected = '';
if (is_array($_POST['slct'])) 
  {
  foreach ($slct as $key) 
    {
    $key = intval($key);
    $country_selected .= $country[$key].', '; 
    } 
  }

// Убрать последнюю запятую с пробелом
$country_selected = substr($country_selected, 0, (strlen($country_selected) - 2));

echo "Вы выбрали следующие страны: $country_selected";
Да, и не забывайте проверять пользовательские данные на корректность, например, чтобы не было 10000 "Россий" и 5000 "Японий". Также стоит проверить, есть ли вообще выбранная страна в массиве. В вашем варианте словить CSS/XSS эксплоит не составит труда.
 
Сверху