[Дмирий Валак] Интернет магазин на PHP и MySQL [2012, RUS]

Ответить
 

RomkaRu

Стаж: 15 лет 6 месяцев

Сообщений: 3


RomkaRu · 13-Мар-13 00:01 (12 лет 6 месяцев назад)

Курс хороший, почти все разъяснено, но совершенно не сделан упор на безопасность. Такой магазин в инете быстро сломают...
[Профиль]  [ЛС] 

dec11

Стаж: 14 лет 9 месяцев

Сообщений: 28


dec11 · 26-Апр-13 19:50 (спустя 1 месяц 13 дней)

Огромное спасибо! Замечательный курс! Дает фундамент и крутой фундамент. Объяснение супер все по делу.
[Профиль]  [ЛС] 

Pikk

Стаж: 19 лет 3 месяца

Сообщений: 18


Pikk · 27-Апр-13 23:05 (спустя 1 день 3 часа)

Кто поможет? Вообщем при оформлении заказа в БД в orders заказ записывается, но без имени, фамилии, адреса, емайла и индекса. В чём может быть проблема?
[Профиль]  [ЛС] 

dec11

Стаж: 14 лет 9 месяцев

Сообщений: 28


dec11 · 03-Май-13 06:44 (спустя 5 дней)

С остальными заказами все нормально?
[Профиль]  [ЛС] 

Pikk

Стаж: 19 лет 3 месяца

Сообщений: 18


Pikk · 04-Май-13 07:05 (спустя 1 день)

Остальная информация записывается. Наименование, кол-во, цена, время, дата. Т.е. не записывается инфа с формы.
[Профиль]  [ЛС] 

antilamer7

Стаж: 17 лет 8 месяцев

Сообщений: 441


antilamer7 · 12-Май-13 02:52 (спустя 7 дней)

В начале урока: Создание интернет-маЗаГина...)
[Профиль]  [ЛС] 

ruslan6491

Стаж: 14 лет 8 месяцев

Сообщений: 21


ruslan6491 · 03-Июл-13 13:45 (спустя 1 месяц 22 дня)

привет помогите разобраться с этим
у меня такая же ошибка
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
я просто скопировал себе на сервер 5 урок его и запустил! ничего от себя не делал вот скрин
http://i48.fastpic.ru/big/2013/0703/1a/cd79167ac4dde89978cb667534daa41a.png
[Профиль]  [ЛС] 

unix44

Стаж: 16 лет 7 месяцев

Сообщений: 218

unix44 · 03-Июл-13 14:47 (спустя 1 час 1 мин., ред. 03-Июл-13 14:47)

ruslan6491 писал(а):
59951974привет помогите разобраться с этим
у меня такая же ошибка
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
я просто скопировал себе на сервер 5 урок его и запустил! ничего от себя не делал вот скрин
http://i48.fastpic.ru/big/2013/0703/1a/cd79167ac4dde89978cb667534daa41a.png
для начала код нужно показывать, и потом только спрашивать.
к БД нужно сперва подключиться и потом выполнять запрос.
[Профиль]  [ЛС] 

ruslan6491

Стаж: 14 лет 8 месяцев

Сообщений: 21


ruslan6491 · 04-Июл-13 17:39 (спустя 1 день 2 часа, ред. 05-Июл-13 17:40)

_))
Alagar13 писал(а):
53724431Товарищи, помогите кто делал по этим урокам. В 4-м видео показывалось как создавали файл db_fns.php и в нем есть функция db_result_to_array()
А в 5-м видео при выводе товаров по категориям(только PC или только ноутбуки) у меня выдает такую ошибку:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Program Files\AppServ\www\shop\db_fns.php on line 31 там как раз находится функция function db_result_to_array($result)
{
$res_array = array();
$count = 0;
while($row = mysql_fetch_array($result)) // эта самая 31 строка
{
$res_array[$count] = $row;
$count++;
}
return $res_array;
}
Что я делаю не так?
p.s. весь код 4 и 5 видео просмотрел 2 раза в поисках ошибки
я всетаки нашел в чем проблема! в бд надо category изменить на cat и ошибка исчезнет
[Профиль]  [ЛС] 

likeace

Стаж: 15 лет 6 месяцев

Сообщений: 23

likeace · 08-Июл-13 14:59 (спустя 3 дня)

О боже мой, как можно интернет-магазин писать без ООП
[Профиль]  [ЛС] 

SvetV884

Стаж: 13 лет 4 месяца

Сообщений: 27


SvetV884 · 25-Июл-13 15:15 (спустя 17 дней)

sanya13579 писал(а):
53308832
SvetV884 писал(а):
я только начинающий хпх-шник, поэтому ценю то что Вы, уважаемый автор, сделали. Для лошары-меня это просто находка. Желаю счастья и здоровья.
я бы сказал - очень начинающий, еще не понял, как язык называется, а уже интернет магазин создает.
2 года работаю программистом, очень много дел, поэтому и ошибся в написании. а пхп-штука хорошая, хотя и уязвимая. уже не хочу на ней работать
[Профиль]  [ЛС] 

Epsural

Старожил

Стаж: 16 лет 5 месяцев

Сообщений: 114

Epsural · 05-Окт-13 19:33 (спустя 2 месяца 11 дней)

всем здрасьте - кто-ть из Сведущих может подсказать - имеет смысл изучать язык на этом ресурсе? http://www.codecademy.com/tracks/php?jump_to=5122aad24c3c8c46ad003d1f - заранее спасибо за внятный ответ
[Профиль]  [ЛС] 

smarios

Стаж: 15 лет 2 месяца

Сообщений: 33

smarios · 18-Янв-14 14:00 (спустя 3 месяца 12 дней)

Epsural писал(а):
61153126всем здрасьте - кто-ть из Сведущих может подсказать - имеет смысл изучать язык на этом ресурсе? http://www.codecademy.com/tracks/php?jump_to=5122aad24c3c8c46ad003d1f - заранее спасибо за внятный ответ
для ознакомления - сойдет, рекомендую. Но после этого нужно читать книги по Php и mysql
[Профиль]  [ЛС] 

Ninэль

Стаж: 14 лет 10 месяцев

Сообщений: 483

Ninэль · 29-Июн-14 22:08 (спустя 5 месяцев 11 дней)

ппц, ребята напишите имя автора без опечатки в названии...думаю, чего по поиску не пробивает
[Профиль]  [ЛС] 

fanklir

Стаж: 15 лет 7 месяцев

Сообщений: 124


fanklir · 30-Июн-14 02:26 (спустя 4 часа)

Какие учителя, такие и ученики
[Профиль]  [ЛС] 

boddahh

Стаж: 17 лет 7 месяцев

Сообщений: 25


boddahh · 02-Янв-15 20:21 (спустя 6 месяцев, ред. 02-Янв-15 20:21)

Кто-нибудь подскажите, пожалуйста, в чем проблема.
Урок 7.
Вроде сделал все как на видео. 10 раз перепроверил. Все равно, при наведении на ссылку "добавить в корзину", id товара не высвечивается (см. скрин http://i64.fastpic.ru/big/2015/0102/af/d96c33ede2476dda5ca4ba849ab6d6af.png ), а при переходе нажатии на "добавить в корзину" пишет "Warning: include(Z:/home/localhost/www/shop/views/pages/add_to_cart.php) [function.include]: failed to open stream: No such file or directory in Z:\home\localhost\www\shop\views\layouts\shop.php on line 35
Warning: include() [function.include]: Failed opening 'Z:/home/localhost/www/shop/views/pages/add_to_cart.php' for inclusion (include_path='.;C:\php\pear') in Z:\home\localhost\www\shop\views\layouts\shop.php on line 35"
Файл shop.php проверял, вроде все там нормально. По крайней мере, до 7-го урока с ним проблем не было.
Вот коды:
Файл cart_fns.php:
<?php
// Подключаем файл функции соединения с БД MySql:
include('db_fns.php');
// Функция сессии для корзины:
session_start();
// Три элемента сессии:
// Если элемент $_SESSION['cart'] отсутствует:
if(!isset($_SESSION['cart']))
{
// то $_SESSION['cart'] превращаем в пустой массив:
$_SESSION['cart'] = array();// 1-й элемент:
// Сколько всего товаров хранится в корзине (по умолчанию 0):
$_SESSION['total_items'] = 0;// 2-й элемент:
// На сколько всего денег хранится в корзине товаров (по умолчанию 0,00):
$_SESSION['total_price'] = '0.00';// 2-й элемент:
}
/*
Подключение отдельных страниц.
Если элемент массива GET['view'] пустой, то в переменную $view сохраняем значение 'index'. Если же элемент массива GET['view'] не пустой, то в переменную $view сохраняем любое значение,которое ввели в адресную строку:
*/
$view = empty($_GET['view']) ? 'index' : $_GET['view'];
// Вывод страниц при помощи конструкции switch (переключение):
/*Сравниваем значения case
со значением переменной $view:*/
switch($view)
{
case('index');
// Вызываем функцию get_products написанную в файле db_fns.php и помещаем ее в переменную $products (теперь в переменной $products у нас хранятся все продукты):
$products = get_products();
break;// Конец действия.
case('cat');
// Получаем из глобального массива $_GET элемент id и заносим его в переменную $cat:
$cat = $_GET['id'];
// Вызываем функцию get_cat_products написанную в файле db_fns.php, заносим в нее перемнную $cat и помещаем функцию в переменную $products (теперь в переменной $products у нас хранятся все продукты):
$products = get_cat_products($cat);
break;// Конец действия.
case('product');
// Заносим в глобальный массив $_GET id каждого отдельного товара и сохраняем в переменную $id:
$id = $_GET['id'];
// Вызываем функцию get_product из файла db_fns.php, в качестве праметра указываем $id, как и в db_fns.php и заносим в переменную $product:
$product = get_product($id);
break;// Конец действия.
case('cart');
break;// Конец действия.
// case('add_to_cart');
// Получаем из глобального массива $_GET элемент id и вызываем функцию add_to_cart:
// $id = $_GET['id'];
// Вызываем функцию add_to_cart из файла cart_fns.php, в качестве праметра указываем $id, как и в db_fns.php и заносим в переменную $add_item:
// $add_item = add_to_cart($id);
// Остаемся на этой же странице:
// header('location: index.php?view=product&id='.$id);
// break;// Конец действия.
}
// Подключение основного шаблона дизайна:
include($_SERVER['DOCUMENT_ROOT'].'/shop/views/layouts/shop.php');
?>
Файл product.php:
<!-- Таблица подробного вывода товара: -->
<table align="center" cellpadding="0" cellspacing="0" class="product" border="0">
<tr>
<td valign="top">
<!-- Блок с выводом картинок: -->
<div><a href="#"><img src="userfiles/<?=$product['image']/* тоже,что и <?php echo $product['image']?> */?>" alt="" /></a></div>
<div class="description">
<!-- Блок с выводом названий: -->
<div class="product-name"><a href="#"><?=$product['title']?></a></div>
<!-- Блок с выводом цен: -->
<div class="product-price">Цена: <?=$product['price']?> $</div>
</div>
</td>
<td valign="top" width="100">
<!-- Блок с выводом описания: -->
<div><?=$product['description']?></div>
<!-- Ссылка на функцию добавления в корзину товара по id из файла cart_fns.php: -->
<div><a href="index.php?view=add_to_cart&id=<? $product['id']?>">Добавить в корзину</a></div>
</td>
</tr>
</table>
Файл index.php:
<?php
// Подключаем файл функции соединения с БД MySql:
include('db_fns.php');
// Подключаем файл функции корзины:
//include('cart_fns.php');
// Функция сессии для корзины:
session_start();
// Три элемента сессии:
// Если элемент $_SESSION['cart'] отсутствует:
if(!isset($_SESSION['cart']))
{
// то $_SESSION['cart'] превращаем в пустой массив:
$_SESSION['cart'] = array();// 1-й элемент:
// Сколько всего товаров хранится в корзине (по умолчанию 0):
$_SESSION['total_items'] = 0;// 2-й элемент:
// На сколько всего денег хранится в корзине товаров (по умолчанию 0,00):
$_SESSION['total_price'] = '0.00';// 2-й элемент:
}
/*
Подключение отдельных страниц.
Если элемент массива GET['view'] пустой, то в переменную $view сохраняем значение 'index'. Если же элемент массива GET['view'] не пустой, то в переменную $view сохраняем любое значение,которое ввели в адресную строку:
*/
$view = empty($_GET['view']) ? 'index' : $_GET['view'];
// Вывод страниц при помощи конструкции switch (переключение):
/*Сравниваем значения case
со значением переменной $view:*/
switch($view)
{
case('index');
// Вызываем функцию get_products написанную в файле db_fns.php и помещаем ее в переменную $products (теперь в переменной $products у нас хранятся все продукты):
$products = get_products();
break;// Конец действия.
case('cat');
// Получаем из глобального массива $_GET элемент id и заносим его в переменную $cat:
$cat = $_GET['id'];
// Вызываем функцию get_cat_products написанную в файле db_fns.php, заносим в нее перемнную $cat и помещаем функцию в переменную $products (теперь в переменной $products у нас хранятся все продукты):
$products = get_cat_products($cat);
break;// Конец действия.
case('product');
// Заносим в глобальный массив $_GET id каждого отдельного товара и сохраняем в переменную $id:
$id = $_GET['id'];
// Вызываем функцию get_product из файла db_fns.php, в качестве праметра указываем $id, как и в db_fns.php и заносим в переменную $product:
$product = get_product($id);
break;// Конец действия.
case('cart');
break;// Конец действия.
}
// Подключение основного шаблона дизайна:
include($_SERVER['DOCUMENT_ROOT'].'/shop/views/layouts/shop.php');
?>
Файл shop.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="style/css.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Магазин</title>
</head>
<body>
<table align="center" width="900" cellpadding="0" cellspacing="0" border="0" id="main-table">
<tr>
<td>
<div id="header"></div>
<div id="menu">
<div><a href="index.php">Главная</a></div>
<!-- Категории товаров -->
<?
// Сохраняем результат работы функции get_cat написаной в файле db_fns.php, в переменную $categories:
$categories = get_cat();
// Циклом foreach проходим по всему массиву (вместо item можно писать любое слово):
foreach($categories as $item):
?>
<div><a href="index.php?view=cat&id=<?=$item['cat_id'];?>"><?=$item['name']/* тоже,что и <?php echo $item['image']?> */?></a></div>
<?endforeach;?>
<!-- Ссылка на корзину: -->
<div id="cart"><a href="index.php?view=cart">Ваша корзина</a> - $</div>
</div>
</td>
</tr>
<tr>
<td id="main-block" valign="top">
<!-- Подключение страниц через переменную $view: -->
<?php include($_SERVER['DOCUMENT_ROOT'].'/shop/views/pages/'.$view.'.php'); ?>
<div style="clear: both;"></div>
</td>
</tr>
<tr>
<td id="footer-td">
<div align="center">
<div class="footer">© mysite.com 2012</div>
</div>
</td>
</tr>
</table>
</body>
</html>
Если кто-нибудь подскажет, в чем и где моя ошибка, буду признателен.
Спасибо.
[Профиль]  [ЛС] 

not_error_404

Стаж: 10 лет 8 месяцев

Сообщений: 70

not_error_404 · 18-Янв-15 12:07 (спустя 15 дней)

boddahh
в файле product.php при динамическом формировании ссылки на добавляемый товар Вы допустили ошибку. У Вас написано
Код:
<div><?=$product['description']?></div>
<!-- Ссылка на функцию добавления в корзину товара по id из файла cart_fns.php: -->
<div><a href="index.php?view=add_to_cart&id=<? $product['id']?>">Добавить в корзину</a></div>
Вы банально пропустили равно <?= ?>, поэтому в ссылке id товара не генерируется. наверное опоздал с подсказкой. в эту тему сегодня первый раз попал
[Профиль]  [ЛС] 

boddahh

Стаж: 17 лет 7 месяцев

Сообщений: 25


boddahh · 20-Янв-15 05:47 (спустя 1 день 17 часов, ред. 20-Янв-15 05:47)

not_error_404 писал(а):
66570360boddahh
в файле product.php при динамическом формировании ссылки на добавляемый товар Вы допустили ошибку. У Вас написано
Код:
<div><?=$product['description']?></div>
<!-- Ссылка на функцию добавления в корзину товара по id из файла cart_fns.php: -->
<div><a href="index.php?view=add_to_cart&id=<? $product['id']?>">Добавить в корзину</a></div>
Вы банально пропустили равно <?= ?>, поэтому в ссылке id товара не генерируется. наверное опоздал с подсказкой. в эту тему сегодня первый раз попал
Да. Я уже сам это заметил. Но все равно спасибо.
Но у меня еще одна проблема.
При добавлении товара в корзину, над телом страницы появляется вот это:
"Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 6 in Z:\home\localhost\www\shop\cart_fns.php on line 77
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\shop\cart_fns.php:77) in Z:\home\localhost\www\shop\index.php on line 80"
а в теле страницы это:
Warning: include(Z:/home/localhost/www/shop/views/pages/update_cart.php) [function.include]: failed to open stream: No such file or directory in Z:\home\localhost\www\shop\views\layouts\shop.php on line 38
Warning: include() [function.include]: Failed opening 'Z:/home/localhost/www/shop/views/pages/update_cart.php' for inclusion (include_path='.;C:\php\pear') in Z:\home\localhost\www\shop\views\layouts\shop.php on line 38
Вот код файла cart_fns.php:
<?php // Файл функций корзины.
// Функция добавления в корзину товара по id:
function add_to_cart($id)
{// Если элемент $_SESSION['cart'] имеющий $id существует (если товар в корзине уже есть):
if(isset($_SESSION['cart'][$id]))
{ // то увеличиваем количество товара на 1:
$_SESSION['cart'][$id]++;
// и возвращаем фунции правду:
return true;
}
// Иначе (если товара в корзине еще нет):
else
{ // добавляем в корзине одну единицу товар:
$_SESSION['cart'][$id] = 1;
// и возвращаем фунции правду:
return true;
}
// Если ничего этого нет, то возвращаем лож:
return false;
}
// Функция обновления корзины:
function update_cart()
{
// Проходим по всему массиву сессии корзины:
foreach ($_SESSION['cart'] as $id => $qty)
{// Если пользователь выставил 0 в ячейке количества товара,
if($_POST[$id] == '0')
{// то сбрасываем товар с нужным id:
unset($_SESSION['cart'][$id]);
}// Иначе:
else
{// определяем товар по id b присваиваем ему значение выставленное пользователем:
$_SESSION['cart'][$id] = $_POST[$id];
}
}
}
// Функия посчета общего количества товаров в корзине:
function total_items($cart)// $cart - принимающий параметр.
{// Переменная хранящая общее число товаров лежащих в корзине:
$num_items = 0;
// Проверка:
// Если переменная $cart является массивом:
if(is_array($cart))
{// то вытаскиваем из нее колличество товаров:
foreach($cart as $id => $qty)
{// $num_items = число товаров + число новых товаров:
$num_items = $num_items + $qty;
// Тоже самое, но короче: $num_items += $qty;
}
}
// Возвращаем функции общее количество товаров в корзине:
return $num_items;
}
// Функия посчета общей цены товаров в корзине:
function total_price($cart)// $cart - принимающий параметр.
{// Переменная хранящая общую сумму цены товаров лежащих в корзине:
$total_price = 0.0;
// Функция подключения к БД:
db_connect();
// Проверка:
// Если переменная $cart является массивом:
if(is_array($cart))
{// то вытаскиваем из нее колличество товаров:
foreach($cart as $id => $qty)
{// Проходим по массиву и выбираем цену из таблицы products, где id равен $id товара и помещаем результат в переменную $query:
$query = "SELECT price FROM products WHERE id='$id'";
// Помещаем наш запрос $query в переменную $result. Точнее, помещаем теперь содержащую наш запрос переменную $query в сожержимое функции mysql_query, которую, в свою очередь, заносим в переменную $result:
$result = mysql_query($query);
// Проверка:
// Если результат есть (товары в корзине есть),
if($result)
{// Прибавляем цену товара ($item_price), получаемую при помощи (mysql_result) из массива, к общей сумме цены товаров в корзине ($total_price) и работаем с данными хранащимися в переменной $result, ячейкой таблицы products, начиная отсчет с нуля (0) и полем (price) таблицы products:
$item_price = mysql_result($result,0,'price');
// Общее число товаров в корзине ($total_price) это общее число товаров ($total_price) + цена нового товара ($item_price) умноженная на количество этого нового товара:
$total_price = $total_price + $item_price * $qty;
/* Тоже самое, но короче:
$total_price += $item_price * $qty; */
}
}
}
// Возвращаем функции общую цену товаров в корзине:
return $total_price;
}
?>
А вот файл shop.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link href="style/css.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Магазин</title>
</head>
<body>
<table align="center" width="900" cellpadding="0" cellspacing="0" border="0" id="main-table">
<tr>
<td>
<div id="header"></div>
<div id="menu">
<div><a href="index.php">Главная</a></div>
<!-- Категории товаров -->
<?
// Сохраняем результат работы функции get_cat написаной в файле db_fns.php, в переменную $categories:
$categories = get_cat();
// Циклом foreach проходим по всему массиву (вместо item можно писать любое слово):
foreach($categories as $item):
?>
<div><a href="index.php?view=cat&id=<?=$item['cat_id'];?>"><?=$item['name']/* тоже,что и <?php echo $item['image']?> */?></a></div>
<?endforeach;?>
<!-- Ссылка на корзину: -->
<!-- Вывод общего количества товаров и общей цены товаров в корзине: -->
<!-- $_SESSION['total_items'] - сессия общего количества товаров в корзине,$_SESSION['total_price']- сессия общегй цены товаров в корзине, прописанные в файле cart_fns.php
(number_format - функция расстановки запятых в числах. (,2) - количество символов после запятой)-->
<div id="cart"><a href="index.php?view=cart">Ваша корзина(<?=$_SESSION['total_items'];?>)</a> - <?=number_format($_SESSION['total_price'],2);?>$</div>
</div>
</td>
</tr>
<tr>
<td id="main-block" valign="top">
<!-- Подключение страниц через переменную $view: -->
<?php include($_SERVER['DOCUMENT_ROOT'].'/shop/views/pages/'.$view.'.php'); ?>
<div style="clear: both;"></div>
</td>
</tr>
<tr>
<td id="footer-td">
<div align="center">
<div class="footer">© mysite.com 2012</div>
</div>
</td>
</tr>
</table>
</body>
</html>
Куда копать, не подскажете?
Спасибо.
[Профиль]  [ЛС] 

