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


Вопрос к администраторам форума


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

#1 GC-RSS

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

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

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

Здравствуйте уважаемые администраторы! Есть вопрос касаемый вычисляемого поля.

Таблица №87 "Поступление товара на склад"
СТРУКТУРА:
ПОЛЕ № 1) № поступления - поле типа "номер"; [f887]
ПОЛЕ № 2) Дата поступления - поле типа "дата"; [f879]
ПОЛЕ № 3) Поступление от арендатора - поле типа "список"; [f940]
ПОЛЕ № 4) От кого - поле типа "связь" (связь с полем "Название" таблицы "Контрагенты"); [f904]
ПОЛЕ № 5) № договора - поле типа "число"; [f906]
ПОЛЕ № 6) № товарной накладной - поле типа "число"; [f902]
ПОЛЕ № 7) № счет фактуры - поле типа "число"; [f903]
ПОЛЕ № 8) Дата счет фактуры - поле типа "дата"; [f919]
ПОЛЕ № 9) Товар - поле типа "список"; [f880]
ПОЛЕ № 10) Ед. изм. - поле типа "список"; [f881]
ПОЛЕ № 11) Общее количество товара - поле типа "число"; [f882]
ПОЛЕ № 12) Общее количество тары - поле типа "число"; [f899]
ПОЛЕ № 13) Ответственный за приемку баллонов - поле типа "связь" (связь с полем "ФИО" таблицы "Наши сотрудники"); [f917]
ПОЛЕ № 14) Ген. директор - поле типа "связь" (связь с полем "ФИО" таблицы "Наши сотрудники"); [f918]
ПОЛЕ № 15) Номера - поле типа "текст" (ВЫЧИСЛЯЕМОЕ ПОЛЕ); [f943]

Таблица №90 "Позиции поступления" (подтаблица {подчиненная} приведенной выше таблицы "Поступление товара на склад")
СТРУКТУРА:
ПОЛЕ № 1) Номер поступления - поле типа "связь" (т.к подчиненная); [f895]
ПОЛЕ № 2) Тара - поле типа "список"; [f896]
ПОЛЕ № 3) Состояние - поле типа "список"; [f905]
ПОЛЕ № 4) Номер тары - поле типа "текст"; [f901]
ПОЛЕ № 5) Дата переосвидетельствования - поле типа "дата"; [f897]
ПОЛЕ № 6) Количество газа - поле типа "число". [f898]

В чем вопрос: необходимо, чтобы в поле "Номера"(ПОЛЕ № 15)) таблицы "Поступление товара на склад" перечислялись через запятую все "Номера тары"(ВСЕ ПОЛЯ № 4))

Код пробывал такой:
$sqlQuery = "SELECT f901 FROM ".DATA_TABLE."90 WHERE status=0 f895={ID}";
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
$itog = implode(", ", $row);
return $itog;

НО, в результате выдает только два номера подряд ОДИНАКОВЫХ???(хотя ВСЕ НОМЕРА РАЗНЫЕ!!!)
ПОМОГИТЕ ПОЖАЛУЙСТА.

#2 GC-RSS

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

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

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

Уважаемые администраторы! Вопрос все еще актуальный. Ответ очень необходим. Прошу вас ответить!

#3 GC-RSS

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

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

Отправлено 09 Июль 2010 - 12:58

Уважаемые администраторы! Понимаю вашу занятость, но все же пожалуйста прошу вас ответить на мои сообщения. Лицензия есть!

#4 GC-RSS

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

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

Отправлено 12 Июль 2010 - 15:42

Уважаемые администраторы! В очередной раз понимаю вашу занятость, но все же пожалуйста прошу вас ответить на мои сообщения. Лицензия есть!

#5 CbCoder

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

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

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

Если вам пока не отвечают - это не значит что вас игнорируют или слишком заняты другими делами. Все вопросы рассматриваются в обязательном порядке, но не на все техподдержка может сразу ответить, иногда требуется время для анализа или консультации с другими специалистами.

Теперь по вашему полю. У вас явная ошибка, вернее существенная недоработка в коде: сам SQL запрос составлен верно, но т.к. данный запрос возвращает в общем случае несколько записей, то соответственно и для составления списка всех номеров необходим цикл по всем записям. Вы же возвращаете только первую запись, более того, зачем то делаете implode(", ", $row), т.е. сливаете все поля одной записи. Видимо вы просто не совсем понимаете суть работы php с mysql запросами. Рекомендую ознакомится с соответствующим разделом руководства php для избежания подобных ошибок.

Правильный код будет таким:
$sqlQuery = "SELECT f901 FROM ".DATA_TABLE."90 WHERE status=0 f895={ID}";
$result = mysql_query($sqlQuery);
while ($row = mysql_fetch_array($result)) {	// цикл по всем записям данного запроса
	$numbers[] = $row['f901'];  // заносим очередной номер в массив номеров
}
$itog = implode(", ", $numbers);   // сливаем все номера в итог
return $itog;


#6 GC-RSS

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

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

Отправлено 12 Июль 2010 - 16:44

Спасибо вам огромное! Прошу прощения если я кого-нибудь обидел. Я честно не хотел. Еще раз спасибо





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

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