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


Дважды не вытащить данные из таблицы


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

#1 Zoldberg

    Участник

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

Отправлено 22 Июнь 2010 - 23:37

Ситуация следующая:
Таблица А
Таблица Б
Таблица В
1. В таблице В надо вытащить данные из неё самой (поле X) и перемножить с данными таблицы Б (поле Y). Успешно.
2. Тут же в таблице В надо вытащить данные из таблицы А. Никак не получается. Также не получается вытащить данные из любой другой ячейки таблицы Б, кроме поля Y.
Такое может быть или ошибка где-то в коде?

#2 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

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

Не сталкивался с таким. Скорее всего ошибка в коде.

#3 wondertalik

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

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

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

Просмотр сообщенияZoldberg (22.6.2010, 23:37) писал:

Ситуация следующая:
Таблица А
Таблица Б
Таблица В
1. В таблице В надо вытащить данные из неё самой (поле X) и перемножить с данными таблицы Б (поле Y). Успешно.
2. Тут же в таблице В надо вытащить данные из таблицы А. Никак не получается. Также не получается вытащить данные из любой другой ячейки таблицы Б, кроме поля Y.
Такое может быть или ошибка где-то в коде?
Давайте сюда Ваш код.

#4 Zoldberg

    Участник

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

Отправлено 23 Июнь 2010 - 10:14

Это код к первому вычислению, он работает нормально:
$data = data_table("Заявки на бронь","id={ID}");
$cena = data_table("Описания номеров","id='".$data['Номера']."'");
$cena1 = $cena['Цена'];
$kol = $data["Кол-во ночей"];
$result = $cena1*$kol;
return $result;


Это ко второму, отказывается выбирать из другой, третьей таблицы
$data = data_table("Заявки на бронь","id={ID}");
$cena = data_table("Гостиницы","id='".$data['Гостиница']."'");
$cena1 = $cena['% фирме'];
return $cena1;

Только что обнаружил, что он выдаёт данные, но из другой гостиницы, а не той которую надо. Не понимаю...

#5 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 23 Июнь 2010 - 10:49

На первый взгляд ошибок нету. Попробуйте просмотреть по шагам в чем причина. Т.е. выведите сначала $data['Гостиница'], проверьте, правильно ли выводит, потом уже $cena['% фирме'].

#6 Zoldberg

    Участник

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

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

Просмотр сообщенияТехподдержка (23.6.2010, 10:49) писал:

На первый взгляд ошибок нету. Попробуйте просмотреть по шагам в чем причина. Т.е. выведите сначала $data['Гостиница'], проверьте, правильно ли выводит, потом уже $cena['% фирме'].


Попробовал:
$data = data_table("Заявки на бронь","id={ID}");
$cena = data_table("Гостиницы","id='".$data['Гостиница']."'");
return $cena;

Выдаёт пустое значение. Сверял названия таблицы и полей, всё совпадает, пробовал изменять названия полей и переменных - не помогает.
А вот из таблицы "Описания номеров" берет любые поля.
Еще из одной таблицы с наименованиями гостиниц берет почему-то другие ячейки из этого-же столбца, то есть с другим id.

Попробовал из другой таблицы взять:
$data = data_table("Заявки на бронь","id={ID}");
$cena = data_table("Все гостиницы","id='".$data['Гостиница']."'");
return $cena;

Выдаёт в одних строках пустое значение, в других Array

#7 Zoldberg

    Участник

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

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

ТЕХПОДДЕРЖКА заходит в этот раздел форума? Ау!

#8 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 24 Июнь 2010 - 13:13

Извините, пропустил Ваше сообщение. Array у Вас выдает потому, что Вы выводите массив, выводите содержание конкретной ячейки, а не массива. Пустое значение выдает потому, что не срабатывает условие. Видимо Вы его не правильно задаете.

#9 Zoldberg

    Участник

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

Отправлено 24 Июнь 2010 - 14:01

Просмотр сообщенияТехподдержка (24.6.2010, 13:13) писал:

Извините, пропустил Ваше сообщение. Array у Вас выдает потому, что Вы выводите массив, выводите содержание конкретной ячейки, а не массива. Пустое значение выдает потому, что не срабатывает условие. Видимо Вы его не правильно задаете.

Да, это я понял. Но вот почему в первом случае правильно, а во втором нет? Всё делаю по аналогии...Не могут где-то сохраняться следы от первых вычислений и влиять на вторые?

#10 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

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

Нет, не могут.

#11 Zoldberg

    Участник

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

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

Еще 2 вопроса:

1. Как-то влияет наличие связи между таблицами или её отсутствие на вычисления?

У меня между связанными таблицами вычисления проходят, а между несвязанными либо пусто, либо Array, либо значения соседних ячеек выдаётся.

2. Возможно ли в вычислениях использовать функции Smarty, в частности цикл {foreach} ?

#12 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 24 Июнь 2010 - 17:50

$data = data_table("Заявки на бронь","id={ID}");
$cena = data_table("Все гостиницы","id='".$data['Гостиница']."'");
return $cena;
Если у Вас в Все гостиницы не связаны с заявками, то этот код будет работать не верно, ибо условие "id='".$data['Гостиница']."'" выполняется не правильно. "id='".$data['Гостиница']."'" означает, что id строки равно полю "Гостиница" из таблицы "Заявки на бронь".

Array выходит, потому что Вы выводите массив, а не ячейку.
Смарти вообще лучше не использовать, а все вычисления писать на php. В нем есть цикл foreach.

#13 Zoldberg

    Участник

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

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

Просмотр сообщенияТехподдержка (24.6.2010, 17:50) писал:

$data = data_table("Заявки на бронь","id={ID}");
$cena = data_table("Все гостиницы","id='".$data['Гостиница']."'");
return $cena;
Если у Вас в Все гостиницы не связаны с заявками, то этот код будет работать не верно, ибо условие "id='".$data['Гостиница']."'" выполняется не правильно. "id='".$data['Гостиница']."'" означает, что id строки равно полю "Гостиница" из таблицы "Заявки на бронь".

В Вашей документации здесь http://www.clientbas...n_16/php-polya/ ничего не сказано, должны быть связаны таблицы или нет. Можно как-то подробнее узнать, как правильно обращаться к ячейкам другой таблицы, если таблицы связаны и если таблицы не связаны?

#14 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

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

Чтобы вытащить данные из какой-то таблицы совершенно не обязательно чтобы они были как-то связаны между собой.
Но в вашем случае, если вы добавляете условие "id='".$data['Гостиница']."'", то соответственно поле гостиница должно быть полем связи с таблицей "Заявка на бронь". Вообще в поле связи содержаться не значения поля из другой таблицы, а id записи из другой таблицы.





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

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