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


Как найти запись в "наших сотрудниках" равного текущему пользователю


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

#1 arsenal

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

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

Отправлено 29 Июнь 2011 - 12:04

Добрый день.
Требуется в таблицу Накладные"(88) прописать дополнительные данные текущего пользователя, например, номер телефона, должность и т.п.
Все эти дополнительные данные есть в таблице "Наши сотрудники"(46). Но не могу никак разобраться как, зная текущего пользователя, найти данного сотрудники в таблице "Наши сотрудники". В этой таблице есть поля ("ФИО", "Логин"), которые совпадают с соответствующими данными текущего пользователя.
Составляю SQL-запрос, сравнивая по полю "ФИО"
//Ищем в "Наших сотрудниках" текущего пользователя
$sqlQuery = "SELECT * FROM ".DATA_TABLE."46 WHERE status=0 AND f483=$user['fio']";
$result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$row = mysql_fetch_array($result);
if (!($nakl_id))//Если накладной не существует, то создаем ее.
{
$nakl_id = insert_query(array(), "Накладные");
$data['№ договора'] = $dogov['ID'];
$data['№ накладной'] = $nakl_id;
$data['Дата накладной'] = date("Y-m-d");
$data['Менеджер договора'] = $dogov['Менеджер'];
//$data['Должность менеджера'] = $row['Должность'];
update_query($data, "Накладные", "id=".$nakl_id);
}
$data_doc['№ накладной'] = $nakl_id;
$data_doc['Название документа'] = $docum['Название'];
$data_doc['№ документа'] = $doc['№ документа'];
$data_doc['Дата документа'] = $doc['Дата документа'];
$data_doc['Тип документа'] = $doc['Тип документа'];
$data_doc['Кол-во листов'] = $doc['Кол-во листов'];
$data_doc['Примечание'] = $doc['Примечание'];
insert_query($data_doc, "Документы по накладной");
Выдает ошибку
Fatal error: Unknown column 'u4' in 'field list'
INSERT INTO f_data88 (f960, f961, f962, f964, f965, f1004, id, user_id, add_time, status, f1209, f1210, u1, u2, u3, u4, r) VALUES ('0', '2011-06-29 00:00:00', '', '', '0000-00-00 00:00:00', '', '{autonumber}', '1', '2011-06-29 13:57:23', '', '', '', 1, 1, 1, 1, 1)
in C:\Program Files\MSTL\���������� ����\www\include\functions2.php on line 104
Что за поля u1, u2, u3, u4, r ?
Как мне решить мою задачу?

#2 CbCoder

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

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

Отправлено 30 Июнь 2011 - 08:43

http://clientbase.ru/forum/index.php?s=&am...post&p=7528

#3 arsenal

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

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

Отправлено 30 Июнь 2011 - 16:19

Ошибка больше не возникает, но вопрос о "наших сотрудниках" остается

Просмотр сообщенияarsenal (29.6.2011, 12:04) писал:

Добрый день.
Требуется в таблицу Накладные"(88) прописать дополнительные данные текущего пользователя, например, номер телефона, должность и т.п.
Все эти дополнительные данные есть в таблице "Наши сотрудники"(46). Но не могу никак разобраться как, зная текущего пользователя, найти данного сотрудники в таблице "Наши сотрудники". В этой таблице есть поля ("ФИО", "Логин"), которые совпадают с соответствующими данными текущего пользователя.
Составляю SQL-запрос, сравнивая по полю "ФИО"
//Ищем в "Наших сотрудниках" текущего пользователя
$sqlQuery = "SELECT * FROM ".DATA_TABLE."46 WHERE status=0 AND f483=$user['fio']";
$result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$row = mysql_fetch_array($result);
if (!($nakl_id))//Если накладной не существует, то создаем ее.
{
$nakl_id = insert_query(array(), "Накладные");
$data['№ договора'] = $dogov['ID'];
$data['№ накладной'] = $nakl_id;
$data['Дата накладной'] = date("Y-m-d");
$data['Менеджер договора'] = $dogov['Менеджер'];
//$data['Должность менеджера'] = $row['Должность'];
update_query($data, "Накладные", "id=".$nakl_id);
}
$data_doc['№ накладной'] = $nakl_id;
$data_doc['Название документа'] = $docum['Название'];
$data_doc['№ документа'] = $doc['№ документа'];
$data_doc['Дата документа'] = $doc['Дата документа'];
$data_doc['Тип документа'] = $doc['Тип документа'];
$data_doc['Кол-во листов'] = $doc['Кол-во листов'];
$data_doc['Примечание'] = $doc['Примечание'];
insert_query($data_doc, "Документы по накладной");

Ошибку выводит такого плана:
<b>Parse error</b>: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in <b>C:\Program Files\MSTL\���������� ����\www\fields.php(518) : eval()'d code</b> on line <b>7</b><br />
Что интересно: ошибку в браузере не видно, просто появляется пустое место над таблицей (см. скрин)[attachment=155:11.jpg]
Скопировал ее через "исходный код страницы", поэтому получилось с тэгами.
Так что же не правильно в запросе

#4 CbCoder

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

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

Отправлено 01 Июль 2011 - 08:52

Неправильно то, что у Вас в строке запроса сразу 2 синтаксические ошибки.

Во-первых, переменную - элемент массива нельзя напрямую внедрять внутрь строкового выражения:

правильно или так:
$sqlQuery = "SELECT * FROM ".DATA_TABLE."46 WHERE status=0 AND f483=".$user['fio'];
или так:
$sqlQuery = "SELECT * FROM ".DATA_TABLE."46 WHERE status=0 AND f483={$user['fio']}";

Во-вторых, "ФИО" - это явно не число, а строка, а значит внутри запроса она должна быть в кавычках:

$sqlQuery = "SELECT * FROM ".DATA_TABLE."46 WHERE status=0 AND f483='{$user['fio']}'";


Первая ошибка - PHP, вторая - MySQL. Советую изучить соответствующие руководства.





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

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