У Вас должен быть еще один файл (или три) для вывода всех товаров по категориям. Мы ведь о нем говорим? Или Вы уже про вывод конкретного товара?
я думал можно сделать что будет одна страница page.php на которую будет перебрасывать с indexного файла где есть три категории товаров и в каждом по 4 пазиции
@jordan3216, можно и так. Тогда Вам надо делать проверку GET PHP: if(isset($_GET['page'])) { // показать один товар } else { // показать все товары }
А что в строке 2 ? Это тот код, что я Вам написал с условием? Так там я скобку одну круглую не дописал)))
проблема в том что тот код что Вы мне дали он рабочий но работает он с первой категорией. Я его подставил ко второй категории он начал работать и потом перестал хотя я в нем ничего после не менял
В чем выражается "перестал"? Пустая страница? Ошибка 500? Если что-то сломалось - в логах сервера (явно не БД) надо смотреть ошибки. В тот раз Вы мне на этот же вопрос показали логи работы скрипта page.php и сам скрипт, хотя в нем не было 2й категории товаров. Может он перестал работать, когда Вы перешли по ссылке с popular.php на page.php?
@jordan3216, мне кажется Вам стоит разобраться самому. Не так уж все и сложно. Опыт получите бесценный. Возможно найдете пути оптимизации Вашего приложения.
Кажется я разобрался в чем была проблема PHP: <?php include($_SERVER['DOCUMENT_ROOT'].'/connect.php'); $popular = $pdo->prepare('SELECT * FROM `sb6.5` WHERE `id` = ?'); $popular = $pdo->prepare('SELECT * FROM `sb10` WHERE `id` = ?');------ Вот этого запроса не хватало. $popular->execute( [$page] ); $result = $popular->fetchAll(); foreach ($result as $value) { $img = $value['img']; $price = $value['price']; $name = $value['name']; $col = $value['color']; $text = $value['text']; ?>
@jordan3216, только если Вы три запроса в одном скрипте будете выполнять - разные имена переменным сделайте.
что то вроде этого? PHP: $popular1 = $pdo->prepare('SELECT * FROM `sb6.5` WHERE `id` = ?'); $popular1->execute( [$page] ); $result = $popular1->fetchAll(); $popular2 = $pdo->prepare('SELECT * FROM `sb10` WHERE `id` = ?'); $popular2->execute( [$page] ); $result = $popular2->fetchAll(); $popular3 = $pdo->prepare('SELECT * FROM `sb10.5` WHERE `id` = ?'); $popular3->execute( [$page] ); $result = $popular3->fetchAll(); --- Добавлено --- кажется нет чтто то не так. не работает пустую страницу выдает
@jordan3216, result1, result2, result3 Может пора объединить таблицы в одну, добавив еще одно поле с категорией? И почему у Вас WHERE id условие прописано? Вы ведь все товары выводите, а не один
Вы слишком сильно усложняете себе задачу. Берете скрипт, что я Вам написал, немного унифицируете его и записываете в файл, например, category.php: PHP: <?php $popular = $pdo->prepare($query); $popular->execute(); $result = $popular->fetchall(); $group = ''; foreach ($result as $value) { $group .= strtr($tovar, ['%id%' => $value['id'], '%src%' => $value['img']]); } echo str_replace('%tovar%', $group, $category); А в файле page.php пишете: PHP: require($_SERVER['DOCUMENT_ROOT'].'/connect.php'); $tovar = '<a href="/page.php?page=%id%"><div class="bike"> <img src="%src%"><div class="bike-cost"> <div class="bike-mdl"> <h4>Smart Balance</h4> </div> <div class="bike-cart"> <a class="buy" href="/page.php?page=%id%">Купить</a></div> <div class="clearfix"></div> </div> <div class="fast-viw"> <a href="/page.php?page=%id%">Подробнее</a> </div> </div></a>'; $category = '<a id="catalog"></a><div class="bikes"> <div class="mountain-sec"> <center><h1>Популярное</h1></center><br> <h2>SMART BALANCE 6.5</h2>%tovar%<div class="clearfix"></div></div></div>'; $query = 'SELECT `id`, `img` FROM `sb6.5`'; include 'category.php'; $query = 'SELECT `id`, `img` FROM `sb10`'; include 'category.php'; $query = 'SELECT `id`, `img` FROM `sb10.5`'; include 'category.php';
Неустранимая ошибка : исключить исключение «PDOException» с сообщением «SQLSTATE [42000]: ошибка синтаксиса или нарушение доступа: 1065 Query was empty» в D: \ OpenServer \ domains \ topgiro.ru \ Popular.php: 50 Трассировка стека: # 0 D : \ OpenServer \ domains \ topgiro.ru \ Popular.php (50): PDO-> prepare ('') # 1 D: \ OpenServer \ domains \ topgiro.ru \ index.php (53): include ('D: \\ OpenServer \\ d ... ') # 2 {main} брошен в D: \ OpenServer \ domains \ topgiro.ru \ Popular.php в строке 50
я чуть криво поставил этот код. я разобрался что к чему. он вытягивает мне все 3 категории но имя у них одинаковое и над каждым надпись популярное
А где должна быть надпись "популярное"? page.php PHP: require($_SERVER['DOCUMENT_ROOT'].'/connect.php'); $tovar = '<a href="/page.php?page=%id%"><div class="bike"> <img src="%src%"><div class="bike-cost"> <div class="bike-mdl"> <h4>Smart Balance</h4> </div> <div class="bike-cart"> <a class="buy" href="/page.php?page=%id%">Купить</a></div> <div class="clearfix"></div> </div> <div class="fast-viw"> <a href="/page.php?page=%id%">Подробнее</a> </div> </div></a>'; $category = '<br> <h2>%name%</h2>%tovar%<div class="clearfix"></div>'; echo '<a id="catalog"></a><div class="bikes"> <div class="mountain-sec"> <center><h1>Популярное</h1></center>'; $query = 'SELECT `id`, `img` FROM `sb6.5`'; $name = 'SMART BALANCE 6.5'; include 'category.php'; $query = 'SELECT `id`, `img` FROM `sb10`'; $name = 'SMART BALANCE 10'; include 'category.php'; $query = 'SELECT `id`, `img` FROM `sb10.5`'; $name = 'SMART BALANCE 10.5'; include 'category.php'; echo '</div></div>'; popular.php PHP: <?php $popular = $pdo->prepare($query); $popular->execute(); $result = $popular->fetchall(); $group = ''; foreach ($result as $value) { $group .= strtr($tovar, ['%id%' => $value['id'], '%src%' => $value['img']]); } echo strtr($category, ['%tovar%' => $group, '%name%' => $name]);
Надпись "Популярное" находится только над Smart Balance 6.5. начало происходить что то невообразимое и я откатил все назад. до первоночальной версии Вашего кода
@jordan3216, скопируйте последний вариант и покажите что происходит. Только не забудьте поменять имя файла category.php на popular.php. Я чего-то не обратил внимания.