Перейти к содержимому


Вопросы по работе с дополнительными действиями


Сообщений в теме: 34

#21 Гость_Roman_*

  • Гости

Отправлено 13 Февраль 2013 - 16:21

Ну если используется вышеописанная форма самого представления, то не нужно. Однако, в Вашем случае это поле надо добавить, поскольку создаётся ещё одна форма.

#22 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 13 Февраль 2013 - 16:28

Спасибо за консультацию и помощь!

#23 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 14 Февраль 2013 - 00:03

Проясните ситуацию с подключением яваскрипт. Не могу въехать, что делаю не так:

http://jsfiddle.net/...rtalik/pFHfc/4/

Все работает. Только его пытаюсь загнать в дополнительные действия, не работает. Копировал яваскрипт в поле вычислений яваскрипт, однако просмотр исходного кода дополнительного вычисления не показал его наличие. Далее попробовал засунуть все в вычисления пхп, однако тоже нет:

$sqlQuery = "SELECT `fio` FROM " . USERS_TABLE . " WHERE id = '" . addslashes($line['userID']) . "' LIMIT 1";
$result = mysql_query($sqlQuery) or die(mysql_error() . "
<br />
" . $sqlQuery);
$row2 = mysql_fetch_assoc($result);
$sqlQuery = "SELECT `t1`.`id`, `t2`.`f561` as data FROM " . DATA_TABLE . "81 t2, (
SELECT `id`, `f621` as num FROM " . DATA_TABLE . "91 WHERE `f631` = 'Ожидание оплаты' AND `status` = 0 AND`f1101` = " . intval($line['userID']) . ") t1 WHERE `t2`.`id` = `t1`.num AND `t2`.`status` = 0";
$result = mysql_query($sqlQuery) or die(mysql_error() . "
<br />
" . $sqlQuery);
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
  $option .= "<option value='" . $row['id'] . "'>" . form_local_time($row['data']) . "</option>";
  $ar[$row['id']] = $row['data'];
}
} else {
$option = "<option value='0'>Нет заказов</option>";
}
$form = "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
<html>
<head>
  <script type='text/javascript' src='include/jquery/jquery.min.js'></script>

  <script type='text/javascript'>

  $('#line_sum').hide();
$('input[name=type_v]').bind('change', function(event) {
	var el = $('input[name=type_v]:checked').val();
  
	switch(+el) {
		case 1:
		$('#line_sum').hide();
		break;
		default:
		$('#line_sum').show();
		break;
		}
});

  </script>

  <style type='text/css'>

  .td_1 {
   width: 180px;
  }

  .td_2 {
	width: 320px;
  }
  

  </style>
</head>
<body>
		  <div id='w_head' style='background-color: #0075CE; width: 450px; height: 40px; padding: 20px;'> <span id='w_head_name' style='color: white; font-size: 30px; padding: 100px;'>NIK</span>
		</div>
		<form method='post'>
			<fieldset style='width: 480px; border-left: none; border-right: none; border-bottom: none; padding: 0px; padding-left: 10px; margin-top:20px;'>
				<legend>{$row2['fio']}</legend>
			</fieldset>
			<table style='margin-top: 20px;'>
				<tbody>
					<tr id='line_sum'>
						<td class='td_1'>Введите сумму, грн <span style='color: red;'>*</span>:</td>
						<td class='td_2'>
							<input id='sum' name='sum' style='width: 320px;' type='text' />
						</td>
					</tr>
					<tr>
						<td class='td_1'>Дата заказа <span style='color: red;'>*</span>:</td>
						<td class='td_2'>
							<select size=1 name='data' id='select_data'>$option</select>
						</td>
					</tr>
					<tr>
						<td class='td_1'>Сделайте выбор <span style='color: red;'>*</span>:</td>
						<td class='td_2'>
							<input name='type_v' value='1' type='radio' checked='checked' />За заказ
								<br />
							<input name='type_v' value='0' type='radio' />За вес
								<br />
							<input name='type_v' value='2' type='radio' />За вес остатков
								<br />
							<input name='type_v' value='3' type='radio' />Возврат на карту
								<br />
						</td>
					</tr>
					<tr>
						<td colspan='2'>
							<p style='margin-top: 20px'> <span style='color: red;'>*</span> - поля, обязательные для заполнения</p>
						</td>
					</tr>
					<tr>
						<td colspan='2' align='right'>
							<input name='w_submit' id='w_submit' value='Выставить счет' style='padding: 5px;'
							type='submit' />
								<input name='csrf' value='{$csrf}' type='hidden' />
						</td>
					</tr>
				</tbody>
			</table>
		</form>
