Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема со сложением извлекаемых сумм из mysql, из валютной и рублевой таблиц mysql 
:(
    Опции темы
Гриша
  Дата 27.6.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: 1
Всего: 1



Проблема со сложением извлекаемых сумм из валютной и рублевой таблиц mysql.

Подскажите пожалуйста решение.
Для вывода итоговой суммы в покупательской тележки, я использую функцию calculate_price($cart), которая извлекает и преобразовывает данне из двух таблиц, рублевой и валютной.

Есть две таблицы в базе данных, одна рублевая, другая валютная.
Для того, чтобы общий результат выводился в рублях, я сделал условие, при котором,
если данные извлекаются (if ($result)) из валютной таблицы (from sealy), то эти данные умножаются на курс ЦБ ($eur) данной валюты,
если данные извлекаются (if ($result1)) из рублевой таблицы (from bedding), то результат так и выводится.

Приведенный ниже код результат выводит верно, но также броузер выводит сообщение об ошибке:
Warning: Unable to jump to row 0 on MySQL result index 2 in Z:\home\magazin\www\issue_order\magazin_fns.php on line ($item_price_sealy = mysql_result($result, 0, 'price') smile

Warning: Unable to jump to row 0 on MySQL result index 5 in Z:\home\magazin\www\issue_order\magazin_fns.php on line ($item_price_sealy = mysql_result($result1, 0, 'price') smile


Код

function calculate_price($cart) 
{ 
  $price = 0.0; 
  if(is_array($cart)) 
  { 
    $conn = db_connect(); 
    foreach($cart as $id => $qty) 
    {   
      $query = "select price from sealy where id='$id'"; 
      $result = mysql_query($query); 
       
      //Если запрос из валютной таблицы 
      if ($result) 
      { 
       $item_price_sealy = mysql_result($result, 0, 'price'); 
       //Итоговая сумма равана цена из базы данных * на количество запрошенного товара * курс евро ЦБ 
       $price +=$item_price*$qty*$eur; 
      }       

      $query1 = "select price from bedding where id='$id'"; 
      $result1 = mysql_query($query1); 

      //Если запрос из рублевой таблицы 
      if ($result1) 
      { 
       $item_price = mysql_result($result1, 0, 'price'); 
       //Итоговая сумма равана цена из базы данных * на количество запрошенного товара 
       $price +=$item_price*$qty; 
      } 
    }   
  } 
  return $price; 
}

Добавлено @ 23:06
smile Я приведу пример всей работы электронной корзины:
Вот например происходит get_запрос cart?sealy=$id, и происходит добавление элементов в телегу:

Код

@ $sealy = $HTTP_GET_VARS['sealy']; 

if($sealy) 
{ 
Есль get-запроса не было то телега пуста 
if(!isset($HTTP_SESSION_VARS['cart'])) 
    { 
      $HTTP_SESSION_VARS['cart'] = array(); 
      $HTTP_SESSION_VARS['items'] = 0; 
      $HTTP_SESSION_VARS['total_price'] ='0.00'; 
    } 
Если прошол get-запрос то телега увеличивается 
if(isset($HTTP_SESSION_VARS['cart'][$sealy])) 
      $HTTP_SESSION_VARS['cart'][$sealy]++; 
          else 
    $HTTP_SESSION_VARS['cart'][$sealy] = 1; 
}


А вот идет условие прикотром $total_price выводит результат функции calculate_price которая выводит и извлекает данные из двух таблиц mysql

Код

$HTTP_SESSION_VARS['total_price'] = 0; 
$HTTP_SESSION_VARS['items'] = 0; 

   if(isset($HTTP_SESSION_VARS['cart'])) 
   { 
    $HTTP_SESSION_VARS['total_price'] += calculate_price($HTTP_SESSION_VARS['cart']); 
    }

И вот например так выводится итоговый результат в браузере
Код

global $HTTP_SESSION_VARS;

echo $HTTP_SESSION_VARS['total_price'];

--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
Opik
Дата 27.6.2005, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Откажись от использования mysql_result - это устарелый вариант.
попробуй:
Код

$query = mysql_query("SELECT...");
$result = mysql_fetch_array($query);
//и далее обращаешься как $result['field'];

PM MAIL Skype   Вверх
Гриша
Дата 28.6.2005, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: 1
Всего: 1



Opik спасибо за ответ, я понял что вы имеете ввиду, я попробую. О результатах напишу.
--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
Гриша
Дата 28.6.2005, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: 1
Всего: 1



Opik, спасибо большое вам за помощь, все работает хорошо. Еще на одном хорошем форуме по php мне так и не дали удовлитворительного ответа.
Вот результат:
Код

function calculate_price($cart) 
{ 
  $price = 0.0; 
  if(is_array($cart)) 
  { 
    $conn = db_connect(); 
    foreach($cart as $id => $qty) 
    {   
      $query = mysql_query("select price from sealy where id='$id'");
      $result = mysql_fetch_array($query);
           
      //Если запрос из валютной таблицы 
      if ($result) 
      { 
       $item_price_sealy = $result['0'];
       //Итоговая сумма равана цена из базы данных * на количество запрошенного товара * курс евро ЦБ 
       $price +=$item_price*$qty*$eur;
      }       

      $query1 = mysql_query("select price from bedding where id='$id'");
      $result1 = mysql_fetch_array($query1);

      //Если запрос из рублевой таблицы 
      if ($result1) 
      { 
       $item_price = $result1['0']; 
       //Итоговая сумма равана цена из базы данных * на количество запрошенного товара 
       $price +=$item_price*$qty; 
      } 
    }   
  } 
  return $price; 
}

--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
Opik
Дата 28.6.2005, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Гриша
Хм, вот это что?
Код

$result1['0'];
первый элемент массива? тогда разумнее так:
Код

$result1[0];
а удобнее так:
Код

$result1['price'];

Цитата
Opik, спасибо большое вам за помощь, все работает хорошо.

имхо лучше слова на свете smile
Добавлено @ 13:38
Гриша
и да, кстати, эти 2 запроса можно объединить.
рой в сторону LEFT JOIN а по поводу одинаковых полей - AS
PM MAIL Skype   Вверх
Гриша
Дата 29.6.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: 1
Всего: 1



Opik, спасибо, такой вариант нагляднее $result1['price'], я им воспользуюсь.
--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0857 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.