Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
1

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

22.01.2011, 18:34. Показов 1904. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Помогите пожалуйста...
У меня в форме может быть несколько записей, пользователей сам выбирает сколько заполнять 3,6 или 10 полей. По-этому я все сохраняю в массив phone[]:
HTML5
1
2
3
4
<div id="newDiv">
      <input type="text" name="phone[]" size="15">
     <a href="#"  onclick="Add();">add</a>
</div>
Потом я принимаю эти данный в скрипте:
PHP
1
2
3
$Phone=$_POST['phone'];
foreach($Phone as $value){
echo $value."";}
Если одна запись в массиве то работает, если больше то выдает ошибку...
Что я сделал неправильно, может массив как-то неправильно передал???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2011, 18:34
Ответы с готовыми решениями:

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

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

Передача массива значений
Добрый день! имеется файл sotrudnik.php, в котором есть функция list1(), которая заполняет и...

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

19
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.01.2011, 18:38 2
Цитата Сообщение от as Посмотреть сообщение
если больше то выдает ошибку
Какую ошибку? В форме все поля имеют имя "phone[]" ?
0
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
22.01.2011, 18:50  [ТС] 3
Это большая форма там есть различные элементы.
там видно что вызывается ф-ия Add()
Она через javascript добавляет в форму строку
HTML5
1
 <input type="text" name="phone[]" size="15">
По этому их может быть несколько, вот я и сохраняю данные в массив.

Если в массиве 2 и больше записей , то выдает ошибку (вернее предупреждение)
Warning: Invalid argument supplied for foreach() in...
И при этом ничего не выводит, а если одна запись, то все работает
0
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
22.01.2011, 18:56 4
Я конечно не экстрасенс, но рискну предположить, что дело в JS скорее всего при добавлении строки добавляется поле с именем phone а не имя с массивом.
Попробуйте вывести значение поля phone и посмотрите, что передаётся. Скорее всего последний из добавленных телефонов.
0
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
22.01.2011, 19:16  [ТС] 5
Вот полный код:
Javascript
1
2
3
4
function Add() {
var DIV = document.getElementById('newDiv'), X='<br><br><input type="text" name="phone[]" size="15">';
DIV.innerHTML += X
}
HTML5
1
2
3
4
5
6
7
<div id="third">
      <center><font color=#9e9e9e><u><b>Phones<b></u></center><br>
 <div id="newDiv">
      <input type="text" name="phone[]" size="15">
</div>
     <a href="#"  onclick="Add();">add</a>
    </div>
PHP
1
2
3
$Phone=$_POST['phone'];
foreach($Phone as $value){
echo $value."";}
В смысле вывести вывести значения phone
Я вроде это и пытаюсь сделать, но работает только если я один раз запишу в phone[]
0
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.01.2011, 19:20 6
Javascript
1
2
3
4
5
6
7
8
function Add() {
    var DIV = document.getElementById('newDiv'),
        X = document.createElement('input');
    X.setAttribute('type', 'text');
    X.setAttribute('name', 'phone[]');
    X.setAttribute('size', 15);
    DIV.appendChild(X);
}
PHP
1
print_r($_POST);
0
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
22.01.2011, 19:24 7
Цитата Сообщение от as Посмотреть сообщение
В смысле вывести вывести значения phone
PHP
1
echo $_POST['phone'];
0
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
22.01.2011, 19:38  [ТС] 8
Не совсем понятно:
PHP
1
print_r($_POST);
Она выводит значения всех полей формы, при чем значения телефонов так и не вывело.
Array ( [FirstName] => name [LastName] => name2 [Address] => MyAdress [City] => MyCity [Country] => Russia [mail] => Array ( [0] => ) [x] => 22 [y] => 14 )

PHP
1
    echo $_POST['phone'];- ничего не выводит
Мне нужен доступ именно к телефонам.
Я не могу понять где ошибка когда я записываю в массив, или когда достаю???
0
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
22.01.2011, 20:11 9
Цитата Сообщение от as Посмотреть сообщение
Я не могу понять где ошибка когда я записываю в массив, или когда достаю???
100% - когда записываете