</body>
</html>
";
echo $form;
if (isset($_POST['w_submit'])) {
$val = array('За вес', 'За заказ', 'За вес остатков', 'Возврат на карту');
if ($_POST['data'] == 0) {
  echo "<script>alert('Невозможно выставить счет для не существуещего заказа');</script>";
  return;
}
if ($_POST['type_v'] == 1) {
  $sqlQuery = "SELECT `f711` as sum_opl_zakaz FROM " . DATA_TABLE . "91 WHERE `id` = " . intval($_POST['data']) . " LIMIT 1";
  $result = mysql_query($sqlQuery) or die(mysql_error() . "<br />" . $sqlQuery);
  $row = mysql_fetch_assoc($result);
  $data_insert['Сумма, грн'] = form_eng_number($row['sum_opl_zakaz']);
} else {
  $data_insert['Сумма, грн'] = form_eng_number($_POST['sum']);
  if (empty($_POST['sum'])) {
   echo "<script>alert('Необходимо указать сумму!');</script>";
   return;
  }
}
$data_insert['Тип движения'] = "Снятие";
$data_insert['Связь'] = $line['ID'];
$data_insert['id заказа'] = intval($_POST['data']);
$data_insert['Примечания'] = $val[intval($_POST['type_v'])] . ", " . form_local_time($ar[intval($_POST['data'])]);
insert_query($data_insert, "Движения в балансе");
echo "
<script>
  ";
echo "window.opener.location.reload(1);";
// Перезагружаем родительское окно
echo "window.close();";
echo "
</script>
";
}



1. Как подключать внешние библиотеки (jquery)
2. Должен ли я в конце вычислений javasript возвращать true?
3. В чем моя ошибка в подключении кода?

#24 Гость_Roman_*

  • Гости

Отправлено 14 Февраль 2013 - 08:10

Javascript срабатывает при нажатии на кнопку доп. действия. Т.е. там необходимо писать вычисления, например, по проверке каких-либо данных на странице с записью. Или, например, какой-либо пересчёт данных. При какой-либо положительной проверке этот JS должен вернуть true, чтобы сработало вычисление. Подключать внешние библиотеки в доп. действие в всплывающем окне лучше в вычисление. Ошибка в коде скорее всего в том, что обработчик bind стоит выше элементов, по которым должен работать. Т. е. он срабатывает тогда, когда элементы ещё не загрузились. Перенесите JS ниже этих элементов или делайте запуск bind по событию onload, либо же используйте обработчик live.

#25 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 14 Февраль 2013 - 16:27

Просмотр сообщенияRoman (14 Февраль 2013 - 08:10) писал:

Javascript срабатывает при нажатии на кнопку доп. действия. Т.е. там необходимо писать вычисления, например, по проверке каких-либо данных на странице с записью. Или, например, какой-либо пересчёт данных. При какой-либо положительной проверке этот JS должен вернуть true, чтобы сработало вычисление. Подключать внешние библиотеки в доп. действие в всплывающем окне лучше в вычисление. Ошибка в коде скорее всего в том, что обработчик bind стоит выше элементов, по которым должен работать. Т. е. он срабатывает тогда, когда элементы ещё не загрузились. Перенесите JS ниже этих элементов или делайте запуск bind по событию onload, либо же используйте обработчик live.

$(function() {
	$('#line_sum').hide();

	$('input[name=type_v]').bind('change', function(event) {
		var el = $('input[name=type_v]:checked').val();

		switch(+el) {
			case 1:
				$('#line_sum').hide();
				break;
			default:
				$('#line_sum').show();
				break;
		}
	});
});

Спасибо за консультацию.

Сообщение отредактировал wondertalik: 14 Февраль 2013 - 16:32


#26 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 14 Февраль 2013 - 17:17

И еще вопрос, хочется, чтобы при нажатии в дополнительном действии на кнопку, вылетало подтверждение, например "Вы действительно это хотите сделать". Нажимаю нет, нечегоне делает., да - выполняет. Как это сделать?

#27 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 14 Февраль 2013 - 18:45

Просмотр сообщенияwondertalik (14 Февраль 2013 - 17:17) писал:

И еще вопрос, хочется, чтобы при нажатии в дополнительном действии на кнопку, вылетало подтверждение, например "Вы действительно это хотите сделать". Нажимаю нет, нечегоне делает., да - выполняет. Как это сделать?
примерно так
echo "<script>if (confirm('ВЫ подтверждаете операцию?')) {";
  echo "\n ..............здесь пишите код при подтверждении ....................}";
  echo "\n window.close(); </script>";

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#28 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 15 Февраль 2013 - 12:09

Просмотр сообщенияandibrag (14 Февраль 2013 - 18:45) писал:

примерно так
echo "<script>if (confirm('ВЫ подтверждаете операцию?')) {";
  echo "\n ..............здесь пишите код при подтверждении ....................}";
  echo "\n window.close(); </script>";
Я не совсем понимаю, как можно связывать яваскрипт и пхп. Так с конфирмом я уже пробовал,но код пхп выполнялся. Единственное, что мне приходит в голову это добавить hidden кнопку с атрибутом disabled=true и после в яваскрипте проверять возвращаемое значение конфирм. В случае нажатия пользователем "Да" менять disabled на false и программно нажимать на кнопку. Может я не прав. Дайте пример, пожалуйста поподробней.

#29 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 15 Февраль 2013 - 13:42

Пхп выполняется на сервере, он понятия не имеет, что Вы нажимаете на компьютере у себя, а отследить это может только javascript, который исполняется на клиенте, т.е. на Вашем компьютере.
В строке, где пишите свой код, исполняемый при подтверждении можете сделать форму и передать, например через скрытое поле done, какой-нибудь параметр.
В начале кода дополнительного действия делаете проверку на наличие нужного значения в передаваемой переменной:
if (isset($_REQUEST["done"]))  {
................
}else{
  echo "<script>if (confirm('ВЫ подтверждаете операцию?')) {";
  echo "\n";
  echo "\n<body onLoad='document.f_done.submit()'>";
  echo "\n<form name='f_done' method='post'>";
  echo "\n<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
  echo "\n<input type='hidden' name='done' value='yes'>"; // Передаем значение "выполнить"
  echo "\n</form>";
  echo "\n</body>";
  echo "\n}";
  echo "\n window.close(); </script>";
}

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#30 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 15 Февраль 2013 - 14:01

Просмотр сообщенияandibrag (15 Февраль 2013 - 13:42) писал:

Пхп выполняется на сервере, он понятия не имеет, что Вы нажимаете на компьютере у себя, а отследить это может только javascript, который исполняется на клиенте, т.е. на Вашем компьютере.
В строке, где пишите свой код, исполняемый при подтверждении можете сделать форму и передать, например через скрытое поле done, какой-нибудь параметр.
Да это все понятно:). Просто думал, что возможно есть другие способы. Более красивые:). antibrag, cпасибо большое за отклик.

#31 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 15 Февраль 2013 - 14:06

Просмотр сообщенияwondertalik (15 Февраль 2013 - 14:01) писал:

Да это все понятно :). Просто думал, что возможно есть другие способы. Более красивые :). antibrag, cпасибо большое за отклик.
разве что через ajax

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#32 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 15 Февраль 2013 - 14:08

Просмотр сообщенияandibrag (15 Февраль 2013 - 14:06) писал:

разве что через ajax
ajax в планах на след. апгренйд:) конфигурации.

#33 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Февраль 2013 - 14:18

Просмотр сообщенияwondertalik (14 Февраль 2013 - 17:17) писал:

И еще вопрос, хочется, чтобы при нажатии в дополнительном действии на кнопку, вылетало подтверждение, например "Вы действительно это хотите сделать". Нажимаю нет, нечегоне делает., да - выполняет. Как это сделать?

В параметрах доп.действия есть специальное поле для яваскрипта, как раз для таких целей (вывод предупреждений при нажатии). Код в вашем случае следующий:

return confirm('Вы действительно это хотите сделать?');

Т.е. код должен вернуть true если доп.действие нужно выполнять и false - если нет (отмена). Городить огород с php смысла нет.

#34 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 15 Февраль 2013 - 14:30

Просмотр сообщенияCbCoder (15 Февраль 2013 - 14:18) писал:

В параметрах доп.действия есть специальное поле для яваскрипта, как раз для таких целей (вывод предупреждений при нажатии). Код в вашем случае следующий:

return confirm('Вы действительно это хотите сделать?');

Т.е. код должен вернуть true если доп.действие нужно выполнять и false - если нет (отмена). Городить огород с php смысла нет.

Да но в этом случае, появляется диалог после нажатия на доп. действие. А мне нужно конфирм уже в всплывающем окне доп. действия, после нажатия submit с диалогом, например, "вы действительно хотите пополнить баланс на 600 руб", где 600р - введенное значение в форме пользователем.

#35 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Февраль 2013 - 14:44

Тогда извиняюсь, неправильно понял.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных