Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: в чем ошибка
 
 автор: ecipuser   (05.06.2009 в 21:25)   письмо автору
1.2 Кб
 
 

Доброго времени суток! При написании скрипта вывода товарных позиций вылезает ошибка :
Unsupported operand types in Z:\home\localhost\www\a-s\index.php on line 52.

часть кода во вложении.
там же вставлен код обработчика ошибок, который пишет в лог файл.
в логах ошибка вот так описана:
2009-06-05 21:20:58 8 Undefined offset: 1 Z:\home\localhost\www\a-s\index.php 52

Подскажите, с чем это связано и как исправить???
Заранее благодарен!

  Ответить  
 
 автор: Trianon   (05.06.2009 в 21:30)   письмо автору
 
   для: ecipuser   (05.06.2009 в 21:25)
 

Издеваемся?
Ссылки в диагностиках указывают на строку 52.

  Ответить  
 
 автор: ecipuser   (05.06.2009 в 21:32)   письмо автору
 
   для: Trianon   (05.06.2009 в 21:30)
 

Так в том то и дело, не могу понять в чем именно ошибка!!!!!

$total_value += $cartinfo[$id]['price'] * $count;
(вот эта строка)

  Ответить  
 
 автор: Trianon   (05.06.2009 в 21:51)   письмо автору
 
   для: ecipuser   (05.06.2009 в 21:32)
 

Ошибка в том, что в массиве $cartinfo нет элемента с индексом $id
Очевидно, в нем вообще ни одного элемента нет.
<?
ini_set
('display_errors',1);
error_reporting(E_ALL);
set_error_handler('user_log');
function 
user_log ($errno$errmsg$file$line) {
$dt date("Y-m-d H:i:s");
error_log("$dt $errno $errmsg $file $line\n"3"error.log");
}
$pagename "Интернет-Каталог с возможностью заказа";
    
$link=mysql_connect("localhost","root","") or die(mysql_error());
    
mysql_select_db("asp");
     
$r=mysql_query("select * from tovar");
      if(!
$r){
             exit (
mysql_error());
      }
    
    list(
$id,$articul,$name,$price,$imgsrc)=mysql_fetch_row($r);
    
$cartinfo['id']=$id;
    
$cartinfo['articul']=$articul;
    
$cartinfo['name']=$name;
    
$cartinfo['price']=$price;
    
$cartinfo['imgsrc']=$imgsrc;
    
$cartinfo = array(); /////////////////////////////////////////////////////
$_SESSION['cartinfo'][$id]=$cartinfo;

// print_r($_SESSION["cart"]);    

if (isset($_GET['add'])) {
    @
$_SESSION['cartinfo'][$_GET['add']]++;
}

// подсчитываем общее количество и общую стоимость, а затем добавляем в корзину:
$total_num 0;
$total_value 0;
if (@
is_array($_SESSION['cartinfo'])) {
    foreach (
$_SESSION['cartinfo'] as $id => $count) {
        
$total_value += $cartinfo[$id]['price'] * $count;
        
$total_num += $count;
    }
}
?>

  Ответить  
 
 автор: ecipuser   (05.06.2009 в 22:41)   письмо автору
 
   для: Trianon   (05.06.2009 в 21:51)
 

Что значит нет?
а в строках:

list($id,$articul,$name,$price,$imgsrc)=mysql_fetch_row($r);
$cartinfo['id']=$id;
$cartinfo['articul']=$articul;
$cartinfo['name']=$name;
$cartinfo['price']=$price;
$cartinfo['imgsrc']=$imgsrc;
$cartinfo = array();

разве $id - не описывается?
тагда как это исправить???

  Ответить  
 
 автор: nikita2206   (05.06.2009 в 23:23)   письмо автору
 
   для: ecipuser   (05.06.2009 в 22:41)
 

$cartinfo['id']; и $cartinfo[$id]; — это разные вещи, всё конечно зависит от значения $id…

  Ответить  
 
 автор: ecipuser   (06.06.2009 в 06:57)   письмо автору
 
   для: nikita2206   (05.06.2009 в 23:23)
 

Это понятно!!! Но вопрос где ошибка и как зпаисать?? Ведь сумму все равео нужно подсчитать!!!

  Ответить  
 
 автор: sim5   (06.06.2009 в 07:41)   письмо автору
 
   для: ecipuser   (06.06.2009 в 06:57)
 

Странная у вас корзина.

  Ответить  
 
 автор: ride   (06.06.2009 в 08:33)   письмо автору
 
   для: ecipuser   (06.06.2009 в 06:57)
 

if (@is_array($_SESSION['cartinfo'])) {
    foreach ($_SESSION['cartinfo'] as $id => $count) {
        $total_value += $cartinfo[$id]['price'] * $count;
        $total_num += $count;
    }
}


у вас получается $count - это массив
$count['price'] - здесь ваша цена

$cartinfo[$id]['price']

такого элемента у вас вообще нету.

if (isset($_GET['add'])) 
    @$_SESSION['cartinfo'][$_GET['add']]++;

здесь вы пытаетесь увеличить на еденицу массив?

вероятно, вам в массив $_SESSION['cartinfo'][$id] надо добавить ключ, в котором будет указываться кол-во выбранного товара.

  Ответить  
 
 автор: ecipuser   (06.06.2009 в 20:29)   письмо автору
 
   для: ride   (06.06.2009 в 08:33)
 

спвсибо. буду разбираться

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования