Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Передача данных из формы на сервер / 24 сообщений из 24, страница 1 из 1
09.09.2015, 19:39
    #39047421
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
Добрый вечер. Помогите пожалуйста разобраться с небольшой проблемкой.

У меня в форме стоит специальный скрипт, который добавляет\удаляет допллнительные инпуты для ввода, выглядит это так.

<div class="inputs3">
<input style="align:right; width:99.6%; margin-bottom:15px;" required type="text" class="hideplaceholder" name="Education[1]" placeholder="Наименование ВУЗа, Кафедра, Специальность, Годы обучения"/>
</div>
<a href="#" id="add3"><button style="width:48.4%; margin-right:20px" class="form" type="button">Добавить место учебы</button></a>
<a href="#" id="remove3"><button style="width:48.4%" class="form" type="button">Удалить</button></a>

При нажатии "добавить" в див добавляется инпут следующего вида:

<dk><input class="hideplaceholder" style="margin-bottom:15px; width: 99.6%; align: right;" type="text" name="Education[u]" placeholder="Наименование ВУЗа, Кафедра, Специальность, Годы обучения"/></dk>

где, u переменная с инкрементом начинающаяся с 2ух.

Вопрос: почему вот этот скрипт

foreach ($_POST['Education'] as $key=>$value)
$Education = implode("<br>",$_POST['Education']);

берет из формы значение только того инпута, который был и игнорирует все добавленные, и как это исправить?
...
Рейтинг: 0 / 0
09.09.2015, 20:03
    #39047440
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
вы implode в цикле делаете?
var_dump($_POST) что показывает?
...
Рейтинг: 0 / 0
09.09.2015, 20:45
    #39047475
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
SharuPoNemnogu,
Форма большая поэтому var_dump($_POST) показывает много всего. С передачей других массивов данных, в той же самой форме, проблем нет, только там эти массивы полностью представлены изначально, а не добавляются по средствам скрипта.

var_dump($Education) -> NULL

Еще выдается ошибка: Warning: Invalid argument supplied for foreach(), в этой строке foreach ($_POST['Education'] as $key=>$value)
...
Рейтинг: 0 / 0
09.09.2015, 20:52
    #39047484
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
SharuPoNemnogu,
цикл реализован только за счет foreach
...
Рейтинг: 0 / 0
09.09.2015, 21:45
    #39047505
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
justajoke,
Покажите js скрипт отправки
...
Рейтинг: 0 / 0
09.09.2015, 22:00
    #39047515
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
kunaksergey,

отправка на php
<?php
if (!empty($_POST["button_registration"])) {
$Name=htmlspecialchars($_POST["Name"]);
$Soname=htmlspecialchars($_POST["Soname"]);
$ParentName=htmlspecialchars($_POST["ParentName"]);
$Year=htmlspecialchars($_POST["Year"]);
$Password=htmlspecialchars($_POST["Password"]);
$Mail=htmlspecialchars($_POST["Mail"]);
$Number=htmlspecialchars($_POST["Number"]);
$Url=htmlspecialchars($_POST["Url"]);
foreach ($_POST['Category'] as $key=>$value)
$Category = implode("<br>",$_POST['Category']);
foreach ($_POST['Place'] as $key=>$value)
$Place = implode("<br>",$_POST['Place']);
foreach ($_POST['Home'] as $key=>$value)
$Home = implode("<br>",$_POST['Home']);
foreach ($_POST['Education'] as $key=>$value)
$Education = implode("<br>",$_POST['Education']);
echo $Education;
foreach ($_POST['Pupilhome'] as $key=>$value)
$Pupilhome = implode("<br>",$_POST['Pupilhome']);
$success=addRep($Name,$Soname,$ParentName,$Year,$Password,$Mail,$Number,$Url,$Category,$Place);
}?>

functions.php
function addRep($Name,$Soname,$ParentName,$Year,$Password,$Mail,$Number,$Url,$Category,$Place) {
global $mysqli;
connectDB();
$success=$mysqli->query("INSERT INTO `teachers` (`Name`,`Soname`,`ParentName`,`Year`,`Password`,`Mail`,`Number`,`Url`,`Category`,`Place`) VALUES ('$Name','$Soname','$ParentName','$Year','$Password','$Mail','$Number','$Url','$Category','$Place')");
closeDB();
return $success;
}
...
Рейтинг: 0 / 0
09.09.2015, 22:10
    #39047520
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
скрипта отправки я не вижу... это только обработка полученного результата.
...
Рейтинг: 0 / 0
09.09.2015, 22:15
    #39047523
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
Html с JS скидывай. Код только оформляй через кнопку SRC.
и я не пойму смысл строк
Код: php
1.
2.
foreach ($_POST['Education'] as $key=>$value) 
$Education = implode("<br>",$_POST['Education']);

бессмысленный цикл и перезапись переменной одним и тем же
...
Рейтинг: 0 / 0
10.09.2015, 10:38
    #39047767
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
kunaksergey,

то, что я отправил, заносит все данные введенные в форму в таблицу mysql, никакой другой отправки нет и не нужно, возможно ты не понимаешь сути функций показанных
...
Рейтинг: 0 / 0
10.09.2015, 10:40
    #39047769
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
justajoke,

я согласен с твоим замечанием, тем не менее эта "бессмысленность" работает в оставшихся 4 приведенных в форме примерах из 5, подскажи мне, как ее исправить и я попробую
...
Рейтинг: 0 / 0
10.09.2015, 10:46
    #39047779
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
justajoke,

Код: php
1.
2.
3.
4.
5.
foreach ($_POST['Education'] as $key=>$value)       // <--- выбросить. 
                                                                       // 1. у тебя только 1 ключ в $_POST с именем 'Education'
                                                                       // 2. ни $key ни $value нигде больше не используются

$Education = implode("<br>",$_POST['Education']);  // оставить
...
Рейтинг: 0 / 0
10.09.2015, 14:44
    #39048132
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
justajokeПри нажатии "добавить" в див добавляется инпут следующего вида:
...
берет из формы значение только того инпута, который был и игнорирует все добавленные, и как это исправить?Добавляется наверное неправильно? Про этот код спрашивали...
...
Рейтинг: 0 / 0
14.09.2015, 10:31
    #39050599
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
DarkMaster,
ключи я добавлю после, суть вопроса не в этом совершенно. Если я руками добавляю 3 инпута в код, нумерую их [1] [2] [3], то одного имплоуда достаточно, чтобы забрать данные из них и передать в другую функцию на обработку, и он это делает, но если инпуты (идентичные) добавляются через скрипт, то имплоуд берет данные введенные только в те импуты, которые изначально были, но не из добавленных
...
Рейтинг: 0 / 0
14.09.2015, 10:34
    #39050602
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
Barlone,
Код: html
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.
$(document).ready(function(){
		var k = $('input3').size() + 1;	
	$('#add3').click(function() {
		var u = 2;
		$('<dk><input class="hideplaceholder" style="margin-bottom:15px; width: 99.6%; align: right;" type="text" name="Eduсation[u]" placeholder="Наименование ВУЗа, Кафедра, Специальность, Годы обучения"/></dk>').fadeIn('slow').appendTo('.inputs3');
			k++;
			u++;
		return false;
	});
		$('#remove3').click(function() {
	if(k > 1) {
		$('dk:last').remove();
		k--;
return false;		
	}
	});
	
// here's our click function for when the forms submitted
	$('.submit').click(function(){
								
	
	var answers = [];
    $.each($('.field'), function() {
        answers.push($(this).val()); 
    });
	
    if(answers.length == 0) { 
        answers = "none"; 
    }   
	alert(answers);
	return false;							
	});
});
...
Рейтинг: 0 / 0
14.09.2015, 11:18
    #39050647
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
...
Рейтинг: 0 / 0
14.09.2015, 16:29
    #39051030
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
SharuPoNemnogu,

поменял код, не помогло, так же берет только тот импут, что был

при 4 импутах (3 добавлены, и введенных 9,8,7,6)

var_dump($Eduсation); --> string(1) "9"
var_dump($_POST['Eduсation']); --> array(1) { [1]=> string(1) "9" }
...
Рейтинг: 0 / 0
14.09.2015, 16:39
    #39051047
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
проверяй имена ключей(полей), в твоем варианте в скрипте они отличались. Скопировал код свой, вот вардамп
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
array(2) {
  ["Eduсation"]=>
  array(5) {
    [1]=>
    string(1) "1"
    [2]=>
    string(1) "2"
    [3]=>
    string(1) "3"
    [4]=>
    string(1) "4"
    [5]=>
    string(1) "5"
  }
  ["send"]=>
  string(7) "1111111"
}
...
Рейтинг: 0 / 0
14.09.2015, 17:19
    #39051095
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
SharuPoNemnogu,

Если я правильно понял, что ключ это допустим Education[1], то я просто скопировал слово и переподставил везде и в форме и в скрипте, так что не представляю, где я мог ошибиться.
До этого у меня какое-то время не выводилось значение даже того импута, который есть изначально (выдавало ошибку), пока я не проделал шаманский обряд с переподставлением слова Education всюду, причем опечаток не обнаружилось, но ошибка пропала. Может у меня проблема с кодировкой?
...
Рейтинг: 0 / 0
14.09.2015, 18:55
    #39051166
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
justajoke,
у тебя в html 18129977 и php 18130355
Код: php
1.
Education // латинница



в js 18145467
Код: php
1.
Eduсation // кириллица
...
Рейтинг: 0 / 0
24.09.2015, 23:37
    #39060767
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
SharuPoNemnogu,

Та проблема решилась, спасибо, но появилась новая сложность, которая ее снова создает, возможно вы мне поможете.

Конструкция формы выглядит так:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<form>
<div display block>
Первый этап заполнения формы
</div>
<div display none>
Второй этап заполнения формы (в данном диве находятся "Добавляемые" импуты, сложности с которыми описывались выше)
</div>
<div display none>
Третий этап заполнения формы
</div>
....
</form>



Сложность в том, что в первом этапе заполнения, для того чтобы организовать асинхронную загрузку аватарки на сервер с отображением без перезагрузки, приходится вводить дополнительную форму, а поскольку вложенные формы не работают нужно переносить границу "большой" формы. Я попробовал поставить начальный тег большой формы сразу после конца дополнительной, и все собственно заработало, но вот только этот перенос места начала формы почему-то приводит к тому, что данные из созданных (только созданных, а не изначальных) во втором диве инпутов, снова перестают передаваться.
...
Рейтинг: 0 / 0
25.09.2015, 10:25
    #39060952
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
justajoke,

А создаются они внутри формы? может после переноса они вне формы клепаются
...
Рейтинг: 0 / 0
25.09.2015, 20:42
    #39061652
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
SharuPoNemnogu, создаются в таком диве,

Код: html
1.
2.
3.
<div class="inputs3">

</div>



который в свою очередь находится во втором этапе заполнения формы.

Там суть в том, что если я поставлю <form>, не внутри первого этапа заполнения (первого дива), а после него, но до второго, то все работает хорошо, тоесть работать перестает если тег <form> оказывается внутри <div content>этап заполнения формы</div>
...
Рейтинг: 0 / 0
25.09.2015, 21:00
    #39061675
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
justajoke,

показывайте весь код html и js
...
Рейтинг: 0 / 0
25.09.2015, 21:31
    #39061697
justajoke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача данных из формы на сервер
SharuPoNemnogu,
Код: html
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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
<div id="content1" style="margin-top:10px; display: block;">
	
		<table border="0px" style="border-spacing: 72px 50px; margin:0 auto;">
			<tr>
				<td class="rega">
					<iframe style="display: none;" name="h_iframe" width="1" height="1"></iframe>
					<form action="http://hermesstudy.ru/lib/upload_images.php" method="post" name="img_upload" enctype="multipart/form-data" target="h_iframe">
						<div id="imageId">
							<img src="http://hermesstudy.ru/img/avatar/noavatar.png" />
						</div>
						<p>
							<label style="margin-top:22px" class="file_upload">
								<span class="button">
									Выбрать
								</span>
								<input type="file" name="upload_photo" onchange="img_upload.submit();" />
							</label>
						</p>
					</form>
					<div id="image_upload_status"></div>
				</td>
				<td class="rega">
					<table width="200px"  border="0">
					<tr style="height:45px"><td>Фамилия</td></tr>
					<tr><td><input style="width:100%;" required type="text" name="Soname" /></td></tr>
					<tr style="height:45px"><td>Имя</td></tr>
					<tr><td><input style="width:100%;" required type="text" name="Name" /></td></tr>
					<tr style="height:45px"><td>Отчество</td></tr>
					<tr><td><input style="width:100%;" required type="text" name="ParentName" /></td></tr>
					<tr style="height:45px"><td>Год рождения</td></tr>
					<tr><td><input style="width:100%;" required type="text" name="Year" /></td></tr>					
					</table>
					</td>
					<td class="rega">
					<table width="200px" border="0">
					<tr style="height:45px"><td>Телефон</td></tr>
					<tr><td><input style="width:100%;" required id="user_phone" type="text"  pattern="+7([0-9]{3})-([0-9]{3})-([0-9]{2})-([0-9]{2})" name="Number"/></td></tr>
					<tr style="height:45px"><td>Почта</td></tr>
					<tr><td><input style="width:100%;" required type="email" name="Mail" /></td></tr>
					<tr style="height:45px"><td>Соц. сети</td></tr>
					<tr><td><input style="width:100%;" required type="text" name="Url" class="hideplaceholder" placeholder="Ссылка на профиль"/></td></tr>
					<tr style="height:45px"><td>Пароль</td></tr>
					<tr><td><input style="width:100%;" required type="password" name="Password" /></td></tr>					
					</table>
				</td>
			</tr>
		</table>	
		<button class="bottom" href="#" style="margin-top:25px; margin-bottom:5px;" onclick="openbox('content2'),openbox('content1'); return false">
			Следующий шаг
		</button>
	</div>
	
	<div id="content2" style="margin-top:10px; display: none;">
		<table border="0" width="100%" style="border-spacing: 72px 50px; margin:0 auto">
			<tr>
				<td class="rega">
					<div style="margin-bottom:15px;">
						<h3>
							Ваше образование
						</h3>
					</div>
					<div class="inputs3">
						<input style="align:right; width:99.6%; margin-bottom:15px;" required type="text" class="hideplaceholder" name="Eduсation[1]" placeholder="Наименование ВУЗа, Кафедра, Специальность, Годы обучения"/>
					</div>
					<a href="#" id="add3">
						<button style="width:48.4%; margin-right:20px" class="form"  type="button">
							Добавить место учебы
						</button>
					</a>
					<a href="#" id="remove3">
						<button style="width:48.4%" class="form" type="button">
							Удалить
						</button>
					</a>
				</td>
			</tr>
			<tr>
				<td class="rega">
					<div style="margin-bottom:15px;">
						<h3>
							Есть ли у вас репетиторский опыт
						</h3>
					</div>
					<div align="right">
						<input id="norep" type="radio" class="experience" name="RepExp" value="None" aria-required="true" onclick="Selected(this)">
						<label for="norep" style="width:48.15%; display:inline-block; margin-right:20px" class="form">
							Нет
						</label>
						<input type="radio" class="experience" name="RepExp" id="clickrep" value="Open" aria-required="true" onclick="Selected(this)"/>
						<label for="clickrep" style="width:48.15%;" class="form">
							Да
						</label>
					</div>
					<div id='Block1' style='display: none;'>
						<div align="right" style="margin-top:15px;" id="container">
							<div class="dynamic-form">
								<a href="#" id="add">
									<button class="form" style="width:48.4%; margin-right:20px" type="button">
										Добавить предмет
									</button>
								</a>
								<a href="#" id="remove">
									<button style="width:48.4%" class="form" type="button">
										Удалить
									</button>
								</a>
							</div>
						</div>
						<div class="inputs">
							<input style="margin-top:15px; width: 99.6%; float:right;" class="hideplaceholder" type="text" name="repexp[1]" placeholder="Преподаваемый предмет, Категории учеников, К каким экзаменам, Сколько лет"/>
						</div>
					</div>
				</td>
			</tr>
			<tr>
				<td class="rega">
					<div style="margin-bottom:15px;">
						<h3>
							Есть ли у вас педагогический опыт
						</h3>
					</div>
					<div align="right">
						<input id="noped" type="radio" class="experience" name="PedExp" value="None" aria-required="true" onclick="Selected2(this)">
						<label for="noped" style="width:48.15%; display:inline-block; margin-right:20px" class="form">
							Нет
						</label>
						<input type="radio"  class="experience" name="PedExp" id="clickped" value="Open2" aria-required="true" onclick="Selected2(this)"/>
						<label for="clickped" style="width:48.15%;" class="form">
							Да
						</label>
						
					</div>
					<div id='Block2' style='display: none;'>
						<div style="padding-top:15px;" align="right" id="container">
							<div class="dynamic-form">
								<a href="#" id="add2">
									<button class="form" style="width:48.4%; margin-right:20px" type="button">
										Добавить место работы
									</button>
								</a>
								<a href="#" id="remove2">
									<button style="width:48.4%" class="form" type="button">
										Удалить
									</button>
								</a>
							</div>
						</div>
						<div class="inputs2">
							<input style="margin-top:15px; width: 99.6%;" class="hideplaceholder" type="text" name="teachexp[1]" placeholder="Учебное заведение, Преподаваемые предметы, Категории учеников, Годы работы"/>
						</div>
					</div>

				</td>
			</tr>
		</table>
		<button class="bottom" style="width:49.5%;margin-top:25px; margin-bottom:5px;" href="#" onclick="openbox('content1'),openbox('content2'); return false"> 
			Предыдущий шаг 
		</button>
		<button class="bottom" style="width:49.5%;margin-top:25px; margin-bottom:5px;" href="#" onclick="openbox('content3'),openbox('content2'); return false"> 
			Следующий шаг 
		</button>
	</div>



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
function openbox(id){
	    display = document.getElementById(id).style.display;
	    if(display=='none'){
	       document.getElementById(id).style.display='block';
	    }else{
	       document.getElementById(id).style.display='none';
	    }
	};



код добавления импутов есть выше, чтобы не захламлять не добавляю
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Передача данных из формы на сервер / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]