powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Передача данных из формы на сервер
24 сообщений из 24, страница 1 из 1
Передача данных из формы на сервер
    #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
Передача данных из формы на сервер
    #39047440
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы implode в цикле делаете?
var_dump($_POST) что показывает?
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #39047475
justajoke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,
Форма большая поэтому var_dump($_POST) показывает много всего. С передачей других массивов данных, в той же самой форме, проблем нет, только там эти массивы полностью представлены изначально, а не добавляются по средствам скрипта.

var_dump($Education) -> NULL

Еще выдается ошибка: Warning: Invalid argument supplied for foreach(), в этой строке foreach ($_POST['Education'] as $key=>$value)
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #39047484
justajoke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,
цикл реализован только за счет foreach
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #39047505
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
justajoke,
Покажите js скрипт отправки
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #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
Передача данных из формы на сервер
    #39047520
kunaksergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скрипта отправки я не вижу... это только обработка полученного результата.
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #39047523
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Html с JS скидывай. Код только оформляй через кнопку SRC.
и я не пойму смысл строк
Код: php
1.
2.
foreach ($_POST['Education'] as $key=>$value) 
$Education = implode("<br>",$_POST['Education']);

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

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

я согласен с твоим замечанием, тем не менее эта "бессмысленность" работает в оставшихся 4 приведенных в форме примерах из 5, подскажи мне, как ее исправить и я попробую
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #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
Передача данных из формы на сервер
    #39048132
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justajokeПри нажатии "добавить" в див добавляется инпут следующего вида:
...
берет из формы значение только того инпута, который был и игнорирует все добавленные, и как это исправить?Добавляется наверное неправильно? Про этот код спрашивали...
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #39050599
justajoke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,
ключи я добавлю после, суть вопроса не в этом совершенно. Если я руками добавляю 3 инпута в код, нумерую их [1] [2] [3], то одного имплоуда достаточно, чтобы забрать данные из них и передать в другую функцию на обработку, и он это делает, но если инпуты (идентичные) добавляются через скрипт, то имплоуд берет данные введенные только в те импуты, которые изначально были, но не из добавленных
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #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
Передача данных из формы на сервер
    #39050647
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #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
Передача данных из формы на сервер
    #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
Передача данных из формы на сервер
    #39051095
justajoke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu,

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



в js 18145467
Код: php
1.
Eduсation // кириллица
...
Рейтинг: 0 / 0
Передача данных из формы на сервер
    #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
Передача данных из формы на сервер
    #39060952
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
justajoke,

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

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

</div>



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

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

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


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