Marley

Стаж: 19 лет 1 месяц

Сообщений: 303

Marley · 20-Янв-15 07:35 (спустя 1 час 47 мин., ред. 20-Янв-15 07:35)

Код:

Warning: include(Z:/home/localhost/www/shop/views/pages/update_cart.php) [function.include]: failed to open stream: No such file or directory in Z:\home\localhost\www\shop\views\layouts\shop.php on line 38
А чего символы слешей в разные стороны?
(Я под windows не работаю, может так и должно быть?)
В любом случае сообщение:
Код:

failed to open stream: No such file or directory
говорит о том, что по указанному пути он не может найти файл.
==============
Автор к курсу прилагает исходники.
Можно на сайте, вроде этого сравнить свой и рабочий код.
==============
P.S. Используйте github и давайте ссылки на ваш проект.
Или хотя бы оформляйте его в теги форума.
---
Курс по git
https://rutr.life/forum/viewtopic.php?t=4782388
[Профиль]  [ЛС] 

not_error_404

Стаж: 10 лет 8 месяцев

Сообщений: 70

not_error_404 · 20-Янв-15 13:20 (спустя 5 часов, ред. 20-Янв-15 13:20)

Посмотрите, откуда приходит переменная $view в фале shop.php, сомневаюсь, что у Вас в папках veiw/pages/ есть подключаемый файл update_cat.php - именно это приходит к Вам в $view. скорее всего где-то ошибка в GET запросе,который передает имя подключаемой страницы. а ошибка, которую высвечивает php говорит о том, что подключаемого файла не может найти. это по второй ошибке.
По первой ошибке с mysql Вам нужно проверить, что приходит в запросе на выборку данных из таблицы товаров, потому, что есть вероятность что ошибка произошла еще до запроса и $id приходит в запрос уже не тем значением, которое Вы ждете, пред отправкой $id в запрос, просто выведите его в браузер и посмотрите, есть ли он вобще. ситуация скорее всего такая, приходит в запрос $id, не тот, который нужен, по его значению происходит выборка, результат ошибки не дает, так как ничего просто не выбралось. и вы из этого пытаетесь mysql_result - ом вытащить что-то, чего нет... вот он и ругается. вобщем направление действий такое - отследите откуда приходит $view и все ли в порядке с вашим $id по которому вы выбираете товары из базы. простите, после ночного дежурства сейчас, поэтому самому отследить все лень и голова не варит. а направление деятельности по розыску ошибок я Вам дал
[Профиль]  [ЛС] 

boddahh

Стаж: 17 лет 7 месяцев

Сообщений: 25


boddahh · 20-Янв-15 18:58 (спустя 5 часов)

not_error_404, я не понимаю, где Вы нашли у меня упоминание в коде update_cat.php?
"Посмотрите, откуда приходит переменная $view в фале shop.php" - где это посмотреть?
Простите, я только учусь.)
[Профиль]  [ЛС] 

not_error_404

Стаж: 10 лет 8 месяцев

Сообщений: 70

not_error_404 · 20-Янв-15 19:26 (спустя 28 мин., ред. 20-Янв-15 19:26)

boddahh
update_cart.php - это из ошибки, которую Вам выдал интерпретатор, он пытается подключить Вам этот файл.то есть при входе в корзину, вы подключаете содержание страницы, которого нет. строка 38 в коде вашей страницы shop.php как раз подключает этот кусок кода. там точно должно быть $view a не $_GET['view']? а чтобы победить ошибку с mysql напишите в функции total_price перед запросом к базе строчку echo '$id ='.$id; exit; посмотрите, есть ли у вас $id, чтобы делать выборку из базы. курс я не смотрел, поэтому мне тоже не просто с наскоку разобраться в вашей проблеме. в будущем, обрамляйте код тегами code. очень тяжело читать
какие файлы лежат у Вас в папке views/pages/ ? там есть файл update_cart.php?
А вобще, посмотрите код страницы index.php, там скорее всего switch какой-нибудь, вот там где будет case 'cart': include что-то, посмотрите, чтобы из папки view/pages/ подключался файл шаблона, который называется cart.php(если он есть среди файлов в этой папке)
да, скорее всего в index.php у вас после case 'cart': идет подключение файла или определение переменной $view, так вот посмотрите, какое значение присваивается этой переменной и соответствует ли оно имени файла шаблона корзины в папках views/pages/
[Профиль]  [ЛС] 

