Подскажите, пожалуйста. Мне нужно сделать некую страничку, которая выполняла бы следующий функционал.
Страница выполнена в форме таблицы, в первый столбец которой загоняются номера накладных.
По нажатию на определенную кнопку, в остальные столбцы (например "Получатель" и "Улица"), посредство некого запроса, подтягивались данные из БД. Если данных нет - оставить их пустыми.
Также на странице есть 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
Советую использовать массивы.
№ п/п | № Нак | Получатель | Улица
nom_pp_1 | nom_nak_1 | poluchatel_1 | address_1
Советую использовать массивы.
Спустя 9 минут, 41 секунда (14.05.2012 - 17:13) WisesT написал(а):
Если можно, набросай пример кода. Буду разбираться.
Спасибо, что уделил внимание;) Весь день жду идей.
Если через скрипт делать имя_поля_n+1 то в дальнейшем каким-то скриптом (опять-таки явовским) нужно будет это обрабатывать. Опять будет нужна помощь знатоков скриптов.
А с массивами как?
АПД. О! inpost подтянулся. Щас, наверное, что-то будет;)
Спасибо, что уделил внимание;) Весь день жду идей.
Если через скрипт делать имя_поля_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.
Я сейчас усердно читаю javascript.ru , пытаюсь некоторые вещи новые запомнить. Собственно и тебе советую почитать и поучить JS.
Спустя 16 часов, 51 минута, 11 секунд (15.05.2012 - 11:52) WisesT написал(а):
Цитата (inpost @ 14.05.2012 - 15:01) |
WisesT Я сейчас усердно читаю javascript.ru , пытаюсь некоторые вещи новые запомнить. Собственно и тебе советую почитать и поучить JS. |
Спасибо! Тоже начал читать
Но, мне сейчас нужно разобряться, как правильно назначить курьера в записях, где номера накладных равны номерам накладных из массива. А потом это все уже запихнуть в 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".
Сделать это, желательно, без перезагрузки страницы, поскольку дальше нужно будет эту страничку распечатать (сделать доставочный лист), а если это сделается с перезагрузкой, то все обнулится.
Как-то так.
П.С. Удивлен твоей готовностью помогать. Спасибо тебе.
Вообще я пытаюсь добиться следующего функционала.
Есть таблица в бд с полями
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 написал(а):
Пробую делать как-то так
Пока не получается.
В таблице есть 4 записи, где все пусто, кроме счетчика и nom_nak (1, 2, 3, 4)
<?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 написал(а):
Короче пиши в личку)