Добавлено через 1 минуту
раз
PHP
1
echo $_POST['phone'];- ничего не выводит
Попробуйте так:
PHP
1
2
3
4
foreach($_POST as $key=>$value)
{
 echo"<li>$key=>$value</li>";
}
-Так увидите, что передаётся.
0
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
22.01.2011, 21:21  [ТС] 10
Ничего не могу понять
Ввожу два телефона ввожу несколько телефонов, а выводит
x=>21
Что это значит???
При чем эта цифра берется не понятно откуда
0
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
22.01.2011, 21:39 11
Давайте форму и JS Посмотрю
1
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
23.01.2011, 00:24  [ТС] 12
HTML5
1
2
3
4
5
6
7
8
9
  
  <form action="insert.php" method="post">  
 <div id="third">
      <center><font color=#9e9e9e><u><b>Phones<b></u></center><br>
 <div id="newDiv">
      <input type="text" name="phone" size="15">
</div>
     <a href="#"  onclick="Add();">add</a>
    </div></form>
Javascript
1
2
3
function Add() {
var DIV = document.getElementById('newDiv'), X='<br><br><input type="text" name="phone" size="15">';
DIV.innerHTML += X
insert.php
PHP
1
2
$Phone=$_POST['phone'];
echo $_POST['phone']." ";
0
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
23.01.2011, 00:39 13
А посчему у Вас
HTML5
1
 <input type="text" name="phone" size="15">
А не
HTML5
1
 <input type="text" name="phone[]" size="15">
и тут тоже:
Javascript
1
DIV = document.getElementById('newDiv'), X='<br><br><input type="text" name="phone" size="15">';
А должно быть
Javascript
1
DIV = document.getElementById('newDiv'), X='<br><br><input type="text" name="phone[]" size="15">';
1
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
23.01.2011, 01:03  [ТС] 14
Переделал уже.
Тут проблема в javascript
Только что попробовал в самой форме создать несколько полей ввода и сохранить в массив.
Все работает.
А если добавлять поля через javascript, то не хочет работать.
js-скрипт добавляет поле, но данные как-то не правильно сохраняются
0
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
23.01.2011, 01:09  [ТС] 15
Переделал уже.
Тут проблема в javascript
Только что попробовал в самой форме создать несколько полей ввода и сохранить в массив.
Все работает.
А если добавлять поля через javascript, то не хочет работать.
0
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
23.01.2011, 01:14 16
Я только что пробовал такой код:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form  method="post">  
 <div id="third">
      <center><font color=#9e9e9e><u><b>Phones<b></u></center><br>
 <div id="newDiv">
      <input type="text" name="phone[]" size="15">
</div>
     <a href="#"  onclick="Add();">add</a>
    </div>
    <input type="submit" name="asd" value="asd" />
    </form>
    <script language="javascript">
    function Add() {
var DIV = document.getElementById('newDiv'), X='<br><br><input type="text" name="phone[]" size="15">';
DIV.innerHTML += X;
        }
    
    </script>
PHP
1
2
3
4
foreach($_POST['phone'] as $key=>$value)
{
echo"<li>$key=>$value</li>";
}
Всё ОК.
1
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
23.01.2011, 01:35  [ТС] 17
Каким образом????
Я все скопировал, эффект тот же.
Если в поля формы записать то работает, если добавлять через js поля и в них записать то ошибка.
Вы добавляли поля и вписывали в них данные???
0
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
23.01.2011, 01:42 18
Именно. Кстати... Вы в каком браузере тестите?
1
71 / 71 / 5
Регистрация: 02.11.2009
Сообщений: 348
23.01.2011, 01:46 19
Сейчас попробовал в
хроме, лисе, опере и ишаке - всё ОК. Смотрите внимательно код. Вот файл для проверки
Вложения
Тип файла: rar index.rar (462 байт, 12 просмотров)
1
as
39 / 25 / 6
Регистрация: 14.02.2009
Сообщений: 355
23.01.2011, 01:55  [ТС] 20
Да все, уже понял.
Создал отдельно файлы для этого, скопировал все заработало.
А в том файле где я тестил так и не работает, значит ошибка где-то в нем.
Буду искать.
SorokinWS СПАСИБО БОЛЬШОЕ!!!! теперь знаю где искать ошибку
0
23.01.2011, 01:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2011, 01:55
Помогаю со студенческими работами здесь

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

Передача массива по ссылке
Здравствуйте. Помню где-то читал что можно передавать массивы по страницам т.е. , к примеру, есть...

Передача массива данных из JS в php
Доброго времени суток Проблема такая (уже нервы берут!): есть живой поиск. Который ищет в...

Передача элемента массива по ссылке
Была задача рандомно заменить каждый четный элемент массива. Как в данном случае в теле функции...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru