С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
1

Передача массива

31.07.2009, 17:15. Показов 2587. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача:
необходимо создать несколько полей ввода текста, а затем передать массив значений этих самых полей. Но для начала нужно его ввести.
Допустим, к-во полей известно ($ans_count)
Есть код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form method=POST >
<?
for($i=0; $i<$ans_count;$i++)
{
    echo '
    <input type=text name="mass" value="02klsjfl">';
 
    $mass[$i}=$_POST['mass'];
 
    echo'<br>';
 
           echo $mass[i];
}
?>
<input type=submit>
</form>
Так вот в чём вопрос : почему у меня ничего не выводится, т.е. массив пуст ?
Кокбэ тут должна была быть строка "02klsjfl" после каждого поля ввода текста.

Если я присваивание делаю в другой форме и циклом прохожу уже по существующим полям - то же самое.

Может я чего-то очевидного не вижу ?..Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.07.2009, 17:15
Ответы с готовыми решениями:

Передача массива обработчику
Ребят чет не могу понять как передать массив и вообще создать его)). 1)В пхп делаю выборку из базы...

Передача массива из input PHP + AJAX
Приветствую! Передаю массив из формы через ajax &lt;script type=&quot;text/javascript&quot;&gt; function...

Передача массива из JavaScript(AJAX, JSON) в PHP
Добрый вечер! Ребят, тут такое дело, имеется схема зала с местами. У каждого места есть свой ID....

передача массива
$fp1 = fsockopen(...); if($fp1!=false) { for($i=0;$i&lt;128;$i++) { $a=i; } ...

17
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
31.07.2009, 17:23 2
Может в этом ошибка? (красным)
Код
$mass[$i[B][COLOR="Red"]}[/COLOR][/B]=$_POST['mass'];
0
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
31.07.2009, 17:30  [ТС] 3
нет:
1) я столько всего перепробовал, что это просто опечатка в последнем варианте была.
2) проверил - не оно.

да, и ещё:
если делать вот так :
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form method=POST >
<?
 
 
        echo '
        <input type=text name="mass" value="02klsjfl">';
 
        $mass[0]=$_POST['mass'];
 
        echo'<br>';
 
           echo $mass[0];
 
?>
<input type=submit>
</form>
То всё нормально.

Если делать так, что в цикле одной и той же переменной присваиваются значение каждого поля по очереди - тоже не выводит...
т.е. вот так :
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<?
for($i=0; $i<$ans_count;$i++)
{
echo '                  
<input type=text name="mass" value="02klsjfl">';
$mass[0]=$_POST['mass'];
echo'<br>';
echo $mass[0];
}
?>
<input type=submit>
</form>
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
31.07.2009, 17:52 4
Мм, нашел в чем дело. В первом варианте, где выводится массив
Код
echo $mass[i];
неправильно указан индекс i, нужно $i.
0
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
31.07.2009, 17:58  [ТС] 5
да это тоже опечатка небось.
проверял, исправлял...не то это всё...тут что-то кардинальнее...
0
Эксперт С++
3072 / 1410 / 425
Регистрация: 19.01.2009
Сообщений: 3,889
31.07.2009, 18:20 6
нужно текстовые поля создавать динамически, и имена, тоже чтобы были разные.
HTML5
1
2
3
4
5
...
<input type=text name="mass0" value="02klsjfl">
<input type=text name="mass1" value="02klsjfl">
<input type=text name="mass2" value="02klsjfl">
...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?
$ans_count = 3;
 
if ($_GET['posted']=='1')
{
    // получаем от пользователя
    // к полям обращается 
    //
    // for($i=0; $i<$ans_count; $i++)
    //  _GET['mass'.i$] 
}
else
{
    // выводим форму
?>
<form method=GET>
<input type=hidden name="posted" value="1">
<?
for($i=0; $i<$ans_count; $i++)
    echo '<input type=text name="mass'.$i.'" value="02klsjfl"><br>';
?>
<input type=submit>
</form>
<?
}
?>
0
Кто вы, мистер Смит?
285 / 117 / 2
Регистрация: 03.03.2008
Сообщений: 525
31.07.2009, 18:21 7
У всех полей получается одно и то же имя mass. Попробуй их нумеровать:
PHP
1
2
3
        <input type=text name="mass_$i" value="02klsjfl">';
 
        $mass[0]=$_POST['mass_$i'];
