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


настройка условия для вычисления


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

#1 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 08 Июль 2014 - 14:19

Имеется таблица контрагенты, в нее я передаю из таблицы "наши сотрудники" данные.
Вот код:
$row = data_select_array(46, "status=0 AND f1400=",$line['Менеджер']); // сразу считываем результат запроса в массив
$line['замена'] = $row['f3710'];
$line['незачет'] = $row['f3720'];
$res = data_select(46, "`status`=0 AND `f3720`='нет' AND `f3710`= 0");
while ($row2 = sql_fetch_assoc($res))
{
$mas[] = $row2; 
$rand_key = array_rand($mas, 1); 
$rand_row = $mas[$rand_key]; 

if($line['незачет']==='да')
{
  $line['штраф'] = $rand_row['f1400'];
}
}

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

#2 CbCoder

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

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

Отправлено 08 Июль 2014 - 14:44

В чем проблема обратится запросом к таблице?

#3 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 08 Июль 2014 - 14:59

$row = data_select_array(46, "status=0 AND f1400=",$line['Менеджер']); // сразу считываем результат запроса в массив
$line['замена'] = $row['f3710'];
$line['незачет'] = $row['f3720'];
$res = data_select(46, "`status`=0 AND `f3720`='нет' AND `f3710`= 0");
while ($row2 = sql_fetch_assoc($res)) // цикл чтения строк из массива сверху, каждая строка читается в $row
{
$mas[] = $row2; // а тут помещаем очередной считанный $row в массив $mas как новый элемент этого массива
$rand_key = array_rand($mas, 1); // функция array_rand возвращает КЛЮЧ массива, а не элемент (см. описание функции)
$rand_row = $mas[$rand_key]; // поэтому чтобы получить элемент массива, нужно подставить полученный ключ
$pol= data_select(46, "status=0 AND f3720='да'" );
$row4 = sql_fetch_assoc($pol);
$zamena = $row4['f1400'];
if($line['незачет']==='да' || $zamena === $line['замена'])
{
  $line['штраф'] == $rand_row['f1400'];
}
}
Вот код но он не срабатывает. где то я опять напутал

#4 CbCoder

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

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

Отправлено 08 Июль 2014 - 15:18

Ну возможно и напутали, вам то лучше знать, что именно вы хотите получить запросом. Синтаксически все верно, а за логику вы сами должны отвечать.

#5 aleks.goodcolor

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

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 08 Июль 2014 - 15:26

дело в том что тут
if($line['незачет']==='да' || $zamena === $line['замена'])
{
  $line['штраф'] == $rand_row['f1400'];
}
не срабатывает второе условие, поле штраф не выводится, хотя должно выводится потому что поле "замена" из контрагентов совпадает с именем пользователя у которого в поле "незачет" стоит да в таблице наши партнеры

Сообщение отредактировал aleks.goodcolor: 08 Июль 2014 - 15:27


#6 CbCoder

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

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

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

Ну так ищите изъян в логике вашего запроса и кода ниже. Мне в чужой логике трудно разобраться. Да я и не обязан это делать, форум для подсказок по функционалу, а не для написания кода за вас - это у нас платная услуга.

Кстати, в условии у вас между сравнениями стоит "или" (||), т.е. для его срабатывания достаточно одного равенства. Возможно, вы тут тоже что-то напутали.





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

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