boddahh

Стаж: 17 лет 7 месяцев

Сообщений: 25


boddahh · 20-Янв-15 19:56 (спустя 29 мин., ред. 20-Янв-15 20:19)

[quote="а чтобы победить ошибку с mysql напишите в функции total_price перед запросом к базе строчку echo '$id ='.$id; exit; посмотрите, есть ли у вас $id, чтобы делать выборку из базы.Сделал. Вот, что выводится при добавлении товара в корзину: (см. скрин).
http://i63.fastpic.ru/big/2015/0120/18/4fe1e6a04190a987e07165289dc7ee18.png
"какие файлы лежат у Вас в папке views/pages/ ? там есть файл update_cart.php?" - нет.
"А вобще, посмотрите код страницы index.php, там скорее всего switch какой-нибудь, вот там где будет case 'cart': include что-то, посмотрите, чтобы из папки view/pages/ подключался файл шаблона, который называется cart.php(если он есть среди файлов в этой папке)" - вот все кейсы:
Код:
// Вывод страниц при помощи конструкции switch (переключение):
/*Сравниваем значения case
со значением переменной $view:*/
switch($view)
{
    case('index'):
     // Вызываем функцию get_products написанную в файле db_fns.php и помещаем ее в переменную $products (теперь в переменной $products у нас хранятся все продукты):
    $products = get_products();
    break;// Конец действия.
    case('cat'):
    // Получаем из глобального массива $_GET элемент id     и заносим его в переменную $cat:
     $cat = $_GET['id'];
// Вызываем функцию get_cat_products написанную в файле db_fns.php, заносим в нее перемнную $cat и помещаем функцию в переменную $products (теперь в переменной $products у нас хранятся все продукты):
    $products = get_cat_products($cat);
    break;// Конец действия.
    case('product'):
    // Заносим в глобальный массив $_GET id каждого отдельного товара и сохраняем в переменную $id:
    $id = $_GET['id'];
    // Вызываем функцию get_product из файла db_fns.php, в качестве праметра указываем $id, как и в db_fns.php и заносим в переменную $product:
    $product = get_product($id);
    break;// Конец действия.
    // Кейс добавления в корзину:
      case('add_to_cart'):
        // Получаем из глобального массива $_GET элемент id     и вызываем функцию add_to_cart:
      $id = $_GET['id'];
        // Вызываем функцию add_to_cart из файла cart_fns.php, в качестве праметра указываем $id, как и в db_fns.php и заносим в переменную $add_item:
        $add_item = add_to_cart($id);
        // Общее количество товаров в корзине:
// Элемент сессии total_items равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_items'] = total_items( $_SESSION['cart']);
    // Общая сумма товаров в корзине:
// Элемент сессии total_price равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_price'] = total_price( $_SESSION['cart']);
        // Остаемся на этой же странице:
       header('location: index.php?view=product&id='.$id);
        break;// Конец действия.
    // Кейс обновления корзины:
    case('update_cart'):
    // Вызываем функцию update_cart, прописанную в файле cart_fns.php:
        update_cart();
        // Общее количество товаров в корзине:
// Элемент сессии total_items равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_items'] = total_items( $_SESSION['cart']);
    // Общая сумма товаров в корзине:
// Элемент сессии total_price равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_price'] = total_price( $_SESSION['cart']);
    // Остаемся на этой же странице:
       header('location: index.php?view=cart');
    break;// Конец действия.
}
[quote="да, скорее всего в index.php у вас после case 'cart': идет подключение файла или определение переменной $view, так вот посмотрите, какое значение присваивается этой переменной и соответствует ли оно имени файла шаблона корзины в папках views/pages/- case 'cart' у меня нет.
[Профиль]  [ЛС] 

not_error_404

Стаж: 10 лет 8 месяцев

Сообщений: 70

not_error_404 · 20-Янв-15 20:09 (спустя 13 мин.)

Вы не понимаете того, что все ваше приложение состоит из кусков, которые разбросаны по папкам, Вы подключаете эти куски и получаете результирующую страницу. в переменной $view лежит имя куска, который является страницей. конкретном случае в этой переменной оказалось значение имени куска, который интерпретатор не может найти... выдает ошибку подключения файла. эта переменная $view, где-то у вас создается, создается она из запроса $_GET['view'], который получается из ссылок(так неправильно но проще к пониманию), например index.php?view=cart- это значит что на страницу index.php вы послали $_GET['view'], которая равна 'cart', Вам нужно посмотреть, как этот $_GET['view'] принимается на index.php и как потом сохраняется в $view,предполагаю, что проблема в том, что $view для страницы корзины, определяется с ошибкой. еще раз, какие файлы лежат у Вас в папке views/pages/ и каков код index.php?
[Профиль]  [ЛС] 

boddahh

Стаж: 17 лет 7 месяцев

Сообщений: 25


boddahh · 20-Янв-15 20:22 (спустя 13 мин.)

not_error_404 писал(а):
66597988Вы не понимаете того, что все ваше приложение состоит из кусков, которые разбросаны по папкам, Вы подключаете эти куски и получаете результирующую страницу. в переменной $view лежит имя куска, который является страницей. конкретном случае в этой переменной оказалось значение имени куска, который интерпретатор не может найти... выдает ошибку подключения файла. эта переменная $view, где-то у вас создается, создается она из запроса $_GET['view'], который получается из ссылок(так неправильно но проще к пониманию), например index.php?view=cart- это значит что на страницу index.php вы послали $_GET['view'], которая равна 'cart', Вам нужно посмотреть, как этот $_GET['view'] принимается на index.php и как потом сохраняется в $view,предполагаю, что проблема в том, что $view для страницы корзины, определяется с ошибкой. еще раз, какие файлы лежат у Вас в папке views/pages/ и каков код index.php?
в папке views/pages/ лежат файлы: cart.php, cat.php, index.php и product.php .
Вот код index.php:
Код:
<?php
// Подключаем файл функции соединения с БД MySql:
include('db_fns.php');
// Подключаем файл функции корзины:
include('cart_fns.php');
// Функция сессии для корзины:
session_start();
// Три элемента сессии:
// Если элемент $_SESSION['cart'] отсутствует:
if(!isset($_SESSION['cart']))
{
// то $_SESSION['cart'] превращаем в пустой массив - 1-й элемент - пустой массив:
    $_SESSION['cart'] = array();
// 2-й элемент - cколько всего товаров хранится в корзине (по умолчанию 0):
    $_SESSION['total_items'] = 0;
// 3-й элемент - на сколько всего денег хранится в корзине товаров (по умолчанию 0,00):
    $_SESSION['total_price'] = '0.00';
}
/*
Подключение отдельных страниц.
Если элемент массива GET['view'] пустой, то в переменную $view сохраняем значение 'index'. Если же элемент массива GET['view'] не пустой, то в переменную $view сохраняем любое значение,которое ввели в адресную строку:
*/
$view = empty($_GET['view']) ? 'index' : $_GET['view'];
// Вывод страниц при помощи конструкции switch (переключение):
/*Сравниваем значения case
со значением переменной $view:*/
switch($view)
{
    case('index'):
     // Вызываем функцию get_products написанную в файле db_fns.php и помещаем ее в переменную $products (теперь в переменной $products у нас хранятся все продукты):
    $products = get_products();
    break;// Конец действия.
    case('cat'):
    // Получаем из глобального массива $_GET элемент id     и заносим его в переменную $cat:
     $cat = $_GET['id'];
// Вызываем функцию get_cat_products написанную в файле db_fns.php, заносим в нее перемнную $cat и помещаем функцию в переменную $products (теперь в переменной $products у нас хранятся все продукты):
    $products = get_cat_products($cat);
    break;// Конец действия.
    case('product'):
    // Заносим в глобальный массив $_GET id каждого отдельного товара и сохраняем в переменную $id:
    $id = $_GET['id'];
    // Вызываем функцию get_product из файла db_fns.php, в качестве праметра указываем $id, как и в db_fns.php и заносим в переменную $product:
    $product = get_product($id);
    break;// Конец действия.
    // Кейс добавления в корзину:
      case('add_to_cart'):
        // Получаем из глобального массива $_GET элемент id     и вызываем функцию add_to_cart:
      $id = $_GET['id'];
        // Вызываем функцию add_to_cart из файла cart_fns.php, в качестве праметра указываем $id, как и в db_fns.php и заносим в переменную $add_item:
        $add_item = add_to_cart($id);
        // Общее количество товаров в корзине:
// Элемент сессии total_items равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_items'] = total_items( $_SESSION['cart']);
    // Общая сумма товаров в корзине:
// Элемент сессии total_price равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_price'] = total_price( $_SESSION['cart']);
        // Остаемся на этой же странице:
       header('location: index.php?view=product&id='.$id);
        break;// Конец действия.
    // Кейс обновления корзины:
    case('update_cart'):
    // Вызываем функцию update_cart, прописанную в файле cart_fns.php:
        update_cart();
        // Общее количество товаров в корзине:
// Элемент сессии total_items равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_items'] = total_items( $_SESSION['cart']);
    // Общая сумма товаров в корзине:
// Элемент сессии total_price равен значению массива cart функции total_items, написаной в файле cart.php:
    $_SESSION['total_price'] = total_price( $_SESSION['cart']);
    // Остаемся на этой же странице:
       header('location: index.php?view=cart');
    break;// Конец действия.
}
// Защита от белиберды вводимой пользователем в адресную строку:
// Создаем массив array с возможными значениями (в скобках и индивидуальных кавычках через запятую)для переменной $view и заносим в переменную $arr:
$arr = array('index', 'cat', 'product', 'cart', 'add_to_cart', 'update_cart');
// Если в переменных $view и $arr массива in_array белиберды вводимой пользователем нет (т.е. идем от обратного), точнее говоря, если в переменные $view и $arr массива in_array попадает что-то, кроме ('index', 'cat', 'product', 'cart', 'add_to_cart', 'update_cart'),
if(!in_array($view,$arr))
// то закнчиваем die работу скрипта:
die("ERROR 404!");
// Подключение основного шаблона дизайна:
include($_SERVER['DOCUMENT_ROOT'].'/shop/views/layouts/shop.php');
?>
[Профиль]  [ЛС] 

not_error_404

Стаж: 10 лет 8 месяцев

Сообщений: 70

not_error_404 · 20-Янв-15 20:28 (спустя 5 мин.)

Вот, с $id уже понятно. значит Вам приходит пустой id- это причина ошибки mysql_result, теперь двигайтесь вверх по цепочке, $id в этой функции берется из массива.теперь перед foreach напишите echo "<pre>";print_r($cart); посмотрите, есть ли элементы в массиве и так двигайтесь по просмотрам содержания своих переменных и массивов, пока не придете к функции, где они формируются, оттуда и будет идти ошибка. сложность в том, что ошибка логическая
[Профиль]  [ЛС] 

boddahh

Стаж: 17 лет 7 месяцев

Сообщений: 25


boddahh · 20-Янв-15 20:37 (спустя 8 мин., ред. 20-Янв-15 20:37)

not_error_404 писал(а):
66598229Вот, с $id уже понятно. значит Вам приходит пустой id- это причина ошибки mysql_result, теперь двигайтесь вверх по цепочке, $id в этой функции берется из массива.теперь перед foreach напишите echo "<pre>";print_r($cart); посмотрите, есть ли элементы в массиве и так двигайтесь по просмотрам содержания своих переменных и массивов, пока не придете к функции, где они формируются, оттуда и будет идти ошибка. сложность в том, что ошибка логическая
Ок. Убрал echo '$id ='.$id; exit; Написал как Вы сказали:
Код:
// Функия посчета общей цены товаров в корзине:
    function total_price($cart)// $cart - принимающий параметр.
    {// Переменная хранящая общую сумму цены товаров лежащих в корзине:
        $total_price = 0.0;
        // Функция подключения к БД:
        db_connect();
        // Проверка:
        // Если переменная $cart является массивом:
        if(is_array($cart))
        {// то вытаскиваем из нее колличество товаров:
            echo "<pre>";print_r($cart); foreach($cart as $id => $qty)
Вот, что выдает:
http://i66.fastpic.ru/big/2015/0120/c6/80f102260c7d18750962d65356d33fc6.png
[Профиль]  [ЛС] 

not_error_404

Стаж: 10 лет 8 месяцев

Сообщений: 70

not_error_404 · 20-Янв-15 20:37 (спустя 45 сек.)

отлично. где у вас в switche case(cart) ?
Код:
<div id="cart"><a href="index.php?view=cart">Ваша корзина(<?=$_SESSION['total_items'];?>)</a> - <?=number_format($_SESSION['total_price'],2);?>$</div>
в файле shop.php вы отправляете veiw=cart, но в switch обработки такой переменной нет.или вы ее пропустили или автор курса еще не дошел до ее написания в switch. отсюда и ошибка
[Профиль]  [ЛС] 

stransh

Стаж: 17 лет 5 месяцев

Сообщений: 67


stransh · 20-Янв-15 20:54 (спустя 16 мин.)

вы бы прятали эти простыни под спойлер
[Профиль]  [ЛС] 

boddahh

Стаж: 17 лет 7 месяцев

Сообщений: 25


boddahh · 20-Янв-15 21:07 (спустя 13 мин., ред. 20-Янв-15 21:07)

not_error_404 писал(а):
66598339отлично. где у вас в switche case(cart) ?
Ок. добавил в switch($view)
Код:
case('cart'):
    break;
Все равно, при добавлении товара в корзину, выдает: http://i65.fastpic.ru/big/2015/0120/ca/96c92df9440d057abe5621e5dbc6faca.png
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error