Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите заставить код работать

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kry
Отправлено: 02 Августа, 2012 - 19:17:08
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Есть человек, который предложил код, который выводит показ цены "от" и "до" у товара, имеющего несколько дочерних товаров, если дочерних нет просто вывод цены. Но у меня этот код не работает. Вот код:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4.                         $getDesc = "SELECT DISTINCT product_id FROM jos_vm_product WHERE product_sku = {$product_sku}";
  5.                         $getDescCmd = mysql_query($getDesc);
  6.                         $getDescCmdRows = mysql_fetch_array($getDescCmd);
  7.                         $product_id = $getDescCmdRows['product_id'];
  8.  
  9.  
  10. $test=mysql_query("SELECT product_id FROM jos_vm_product WHERE product_parent_id = $product_id") or die (mysql_error());
  11. while ($line=mysql_fetch_array($test))
  12. {
  13. $product_id =$line['product_id'];
  14.  
  15. $test2=mysql_query("SELECT product_price FROM jos_vm_product_price WHERE product_id = $product_id") or die (mysql_error());
  16.  
  17.  
  18. while ($line2=mysql_fetch_array($test2))
  19. {
  20.  
  21. $product_pricec=$line2['product_price'];
  22.  
  23.  
  24. if ($minimum>$product_pricec){$maximum=$product_pricec; }
  25.  
  26. if ($maximum<$product_pricec){$minimum=$product_pricec; }
  27.  
  28. }
  29.  
  30. }            
  31.  
  32. if ($maximum > 0) :
  33. echo 'От <b>'.(round($maximum * 100) / 100).' Руб</b>';
  34. echo ' До <b>'.(round($minimum * 100) / 100).' Руб</b>';
  35.  
  36. else:
  37.  
  38. echo $product_price;
  39.  
  40. endif;
  41.  
  42. ?>


Обращался к автору кода, ссылается на отсутствие времени на разбор.

Прошу помощи разобраться в предложенном коде, корректен ли он?

Могу сказать, что выскакивает ошибка:
Цитата:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Ниже код всего файла:
Спойлер (Отобразить)
 
 Top
Hawkmoth
Отправлено: 02 Августа, 2012 - 19:23:09
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




kry пишет:
ou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Переменные строкового типа - в Вашем случае, возможно, $product_sku - необходимо заключать в кавычки при вставке в SQL-запрос
 
 Top
kry
Отправлено: 02 Августа, 2012 - 19:26:00
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Т.е. вы имеете ввиду так:

PHP:
скопировать код в буфер обмена
  1. $getDesc = "SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = '$product_sku'";


вместо

PHP:
скопировать код в буфер обмена
  1. $getDesc = "SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = {$product_sku}";
 
 Top
Hawkmoth
Отправлено: 02 Августа, 2012 - 19:29:51
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




Как минимум.
 
 Top
tuareg
Отправлено: 02 Августа, 2012 - 19:38:37
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Сделайте так
PHP:
скопировать код в буфер обмена
  1.  
  2. $getDesc = "SELECT DISTINCT product_id FROM jos_vm_product WHERE product_sku = {$product_sku}";
  3. echo $getDesc;
  4.  

И результат выложите.
А еще скорее всего ошибки
PHP:
скопировать код в буфер обмена
  1.  
  2. $test=mysql_query("SELECT product_id FROM jos_vm_product WHERE product_parent_id =$product_id")
  3.  

Надо
PHP:
скопировать код в буфер обмена
  1.  
  2. $test=mysql_query("SELECT product_id FROM jos_vm_product WHERE product_parent_id =".$product_id);
  3.  

И второй запрос так же. но если честно, за такие запросы надо руки отрывать. Улыбка

(Отредактировано автором: 02 Августа, 2012 - 19:40:17)

 
 Top
kry
Отправлено: 02 Августа, 2012 - 19:50:32
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Да, чел. говорил, что в кодинге не силен. Но у него работает!!!
tuareg, с замечаниями, выводит ошибки:
Цитата:
SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = 4098

и
Цитата:
SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = 9406-2-130You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


А как можно этот код переписать, чтобы валидно было?
(Добавление)
Ссылка, где у чел-ка работает: http://ug-region.ru/home.html?page=shop.browse&category_id=13

(Отредактировано автором: 02 Августа, 2012 - 19:53:15)

 
 Top
DelphinPRO
Отправлено: 02 Августа, 2012 - 19:55:29
Post Id



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


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




кавычки вас спасут
kry пишет:
$getDesc = "SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = '$product_sku'";


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
kry
Отправлено: 02 Августа, 2012 - 20:00:35
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Интересный факт, если дочерние товары расположены в порядке -
1) 1250 руб.,
2) 800 руб.,
тогда пишется на странице категорий как надо пишется От 800 руб. До 1250 руб. .
если дочерние товары расположены в порядке -
1) 1450 руб.,
2) 1610 руб.,
то надпись "от и до" не выводится.

Все это, если вместо
PHP:
скопировать код в буфер обмена
  1. $getDesc = "SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = {$product_sku}";

сделать
PHP:
скопировать код в буфер обмена
  1. $getDesc = "SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = '$product_sku'";


Что за зависимость такая, непойму?....

(Отредактировано автором: 02 Августа, 2012 - 20:02:19)

 
 Top
Hawkmoth
Отправлено: 02 Августа, 2012 - 20:18:55
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




kry пишет:
PHP:
скопировать код в буфер обмена
  1. if ($minimum>$product_pricec){$maximum=$product_pricec; }
  2.  
  3. if ($maximum<$product_pricec){$minimum=$product_pricec; }


Это что за интересные умозаключения?
Где в коде выше определены $maximum и $minimum?
 
 Top
kry
Отправлено: 02 Августа, 2012 - 20:26:22
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Хм, не знаю Hawkmoth. Может это для того, чтобы из таблицы выбиралась минимальная цена дочернего товара ("От") и максимальная цена доч. товара ("До") в списке дочерних товаров одного общего товара.

Вот он мне присылал свой файл:
Спойлер (Отобразить)
 
 Top
Hawkmoth
Отправлено: 02 Августа, 2012 - 20:40:14
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




ну дык
PHP:
скопировать код в буфер обмена
  1. if ($maximum > 0) :
  2. echo 'От <b>'.(round($maximum * 100) / 100) .' Руб</b>';
  3. echo ' До <b>'.(round($minimum * 100) / 100) .' Руб</b>';
  4.  
  5. else:
  6.  
  7. echo $product_price;
  8.  
  9. endif;


Я по-прежнему не вижу нигде в коде инициализации $maximum. А значит, условие всегда ложно.

Спойлер (Отобразить)
 
 Top
kry
Отправлено: 02 Августа, 2012 - 20:53:10
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $test=mysql_query("SELECT product_id FROM jos_vm_product WHERE product_parent_id = $product_id") or die (mysql_error());


product_parent_id - id дочерних товаров
jos_vm_product перечень собственно продаваемых в магазине товаров
jos_vm_product_price - цены товаров
product_sku - артикул

Hawkmoth, может нужно $maximum присвоить цену дочернего товара?
Блин, тупо прошу помощи - сам не понимаю, мне стыдно..... Огорчение
(Добавление)
Переменные магазина Virtuemart здесь http://joomlaforum.ru/index.php?topic=141539.0

(Отредактировано автором: 02 Августа, 2012 - 20:54:04)

 
 Top
Hawkmoth
Отправлено: 02 Августа, 2012 - 21:07:37
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Янв. 2012  


Помог: 6 раз(а)




с VirtueMart дела не имел, ничего интуитивно не подскажу.
Судя по тому, что в файле много неициализированных переменных и вызов метода класса, он подключается к другому файлу.
Без полного кода сложно судить, но если остальной код такого же качества, то я Вам только сочувствую.
Быть может, кто-то более опытный и терпеливый, чем я, подскажет что-то конструктивное.
 
 Top
kry
Отправлено: 02 Августа, 2012 - 21:10:38
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2011  


Помог: 0 раз(а)




Hawkmoth, благодарю за помощь в любом случае, спасибо за потраченное на меня время. Успехов в делах!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB