<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

Ошибочка
01.09.2014 21:13:15 Ошибочка Сообщение #1
DimasikYes

DimasikYes

Новичок

Новичок

Дата регистрации:
01.09.2014 15:40:54

Сообщений: 10

Добрый вечер!

$connection = @mysqli_connect(HOST, USER, PASS, DB) or die("Нет соединения с БД";
mysqli_set_charset($connection, "utf8" or die("Не установлена кодировка соединения";
function eyestopper($eyestopper, $connection){
$query = "SELECT goods_id, name, img, price FROM goods
WHERE visible='1' AND $eyestopper='1'";
$res = mysqli_query($connection, $query) or die(mysqli_error($connection));
 
$eyestoppers = array();
while($row = mysqli_fetch_assoc($res)){
  $eyestoppers[] = $row;
}
 
return $eyestoppers;
}
$view = empty($_GET['view']) ? 'activ' : $_GET['view'];

switch($view){
case('hits':
  // лидеры продаж
  $eyestoppers = eyestopper('hits', $connection);
break;
 
case('new':
  // новинки
  $eyestoppers = eyestopper('new', $connection);
break;
 
case('sale':
  // распродажа
  $eyestoppers = eyestopper('sale', $connection);
break;
  
default:
  // если из адресной строки получено имя несуществующего вида
  $view = 'activ';
  $eyestoppers = eyestopper('activ', $connection);
}

Ошибка выходит: Unknown column 'activ' in 'where clause'
hits, new, sale, activ - это у меня шаблоны. Что интересно, если прописать любое из трех (hits, new, sale), например: 
default:
  // если из адресной строки получено имя несуществующего вида
  $view = 'hits';
  $eyestoppers = eyestopper('hits', $connection);
то ошибки не выйдет, а все эти 4 файла одинаковые по структуре (hits, new, sale, activ).
Помогите разобраться.
Профиль
01.09.2014 21:56:27 Ошибочка Сообщение #2
DimasikYes

DimasikYes

Новичок

Новичок

Дата регистрации:
01.09.2014 15:40:54

Сообщений: 10

В принципе понял, то что нет такого столбца (activ) в таблице. А как избежать этой ошибки, без проверки по БД поля activ, все таки у меня это подключаемые динамические шаблоны.
Конечно, можно просто добавить пустую строку - active, все будет работать, но это не правильно так избежать ошибку.
Профиль
02.09.2014 20:50:01 Ошибочка Сообщение #3
fabrigas201

fabrigas201

Продвинутый

Продвинутый

Дата регистрации:
20.01.2012 13:08:31

Сообщений: 59

Получается для шаблонов создаете новое поле в базе.
А не легче создать оно поле и туда записывать активный шаблон. Ну если вам нужно хранить все шаблоны в базе. то создайте отдельную таблицу для этого. 
Профиль
02.09.2014 20:58:19 Ошибочка Сообщение #4
DimasikYes

DimasikYes

Новичок

Новичок

Дата регистрации:
01.09.2014 15:40:54

Сообщений: 10

А в первом сообщении программный код оптимальный? Не будет нагружать сервер? При том что создам поле в БД activ.
Профиль
02.09.2014 21:00:32 Ошибочка Сообщение #5
DimasikYes

DimasikYes

Новичок

Новичок

Дата регистрации:
01.09.2014 15:40:54

Сообщений: 10

И да в этих полях забыл сказать, только выбирается либо 0 либо 1. То есть либо товар отображать на сайте либо нет.
Профиль
02.09.2014 21:08:16 Ошибочка Сообщение #6
fabrigas201

fabrigas201

Продвинутый

Продвинутый

Дата регистрации:
20.01.2012 13:08:31

Сообщений: 59

тут я понял идет статус товара. ТО я делал так, создавал поле satus и туда писал  так например
1 - продан
2 -новый
3 - хит продаж
и так далее
0 -без статуса

Это конечно при условии, что к товару нельзя применить больше одного статуса. Обычно это и не надо

Создавать лишние поля, тоже не хорошо,, если конечно без них нельзя обойтись

Но для функции, отображать товар или нет, думаю нужно создать поле, у вас например это activ но для остального одного достаточно
Профиль
02.09.2014 22:36:24 Ошибочка Сообщение #7
DimasikYes

DimasikYes

Новичок

Новичок

Дата регистрации:
01.09.2014 15:40:54

Сообщений: 10

Сейчас посидел подумал, но не получается. Что именно: подскажите пожалуйста, а как то можно по первому моему сообщению сделать условие, что если нет товара в наличии, это показать (нет в наличии), если можно то как, Спасибо за то, что помогаете!)

Это на вывод товаров:
<div class="catalog-index">
<h1>Новинки</h1>
<?php if($eyestoppers): ?>
                      <?php foreach($eyestoppers as $eyestopper): ?>
                      <div class="product-index">
                   <h2><a href="?view=product&goods_id=<?=$eyestopper['goods_id']?>"><?=$eyestopper['name']?></a></h2>
                   <a href="?view=product&goods_id=<?=$eyestopper['goods_id']?>"><img src="<?=TEMPLATE?>images/<?=$eyestopper['img']?>" alt="" /></a>
                   <p>Цена :  <span><?=$eyestopper['price']?> р.</span></p>
                   <a href="?view=addtocart&goods_id=<?=$eyestopper['goods_id']?>"><img class="addtocard-index" src="<?=TEMPLATE?>images/addcard-index.jpg" alt="Добавить в карзину" /></a>
                      </div>
                      <?php endforeach; ?>
                     <?php else: ?>
                         <p style="margin: 0 0 0 60px;">Здесь товаров пока нет!</p>
                 <?php endif; ?>
</div>
То есть я создаю поле с любым названием, где будет стоять отметка, если нет в наличии ( то допустим поставить 0). Остается мне написать условие правильно.
Профиль
02.09.2014 22:43:46 Ошибочка Сообщение #8
DimasikYes

DimasikYes

Новичок

Новичок

Дата регистрации:
01.09.2014 15:40:54

Сообщений: 10

Забыл, у меня есть поле visible в таблице, если там поставишь 0, то товар не будет отображаться. Вот можно как то задать условие для него, что если 0 то, показать что нет в наличии.
WHERE visible='1' AND $eyestopper='1'";
Профиль
03.09.2014 12:09:06 Ошибочка Сообщение #9
fabrigas201

fabrigas201

Продвинутый

Продвинутый

Дата регистрации:
20.01.2012 13:08:31

Сообщений: 59

Убрать условие visible в запросе, а потом просто с помощью if  проверять чему равно visible
Профиль
03.09.2014 16:29:21 Ошибочка Сообщение #10
DimasikYes

DimasikYes

Новичок

Новичок

Дата регистрации:
01.09.2014 15:40:54

Сообщений: 10

Это да, я выше и написал, только не указал, что условие visible убрать. А что писать в кавычках if?
Я это и не могу выполнить(
Профиль