Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   передача большого количества переменных из PHP в JS (https://javascript.ru/forum/dom-window/68146-peredacha-bolshogo-kolichestva-peremennykh-iz-php-v-js.html)

dasser 28.03.2017 18:01

передача большого количества переменных из PHP в JS
 
уважаемые комрады, помогите новичку (с JS у меня слабо).
При изминении в форме поля "num_contr" обновляет зависимое поле.
рабочий кусок кода в JS:
$(document).ready(function() 
{ 
 $('input[type=text]:text').change(function (){
 $.post("ajax_all.php", { "num_contr" : $('input[type=text]').val()},

 function(data){
var	details = $("#pr1").val(data);
 });
});
   });

в ajax_all.php
.... echo $row['pr1p'];
выводит результат одного запроса из мускула и бросает его в поле с id pr1.

Ну;но, так же при изминении поля "num_contr", выводить результат php-запроса в мускул только на более 200 переменных и подставлять их в соответствующие id форми.
для наглядности id соостветствуют переменным, следующим образом (id - переменная): pr1 - pr1p, pr2 - pr2p, pr3- pr3p, ...
ps: не пойму как вывести значения множества переменных из отдельного php-обработчика в функцию для подстановки значений по id поля формы, при изменении одного поля, не утяжеляя"велосипедами" код.

laimas 28.03.2017 18:56

Ничего не понятно, единственное, что можно сказать, это следующим образом (id - переменная): pr1 - pr1p, pr2 - pr2p, pr3- pr3p - для того чтобы связать поля формы с идентификаторами записей в базе, не требуется pr1 - pr1p, pr2 - pr2p, pr3- pr3p и прочего подобного, вообще никаких ID полям формы задавать не надо.

dasser 28.03.2017 19:00

Цитата:

Сообщение от laimas (Сообщение 448730)
Ничего не понятно, единственное, что можно сказать, это следующим образом (id - переменная): pr1 - pr1p, pr2 - pr2p, pr3- pr3p - для того чтобы связать поля формы с идентификаторами записей в базе, не требуется pr1 - pr1p, pr2 - pr2p, pr3- pr3p и прочего подобного, вообще никаких ID полям формы задавать не надо.

мне их нужно привязывать так как форма со временем будет изменять, так проще редактировать, но если даже и привязывать по IS нет смысла, то как ??

laimas 28.03.2017 19:02

Цитата:

Сообщение от dasser
мне их нужно привязывать так как форма со временем будет изменять, так проще редактировать

К чему привязать? Причем туи изменения формы и привязка с СУБД? То есть по вашему геморрой именований pr1 - pr1p, pr2 - pr2p, pr3- pr3p да еще в свете "изменяться", это удобно?

dasser 28.03.2017 19:08

Цитата:

Сообщение от laimas (Сообщение 448732)
К чему привязать? Причем туи изменения формы и привязка с СУБД? То есть по вашему геморрой именований pr1 - pr1p, pr2 - pr2p, pr3- pr3p да еще в свете "изменяться", это удобно?

хорошо, а как без привязки? если полей, в которые предпологаеться вставка данных мускульного запроса больше 200?
Может я и придумываю велосипед, из того что умею, по-этому у вас тут и прошу помощи

laimas 28.03.2017 19:18

Цитата:

Сообщение от dasser
хорошо, а как без привязки?

А почему "привязать", это обязательно задать ID полю, причем какое-то дикое, типа pr1p? Вы думаете о том как серверу потом разбираться с этой требухой?

Поля формы есть коллекция элементов и JS вполне может получить эту коллекцию для работы с ней и ID для этого совсем не нужны. А вот если среди коллекции нужно индивидуально обратиться к одному элементу, тогда и полезен будет ID у такого поля.

Форма отправляется как имя поля (ключ) = значение. Что вам мешает связать имена полей с идентификаторами из базы?

name="record[234]"
name="record[1203]"

где цифры, это ключи записей в СУБД. В зависимости от метода передачи формы сервер получит GET/POST массив record, в котором ключи, это идентификаторы записей в базе, а значения, значения полей ее, которые редактировались.

dasser 28.03.2017 19:32

Цитата:

Сообщение от laimas (Сообщение 448737)
Что вам мешает связать имена полей с идентификаторами из базы?

собственно у меня так и есть.
Цитата:

Сообщение от laimas (Сообщение 448737)
Вы думаете о том как серверу потом разбираться с этой требухой?

пользоваться этим буду только я, и никакой другой пользователь, чем особо нагрузка не будет заметна в общем потоке.
разницы в имени поля и ID (который нужен для вставки (как я понимаю) путем выполнения JS) тоже нет ?
ну а по сути, каким образом можно решить эту сложную задачу в виде примера?

laimas 28.03.2017 19:41

Цитата:

Сообщение от dasser
разницы в имени поля и ID (который нужен для вставки (как я понимаю) путем выполнения JS) тоже нет ?

Зачем вам id у полей формы?

Чтобы понять о какой задаче речь, нужно видеть форму (часть ее) с пояснением задачи.

dasser 28.03.2017 19:50

вот кусок
<form action="#"  method="POST" enctype="multipart/form-data" name="addcom" id="addcom" onSubmit="return false">
<input name="num_contr" type="text" size="150" id="num_contr" required>
<!-- ... -->
<table class="research">
                <tbody>
                    <tr class="accordion">
                        <td colspan="3" class="vt">ВТ</td>
                    </tr>
                    <tr><td class="corr">....</td><td><input / type="Text" name= "prpvt" id="prpvt"></td></tr>
                    <tr><td>....</td><td><input / type="Text" name= "pdrpvt" id="pdrpvt"></td></tr>
                    <tr><td class="corr">....</td><td><input / type="Text" name= "rzrpvt" id="rzrpvt"></td></tr>
                    <tr><td>....</td><td><input / type="Text" name= "drpvt" id="drpvt"></td></tr>
                    <tr><td class="corr">....</td><td><input / type="Text" name= "ppvt" id="ppvt"></td></tr>
                    <tr><td class="corr">....</td><td><input / type="Text" name= "dkt" id="dkt"></td></tr>
					<!-- ... -->
				</tbody>
</table>
<input class="adscom" name="button" id="start" type="button" value='генерить' onclick="doLoad(document.getElementById('addcom'))">
</form>

и кусок
$(document).ready(function() 
{ 
 $('input[type=text]:text').change(function (){
 $.post("ajax_all.php", { "num_contr" : $('input[type=text]').val()},

 function(data){
var	details = $("#prpvt").val(data);
 });
});
   });

и массив из обработчика (ajax_all.php):
$data = array(
    'pdrpvt' => $row['pdrpvt'],
    'rzrpvt' => $row['rzrpvt'],
    'drpvt' => $row['drpvt'],
    'ppvt' => $row['ppvt'],
    'dkt' => $row['dkt']
);
echo json_encode($data);

laimas 28.03.2017 20:04

И что за задача?


Часовой пояс GMT +3, время: 00:40.