Добавлено через 46 секунд
polivets, синхронно мыслим
0
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
31.07.2009, 18:27  [ТС] 8
нумеровал я их, ребят...
всё равно пустой массив.

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

приведу чуть более развёрнутый код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Введите к-во вариантов<br>
                <input type=text name="answers_count"><br>
                <?$ans_count=$_POST['answers_count'];?>
                <input type="submit"value="Создать">
                </form>
   
                <form method=POST >
                
                <?
                $mass=array();
                for($i=0; $i<$ans_count;$i++)
                    {
                    echo '
                    <input type=text name="mass" value="02klsjfl">'; 
                    $mass[$i]=$_POST['mass'];
                    
                    echo'<br>';
                    echo $mass[$i];
                    }
                ?>
                <input type=submit>
                </form>
0
Эксперт С++
3072 / 1410 / 425
Регистрация: 19.01.2009
Сообщений: 3,889
31.07.2009, 18:27 9
Точнее, к сгенеренным полям нужно обращаться в цикле
PHP
1
2
for ($i=0; $i<$ans_count; $i++)
  $mass[$i] = $_GET['mass'.$i]
при известном колве сгенеренных полей $ans_count.

нумеровал я их, ребят...
Где? покажи в своем коде.
0
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
31.07.2009, 18:37  [ТС] 10
PHP
1
echo '<input type=text name="mass'.$i.'" value="02klsjfl"><br>';
это я тоже пробовал. код-то тот же. ну + вот это было :
PHP
1
$mass[$i]=$_POST['mass'.$i.''];
0
Эксперт С++
3072 / 1410 / 425
Регистрация: 19.01.2009
Сообщений: 3,889
31.07.2009, 18:55 11
Помоему, ты немного не допонимаешь, как нужно работать с формами. Посмотри мой пост №6. Нужно в два этапа, сначала, генеришь HTMLформу, а потом, когда юзер нажал на кнопку Submit, то считываешь значения из форм в массив, через $_POST или $_GET (в зависимости, от того, какой метод у тебя обозначен в форме)
0
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
31.07.2009, 19:08  [ТС] 12
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    <form method=POST >
<?
$mass=array();
for($i=0; $i<$ans_count;$i++)
{
echo '                  
<input type=text name="mass" value="lsjfl">';
$mass[$i]=$_POST['mass'];
                    
echo'<br>';
echo $mass[$i];
}
?>
<input type=submit>
</form>
<?
for($i=0; $i<$ans_count;$i++)
echo $mass[$i];
?>
так ?

Добавлено через 1 минуту 44 секунды
имеешь в виду, что сначала нужно создать (к примеру) 3 поля, потом считать эти 3 поля, а потом сабмитнуть ?
0
Эксперт С++
3072 / 1410 / 425
Регистрация: 19.01.2009
Сообщений: 3,889
31.07.2009, 19:24 13
ты читал мой 11 пост?

1. что сначала нужно создать (к примеру) 3 поля
2. пользователь нажал на субмит, скрипту на сервер отправляеются значения из полей.
3. потом считать эти 3 поля

обрати внимание в форму я добавил скрытое поле posted и по его значению я понимию, на каком этапе мы находимся, если posted есть в списке глобальных переменных, и его значение равно единице, то нужно считывать значения, иначе создаем форму для пользователя.
1
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
31.07.2009, 20:36  [ТС] 14
да принцип понятен и так.
ты вот скажи - сам-то пробовал или это твои догадки ?

Добавлено через 7 минут 39 секунд
повторюсь :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
echo '<form method=POST >';
                
                //for($i=0; $i<$ans_count;$i++)
                    {                   
                    echo '
                    <input type=text name="mass'.$i.'" value="lsjfl">';
                    $m[0]=$_POST['mass'.$i];
                    
                    echo'<br>';                 
                    }                   
                echo $m[0];
                echo '<input type=submit>
                </form>
вот так работает.
как только хочу сделать в массиве - уже всё...

