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
Форумы портала PHP.SU :: Версия для печати :: Помогите заставить код работать
Форумы портала PHP.SU » » Вопросы новичков » Помогите заставить код работать

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

1. kry - 02 Августа, 2012 - 19:17:08 - перейти к сообщению
Есть человек, который предложил код, который выводит показ цены "от" и "до" у товара, имеющего несколько дочерних товаров, если дочерних нет просто вывод цены. Но у меня этот код не работает. Вот код:
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


Ниже код всего файла:
Спойлер (Отобразить)
2. Hawkmoth - 02 Августа, 2012 - 19:23:09 - перейти к сообщению
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-запрос
3. kry - 02 Августа, 2012 - 19:26:00 - перейти к сообщению
Т.е. вы имеете ввиду так:

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}";
4. Hawkmoth - 02 Августа, 2012 - 19:29:51 - перейти к сообщению
Как минимум.
5. tuareg - 02 Августа, 2012 - 19:38:37 - перейти к сообщению
Сделайте так
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.  

И второй запрос так же. но если честно, за такие запросы надо руки отрывать. Улыбка
6. kry - 02 Августа, 2012 - 19:50:32 - перейти к сообщению
Да, чел. говорил, что в кодинге не силен. Но у него работает!!!
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[dot]ru/home[dot]html?pa[dot][dot][dot]p;category_id=13
7. DelphinPRO - 02 Августа, 2012 - 19:55:29 - перейти к сообщению
кавычки вас спасут
kry пишет:
$getDesc = "SELECT DISTINCT product_id FROM wkpb_vm_product WHERE product_sku = '$product_sku'";
8. kry - 02 Августа, 2012 - 20:00:35 - перейти к сообщению
Интересный факт, если дочерние товары расположены в порядке -
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'";


Что за зависимость такая, непойму?....
9. Hawkmoth - 02 Августа, 2012 - 20:18:55 - перейти к сообщению
kry пишет:
PHP:
скопировать код в буфер обмена
  1. if ($minimum>$product_pricec){$maximum=$product_pricec; }
  2.  
  3. if ($maximum<$product_pricec){$minimum=$product_pricec; }


Это что за интересные умозаключения?
Где в коде выше определены $maximum и $minimum?
10. kry - 02 Августа, 2012 - 20:26:22 - перейти к сообщению
Хм, не знаю Hawkmoth. Может это для того, чтобы из таблицы выбиралась минимальная цена дочернего товара ("От") и максимальная цена доч. товара ("До") в списке дочерних товаров одного общего товара.

Вот он мне присылал свой файл:
Спойлер (Отобразить)
11. Hawkmoth - 02 Августа, 2012 - 20:40:14 - перейти к сообщению
ну дык
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. А значит, условие всегда ложно.

Спойлер (Отобразить)
12. kry - 02 Августа, 2012 - 20:53:10 - перейти к сообщению
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[dot]ru/index.php?topic=141539[dot]0
13. Hawkmoth - 02 Августа, 2012 - 21:07:37 - перейти к сообщению
с VirtueMart дела не имел, ничего интуитивно не подскажу.
Судя по тому, что в файле много неициализированных переменных и вызов метода класса, он подключается к другому файлу.
Без полного кода сложно судить, но если остальной код такого же качества, то я Вам только сочувствую.
Быть может, кто-то более опытный и терпеливый, чем я, подскажет что-то конструктивное.
14. kry - 02 Августа, 2012 - 21:10:38 - перейти к сообщению
Hawkmoth, благодарю за помощь в любом случае, спасибо за потраченное на меня время. Успехов в делах!

 

Powered by ExBB FM 1.0 RC1