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


Тождественные выражения айди строк


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

#1 wondertalik

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

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

Отправлено 14 Декабрь 2011 - 03:59

Вычисления выполняются при усл. сохранения:

$sotr1 = data_table("Контрагенты","`id`=$ID");
$line['Телефон'] .= "$ID"." : ";
$sotr2 = data_table("Контрагенты","`id`={ID}");
$line['Телефон'] .= "{ID}"." : ";
$sotr3 = data_table("Контрагенты","`id`= $line['id']");
$line['Телефон'] .= $line['id']." : ";

Версия 1.9.5. $sotr1-3 будут содержать одинаковые данные? массив $line = содержит значения текущей записи? что такое $ID, ID, $line['id]. Это синонимы айди строки? Я правильно понимаю, что $line['Телефон'] = ... определяет содержимое поля Телефон?

#2 CbCoder

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

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

Отправлено 14 Декабрь 2011 - 08:44

На все вопросы ответ "да". Использование {ID} более не рекомендуется, хотя и поддерживается. Массив $line поддерживает как внутренние, так и внешние имена полей (т.е. к примеру можно писать и $line['id'] и $line['ID']), внутренние имена автоматически конвертируются во внешние при отображении кода, и наоборот - при сохранении, поэтому имена полей теперь можно менять без переписывания кода вычислений.

#3 wondertalik

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

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

Отправлено 14 Декабрь 2011 - 11:23

$d["Teлефон"] = "test";
update_query($d, "Контрагенты", "id=".$line['id']) тоже самое что $line['Телефон'] = "test"?

update_query и insert_query, delete_query - могут обновлять, вставлять или удалять строки только в пределах текущей таблицы, например, Контрагенты или можно работать и с другими таблицами, конечно же указывая необходимый айди?

Сообщение отредактировал wondertalik: 14 Декабрь 2011 - 11:35


#4 CbCoder

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

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

Отправлено 14 Декабрь 2011 - 11:32

Просмотр сообщенияwondertalik (14 Декабрь 2011 - 11:23) писал:

$d["Teлефон"] = "test";
update_query($d, "Контрагенты", "id=$line['id']") тоже самое что $line['Телефон'] = "test"?
Да, если таблица Контрагенты - текущая. Но в данном случае у вас синтаксическая ошибка, "id=$line['id']" писать нельзя, либо "id=".$line['id'], либо "id={$line['id']}", см. мануал по PHP.

Просмотр сообщенияwondertalik (14 Декабрь 2011 - 11:23) писал:

update_query и insert_query, delete_query - могут обновлять, вставлять или удалять строки только в пределах текущей таблицы, например, Контрагенты или можно работать и с другими таблицами, конечно же указывая необходимый айди?
Нет конечно, какую таблицу укажете в параметрах, с такой и работает. А вот $line - только с текущей строкой.

#5 wondertalik

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

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

Отправлено 14 Декабрь 2011 - 12:32

$line['id'] после сохранения изменяется на $line['ID'], реализовано в срм? использую встроенный редактор.

#6 CbCoder

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

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

Отправлено 14 Декабрь 2011 - 13:19

Нет, неправильно поняли. Если писали $line['ID'], то при сохранении заменяется на внутреннее имя. При отображении снова на внешнее. Если писали $line['id'], то так и сохраняется, но при отображении снова заменяется на внешнее. Т.е. в БД хранится внутреннее имя, а в редакторе отображается внешнее. Сделано это, как я уже сказал, для независимости от переименования поля. Ранее приходилось либо переписывать код, либо использовать только внутренние имена.

Но это все касается только массива $line, функции data_table, update_query, insert_query и delete_query работают пока по старому. Разница в том что для многих вычислений они уже не нужны, достаточно (и рекомендуется) использовать $line.





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

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