Добавлено через 8 минут 37 секунд
всё. сделал вроде. спасибо, парни.
чуток подправить нужно было.

Добавлено через 41 секунду
спасибо за уделённое время.

Добавлено через 43 минуты 38 секунд
ребят, ещё вопрос есть:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?$mass=array();
                
                echo '<form>';
                
                for($i=0; $i<$ans_count;$i++)
                    {
                    echo '
                    <input type=text name="mass'.$i.'">';
                    echo'<br>';
                    //echo $mass[$i];
                    }
                echo '<input type="submit">
                </form>';
                
                echo '<form method=GET>';               
                for($i=0; $i<$ans_count;$i++)
                    {
                    $mass[$i]=$_GET['mass'.$i];
                    echo'<br>';
                    echo $mass[$i];
                    }
                echo '</form>';
                ?>
но результаты 1го ввода в поля показываются после того, как создания нового к-во этих самых полей.
как их увидеть сразу ?..
вопрос может несерьёзный, но тем не менее.
0
9 / 8 / 1
Регистрация: 18.05.2009
Сообщений: 40
01.08.2009, 11:03 15
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form method=POST >
<?
for($i=0; $i<$ans_count;$i++)
{
 
 
        echo '
        <input type=text name="'.$i.'" value="02klsjfl">';
 
        $mass[$i]=$_POST[$i];
 
        echo'<br>';
 
           echo $mass[$i].'<br>';
}
?>
<input type=submit>
</form>
0
Эксперт С++
3072 / 1410 / 425
Регистрация: 19.01.2009
Сообщений: 3,889
01.08.2009, 12:43 16
вот, попробуйте, этот пример.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<html>
<head>
<title>передача переменного количества полей</title>
</head>
 
<body>
<?
$ans_count = 3;
 
if ($_GET['posted']=='1')
{
    echo '<h2>Данные, полученные из формы</h2>';
    // получаем от пользователя
    // к полям обращаешся 
    //
    for($i=0; $i<$ans_count; $i++)
        echo $_GET['mass'.$i].'<br>';
}
else
{
    // выводим форму
?>
<h2>Введите, пожалуйста, элементы массива</h2>
<form method=GET>
<input type=hidden name="posted" value="1">
<table>
<?
for($i=0; $i<$ans_count; $i++)
    echo '<tr><td>'.($i+1).'</td><td><input type=text name="mass'.$i.'" value="02klsjfl"></td></tr>';
?>
</table>
<input type="submit" value="Послать массив">
</form>
<?
}
?>
</body>
</html>
Если опять не то - попробуйте переформулировать задание, может мы чего не допонимаем.

Данный пример, работает через GET, если Вам уж очень нужен метод POST, то просто замените GET на POST.
0
7 / 7 / 1
Регистрация: 29.07.2008
Сообщений: 116
01.08.2009, 16:13  [ТС] 17
всё работает. я же уже сказал, что сделал, только чуть иначе. спасибо.
0
68 / 61 / 11
Регистрация: 10.08.2009
Сообщений: 226
10.08.2009, 11:03 18
Для того, чтобы передался массив, нужно имена полей писать вот так:
HTML5
1
<input type=text name="mass[]" value="02klsjfl">
Тогда в цикле сможешь получить все элементы переданные формой.
0
10.08.2009, 11:03
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.08.2009, 11:03
Помогаю со студенческими работами здесь

передача массива
Всем привет! Помогите пожалуйста... У меня в форме может быть несколько записей, пользователей...

передача массива
Доброе утро. Возникла проблема при передачи массива с js в php. Есть 4 страницы - index.php,...

Передача массива по ссылке
Здравствуйте. Подскажите, как передать массив по ссылке. массив metro имеет значения знач1,...

Передача информации из массива GET
&lt;?php session_start(); if(isset($_GET)){ header('location: g1.php'); } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
UserScript для подсветки кнопок языков программировани­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форм быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
Как создавать приложения для iOS/iPhone
InfoMaster 12.01.2025
Введение в разработку iOS-приложений Разработка приложений для iOS открывает огромные возможности в мире мобильных технологий. С каждым годом количество пользователей iPhone и iPad растет,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru