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).
Помогите разобраться.
DimasikYes
Новичок
Дата регистрации:
01.09.2014 15:40:54
Сообщений: 10
В принципе понял, то что нет такого столбца (activ) в таблице. А как избежать этой ошибки, без проверки по БД поля activ, все таки у меня это подключаемые динамические шаблоны.
Конечно, можно просто добавить пустую строку - active, все будет работать, но это не правильно так избежать ошибку.
fabrigas201
Продвинутый
Дата регистрации:
20.01.2012 13:08:31
Сообщений: 59
Получается для шаблонов создаете новое поле в базе.
А не легче создать оно поле и туда записывать активный шаблон. Ну если вам нужно хранить все шаблоны в базе. то создайте отдельную таблицу для этого.
DimasikYes
Новичок
Дата регистрации:
01.09.2014 15:40:54
Сообщений: 10
А в первом сообщении программный код оптимальный? Не будет нагружать сервер? При том что создам поле в БД activ.
DimasikYes
Новичок
Дата регистрации:
01.09.2014 15:40:54
Сообщений: 10
И да в этих полях забыл сказать, только выбирается либо 0 либо 1. То есть либо товар отображать на сайте либо нет.
fabrigas201
Продвинутый
Дата регистрации:
20.01.2012 13:08:31
Сообщений: 59
тут я понял идет статус товара. ТО я делал так, создавал поле satus и туда писал так например
1 - продан
2 -новый
3 - хит продаж
и так далее
0 -без статуса
Это конечно при условии, что к товару нельзя применить больше одного статуса. Обычно это и не надо
Создавать лишние поля, тоже не хорошо,, если конечно без них нельзя обойтись
Но для функции, отображать товар или нет, думаю нужно создать поле, у вас например это activ но для остального одного достаточно
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). Остается мне написать условие правильно.
DimasikYes
Новичок
Дата регистрации:
01.09.2014 15:40:54
Сообщений: 10
Забыл, у меня есть поле visible в таблице, если там поставишь 0, то товар не будет отображаться. Вот можно как то задать условие для него, что если 0 то, показать что нет в наличии.
WHERE visible='1' AND $eyestopper='1'";
fabrigas201
Продвинутый
Дата регистрации:
20.01.2012 13:08:31
Сообщений: 59
Убрать условие visible в запросе, а потом просто с помощью if проверять чему равно visible
DimasikYes
Новичок
Дата регистрации:
01.09.2014 15:40:54
Сообщений: 10
Это да, я выше и написал, только не указал, что условие visible убрать. А что писать в кавычках if?
Я это и не могу выполнить(