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


Ошибка в доп. действии


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

#1 sxquer

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

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 05 Июнь 2014 - 04:56

$table_prefix = DATA_TABLE;
$selected_row_ids = $_REQUEST["sel"];
$warnings = "";
$city = "";

$query_ids = "(";
foreach ($selected_row_ids as $i)
{
$query_ids .= $i . ", ";
}
$query_ids = substr($query_ids, 0, -2) . ")";


$selected_parts = data_select_field(281, "`id`, `f3911` as status, `f5211` as city", "status = 0 AND `id` IN {$query_ids}");

while ($row = sql_fetch_assoc($selected_parts))
{
if ($city == "") 
{
$city = $row['city'];
}

if ($city != $row['city'])
{
$warnings = "Невозможно создать отправку для запчастей из разных городов.";
break;
}

if ($row['status'] != "На складе")
{
$warnings = "Отправку можно создать тольлко для запчастей со статусом \"На складе\"";
break;
}
}

if ($warnings != "") die($warnings);
else
{

$city_query = data_select_field(331, "`id`", "status = 0 AND `f4441`='{$city}'");
$row = sql_fetch_assoc($city_query);
$city_id = $row['id'];

$data['Город'] = $city_id;
$otp_id = insert_query($data,"Отправки");


$query = "UPDATE {$table_prefix}281 SET `f5191`={$otp_id} WHERE `id` IN {$query_ids}";
sql_query($query);
}

Почему-то создается несколько записей в таблице Отправки..
Пока писал, подумал, что действие выполняется для каждой выбранной строки.
Если я прав - тогда вопрос. Как на все выбранные строки создать только одну запись в таблице "Отправки"?

#2 CbCoder

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

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

Отправлено 05 Июнь 2014 - 09:11

Да, код доп.действия вызывается столько раз, сколько было выделено строк, для каждой строки отдельно. Например, код $line['Поле1'] = 100; заполнит Поле1 значением 100 для всех выделенных строк. В вашем случае, если вы используете переменную $_REQUEST['sel'] для получения сразу всего массива id выделенных строк, логично использовать exit; в конце кода, тогда он вызовется только один раз.

#3 sxquer

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

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 05 Июнь 2014 - 12:23

Благодарю за ответ!
К сожалению, exit прерывает исполнение всех скриптов и после действия пользователь получает пустой белый экран.

#4 CbCoder

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

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

Отправлено 05 Июнь 2014 - 12:32

Так добавьте перенаправление через header перед exit и никакого белого экрана не будет.

#5 sxquer

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

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 05 Июнь 2014 - 12:35

Благодарю, поторопился и упустил очевидное решение

#6 sxquer

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

  • Пользователи
  • PipPipPip
  • 33 сообщений

Отправлено 06 Июнь 2014 - 05:24

Подскажите, предусмотрены ли какие-то штатные средства для вывода информационных сообщений / отображения форм в табличном виде?
Нужно вывести $warnings из скрипта выше, если он появился.

Возможно есть какой-то GET параметр при обращении к табличному виду?

#7 CbCoder

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

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

Отправлено 06 Июнь 2014 - 09:31

В табличном виде - нет. Есть только в режиме просмотра записи.





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

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