[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как правильно оформить добавляемую строчку
WisesT
Доброго дня, знатоки!

Подскажите, пожалуйста. Мне нужно сделать некую страничку, которая выполняла бы следующий функционал.
Страница выполнена в форме таблицы, в первый столбец которой загоняются номера накладных.
По нажатию на определенную кнопку, в остальные столбцы (например "Получатель" и "Улица"), посредство некого запроса, подтягивались данные из БД. Если данных нет - оставить их пустыми.
Также на странице есть SELECT со списком курьерав. Нужно, что бы при нажатии на кнопку, в базе данных к записям, где номер накладной равен внесенным номерам - присвоился курьер из SELECT'a.
Вот такой вот длинный алгоритм. Понятно, что делать нужно по-порядку.

Набросал вот такую страницу:
<form name="dostav" method="post" action="?">
<
tr>
<
td>Курьер</td>
<
td>
<
SELECT NAME="kurier" id="kurier">
<?php
require("../include/kuriers.txt");
?>
<OPTION value="Не указан" SELECTED>Не указан
</SELECT>
</
td>
</
tr>

<
table width="100%" border="1" id="_new_table" cellspacing="0">
<
tr align="center">
<
td>№ п/п</td>
<
td>№ Нак</td>
<
td>Получатель</td>
<
td>Улица</td>
</
tr>

</
table>

<
input type="button" value="+" onclick="new_line();">
</
form>

<
script>
var count=0;
var table=document.getElementById('_new_table');
function new_line() {
count++;
var tbody = document.createElement('tbody');
table.appendChild(tbody);
tbody.innerHTML="<tr><td><input type='text' size='50%' maxlength='50' name='nom' id='adress'/></td>
<td><input type='text' size='50%' maxlength='50' name='adress' id='adress'/></td>
<td><input type='text' size='50%' maxlength='50' name='adress' id='adress'/></td>
<td><input type='text' size='50%' maxlength='50' name='adress' id='adress'/></td></tr>"
;
}
</script>
<
tr>
<
td>
<
input type="button" value="Запросить данные">
</
td>
<
td>
<
input type="submit" value="Назначить курьера">
</
td>
<
td>
<
INPUT TYPE="button" VALUE="Распечатать лист" onClick=location.href="javaScript:window.print();">
</
td>
</
tr>

Очередная строчка в таблице, добавляется следующим скриптом (это его исходник):

<table border='1' id="_new_table"></table>
<
input type="button" value="+" onclick="new_line();">
<
script>
var count=0;
var table=document.getElementById('_new_table');
function new_line() {
count++;
var tbody = document.createElement('tbody');
table.appendChild(tbody);
tbody.innerHTML="<tr><td><input type='text' value='"+count+"'></td><td>2</td></tr>";
}
</script>

Вот в чем (первый) вопрос:
Какого вида должна быть добавляемая строка и как это сделать, что бы потом можно было с этой строчкой (и инпутами в ней) работать. Писать обработчик на остальные задачи.
Сайт локальный, но пример страницы выложу в инет для примера. СЦЫЛКО
Очень прошу вашей помощи ибо знаний JS у меня вовсе нет. Скрипт нагуглил.

П.С. Для начала хочу определиться с правильным оформлением инпутов для дальнейшей работы. Дальше будет видно.

Зарание спасибо.

ППС. Если не тот раздел - прошу перенести.



Спустя 5 часов, 39 минут, 22 секунды (14.05.2012 - 17:03) HErATuB написал(а):
С импутами тут 2 варианта работы: Загонять их в единый массив или по средствам JavaScrip-a менять name к примеру:
№ п/п | № Нак | Получатель | Улица
nom_pp_1 | nom_nak_1 | poluchatel_1 | address_1
Советую использовать массивы.

Спустя 9 минут, 41 секунда (14.05.2012 - 17:13) WisesT написал(а):
Если можно, набросай пример кода. Буду разбираться.
Спасибо, что уделил внимание;) Весь день жду идей.

Если через скрипт делать имя_поля_n+1 то в дальнейшем каким-то скриптом (опять-таки явовским) нужно будет это обрабатывать. Опять будет нужна помощь знатоков скриптов.

А с массивами как?

АПД. О! inpost подтянулся. Щас, наверное, что-то будет;)

Спустя 19 минут, 25 секунд (14.05.2012 - 17:32) HErATuB написал(а):

.....
<form name="dostav" method="post" action="?">

<table
width="100%" border="1" id="_new_table" cellspacing="0">
<thead>
<tr
align="center">
<td>
№ п/п</td>
<td>
№ Нак</td>
<td>
Получатель</td>
<td>
Улица</td>
</tr>
</thead>
<tbody>

<tr
align="center">
<td><input
id="nom_pp" type="text" value="1" name="nom_pp[]" maxlength="50" size="10%"/></td>
<td><input
id="nom_nak" type="text" name="nom_nak[]" maxlength="50" size="50%"/></td>
<td><input
id="poluchatel" type="text" name="poluchatel[]" maxlength="50" size="50%"/></td>
<td><input
id="adress" type="text" name="adress[]" maxlength="50" size="50%"/></td>
</tr>


.....

<tr align="center">
<td><input
id="nom_pp" type="text" value="1" name="nom_pp[]" maxlength="50" size="10%"/></td>
<td><input
id="nom_nak" type="text" name="nom_nak[]" maxlength="50" size="50%"/></td>
<td><input
id="poluchatel" type="text" name="poluchatel[]" maxlength="50" size="50%"/></td>
<td><input
id="adress" type="text" name="adress[]" maxlength="50" size="50%"/></td>
</tr>
</tbody>
</table>

</form>

.....

Когда будешь обрабатывать запрос эти переменные будут массивам: nom_pp | nom_nak | poluchatel | address

Спустя 9 минут, 20 секунд (14.05.2012 - 17:42) WisesT написал(а):
Погоди. Ты предлагаешь полностью отказаться от скрипта добавления новой строчки в таблицу, или можно оставить скприт добавления, но в таком виде:
<script>
var count=0;
var table=document.getElementById('_new_table');
function new_line() {
count++;
var tbody = document.createElement('tbody');
table.appendChild(tbody);
tbody.innerHTML="<tr align="center">
<td><input id="nom_pp" type="text" value="1" name="nom_pp[]" maxlength="50" size="10%"/></td>
<
td><input id="nom_nak" type="text" name="nom_nak[]" maxlength="50" size="50%"/></td>
<
td><input id="poluchatel" type="text" name="poluchatel[]" maxlength="50" size="50%"/></td>
<
td><input id="adress" type="text" name="adress[]" maxlength="50" size="50%"/></td>
</
tr>";
}
</script>

Спустя 2 минуты, 43 секунды (14.05.2012 - 17:44) HErATuB написал(а):
да именно так как у тебя в коде, я описывал лишь пример

Спустя 5 минут, 2 секунды (14.05.2012 - 17:49) WisesT написал(а):
Получается вот ТАК (можно просмтреть через ПКМ "исходный код").

Таксь, теперь почитаю, как с массивами инпутов работать;)

Спасибо!

Спустя 11 минут, 9 секунд (14.05.2012 - 18:01) HErATuB написал(а):
да все просто заполни пару строчек, и отправь на какой ни будь скрипит, а там выведи через:

echo("<pre>");
print_r($_POST["nom_pp"]);
print_r($_POST["nom_nak"]);
print_r($_POST["poluchatel"]);
echo("</pre>");

Спустя 4 минуты, 54 секунды (14.05.2012 - 18:05) WisesT написал(а):
АПД. Стоп! Бред пишу:) Совсем уже запорочился.

Спустя 39 минут, 43 секунды (14.05.2012 - 18:45) WisesT написал(а):
В страничке еще есть SELECT со списком курьеров.
Вот когда таблица будет заполнена записями (номер накладной будет обязательным).
Нужно что бы по нажатию определенной кнопки "Назначить" в базе данных, в записях где номер накладно соответствует тем, которые внесены в таблице - выставился курьер из селекта. Во!

Тоесть что-то вроде

set 'kurier'='kurier' where 'nom_nak'='nom_nak'
но только для нескольких записей сразу (в массиве же их несколько)

Текущий код - вот такой:
<form name="dostav" method="post" action="?">
<
tr>
<
td>Курьер</td>
<
td>
<
SELECT NAME="kurier" id="kurier">
<?php
require("../include/kuriers.txt");
?>
<OPTION value="Не указан" SELECTED>Не указан
</SELECT>
</
td>
</
tr>

<
table width="100%" border="1" id="_new_table" cellspacing="0">
<
tr align="center">
<
td>№ п/п</td>
<
td>№ Нак</td>
<
td>Получатель</td>
<
td>Улица</td>
</
tr>
</
table>

<
input type="button" value="+" onclick="new_line();">
<
input type='submit' value='отправить'>
</
form>

<
script>
var count=0;
var table=document.getElementById('_new_table');
function new_line() {
count++;
var tbody = document.createElement('tbody');
table.appendChild(tbody);
tbody.innerHTML="<tr align='center'><td><input id='nom_pp' type='text' value='"+count+"' name='nom_pp[]' maxlength='50' size='10%'/></td><td><input id='nom_nak' type='text' name='nom_nak[]' maxlength='50' size='50%'/></td><td><input id='poluchatel' type='text' name='poluchatel[]' maxlength='50' size='50%'/></td><td><input id='adress' type='text' name='adress[]' maxlength='50' size='50%'/></td></tr>";
}
</script>
<
tr>
<
td>
</
td>
<
td>
</
td>
<
td>
</
td>
</
tr>

Спустя 15 минут, 48 секунд (14.05.2012 - 19:01) inpost написал(а):
WisesT
Я сейчас усердно читаю javascript.ru , пытаюсь некоторые вещи новые запомнить. Собственно и тебе советую почитать и поучить JS.

Спустя 16 часов, 51 минута, 11 секунд (15.05.2012 - 11:52) WisesT написал(а):
Цитата (inpost @ 14.05.2012 - 15:01)
WisesT
Я сейчас усердно читаю javascript.ru , пытаюсь некоторые вещи новые запомнить. Собственно и тебе советую почитать и поучить JS.

Спасибо! Тоже начал читать user posted image
Но, мне сейчас нужно разобряться, как правильно назначить курьера в записях, где номера накладных равны номерам накладных из массива. А потом это все уже запихнуть в JS:)

Спустя 1 час, 21 минута, 24 секунды (15.05.2012 - 13:14) HErATuB написал(а):
Цитата (WisesT @ 15.05.2012 - 07:52)
Но, мне сейчас нужно разобряться, как правильно назначить курьера в записях, где номера накладных равны номерам накладных из массива. А потом это все уже запихнуть в JS:)

Разобрался?

Спустя 1 минута, 52 секунды (15.05.2012 - 13:15) WisesT написал(а):
неа. Гуглю чуток.

Спустя 3 минуты, 10 секунд (15.05.2012 - 13:19) HErATuB написал(а):
Смотри тебе приходит массив + номер курьера осталось это завернуть и положить базу или я о5 не правильно понял)

Спустя 7 минут, 56 секунд (15.05.2012 - 13:26) WisesT написал(а):
ну смотри.

Вообще я пытаюсь добиться следующего функционала.

Есть таблица в бд с полями
id
nom_nak
poluchatel
ulitsa
...
...
kurier(изначально оно пустое)

В ней есть некоторые данные.
Сотрудник вносит в мою форму некоторое колличество номеров накладных. Выбирает курьера в SELECT'e.
Нажимает кнопку "назначить" и в БД к записям с номерами накладных, которые внесены в нашу форму (и соответственно в массив) - заполняется поле "kurier".
Сделать это, желательно, без перезагрузки страницы, поскольку дальше нужно будет эту страничку распечатать (сделать доставочный лист), а если это сделается с перезагрузкой, то все обнулится.
Как-то так.

П.С. Удивлен твоей готовностью помогать. Спасибо тебе.

Спустя 29 минут, 25 секунд (15.05.2012 - 13:56) HErATuB написал(а):
так отправка без перезгрузки воспользуйся jQuery а точнее jQueryForm С помощью нее отправишь форму.

Спустя 10 минут, 38 секунд (15.05.2012 - 14:07) WisesT написал(а):
я так и думал. Но сначала нужно как-то организовать данные для отправки. Я пока так и не понял, как назначить курьера по записям. На 1 запись - пожалуйста

INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...) where nom_nak='nom_nak'

Но вот как перебрать массив. Не разобрался.

Спустя 2 часа, 25 минут, 4 секунды (15.05.2012 - 16:32) WisesT написал(а):
Пробую делать как-то так
<?php
include("../config.php");
if (isset($_POST['vvod'])) {
$nom_pp = $_POST['nom_pp'];
$poluchatel = $_POST['poluchatel'];
$adress = $_POST['adress'];
$kurier = $_POST['kurier'];
$nom_nak = $_POST['nom_nak'];
$nom_nak = array_map('intval',$nom_nak);
if(!empty($nom_nak) && is_array($nom_nak)) {
foreach($nom_nak as $key=>$value) {
$query = "UPDATE 'dostavki' SET 'kurier'='".$kurier."' WHERE 'nom_nak'='$value'";
//Производиться запись в базу данных
}
}
}

?>

Пока не получается.
В таблице есть 4 записи, где все пусто, кроме счетчика и nom_nak (1, 2, 3, 4)

Спустя 1 час, 49 минут, 44 секунды (15.05.2012 - 18:21) HErATuB написал(а):
Короче пиши в личку)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.