Подскажите пожалуйста в чем тут ошибка. PHP: $popular = $pdo->prepare('SELECT * FROM `sb6.5`'); $popular->execute(); $result = $popular->fetchall(); foreach ($result as $value) { $id = $value['id']; ?> Есть 3 категории товаров В каждой категории 4 товара и вместо того что бы на каждом товаре была своя ссылка он дублирует эту категорию и присваивает первому товару новую ссылку ____________________________________________ 1 категория Товар 1 | Товар 2 | Товар 3 | Товар 4 -Должно быть вот так page=1 | page=2 | page=3 | page=4 _________________________________________ 1 категория Товар 1 | Товар 2 | Товар 3 | Товар 4 page=2 | page=2 | page=2 | page=2 __________________________________________ 1 категория Товар 1 | Товар 2 | Товар 3 | Товар 4 Эти лишнии page=3 | page=3 | page=3 | page=3 __________________________________________ 1 категория Товар 1 | Товар 2 | Товар 3 | Товар 4 page=4 | page=4 | page=4 | page=4 PHP: <?php } ?> 2 категория 3 категория
оформление кода https://php.ru/forum/threads/tipichnyj-dialog-s-novichkom.59596/#post-527225 --- Добавлено --- отладка/debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550
@jordan3216, тот код, в котором у Вас ошибка Вы и не показали. Как я понял, foreach в каждой итерации дает один товар, а Вам надо 4. Ошибка внутри цикла.
PHP: <?php include($_SERVER['DOCUMENT_ROOT'].'/connect.php'); // $id = 1; $popular = $pdo->prepare('SELECT `id`, `img` FROM `sb6.5`'); $popular->execute(); $result = $popular->fetchall(); foreach ($result as $value) { $id = $value['id']; ?> <a id="catalog"></a> <!--Товар 1--> <div class="bikes"> <div class="mountain-sec"> <center><h1>Популярное</h1></center> <br> <h2>SMART BALANCE 6.5</h2> <a href="/page.php?page=<?php echo $id; ?>"><div class="bike"> <!-- <img src="images/bik3.jpg" alt=""/> --> <img src="<?=$value['img']; ?>" /> <div class="bike-cost"> <div class="bike-mdl"> <h4>Smart Balance</h4> </div> <div class="bike-cart"> <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a> <!-- <a class="buy" href="page.php?page={$tovar}">Купить</a> --> </div> <div class="clearfix"></div> </div> <div class="fast-viw"> <a href="/page.php?page=<?php echo $id; ?>">Подробнее</a> </div> </div></a> <a href="/page.php?page=<?php echo $id; ?>"><div class="bike"> <img src="images/bik1.jpg" alt=""/> <!-- Товар 1 конец --> <div class="bike-cost"> <div class="bike-mdl"> <h4>Smart Balance</h4> </div> <div class="bike-cart"> <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a> </div> <div class="clearfix"></div> </div> <div class="fast-viw"> <a href="/page.php?page=<?php echo $id; ?>"">Подробнее</a> </div> </div></a> <a href="/page.php?page=<?php echo $id; ?>"><div class="bike none2"> <img src="images/bik4.jpg" alt=""/> <div class="bike-cost"> <div class="bike-mdl"> <h4>Smart Balance</h4> </div> <div class="bike-cart"> <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a> </div> <div class="clearfix"></div> </div> <div class="fast-viw"> <a href="/page.php?page=<?php echo $id; ?>">Подробнее</a> </div> </div></a> <a href="/page.php?page=<?php echo $id; ?>"><div class="bike none1"> <img src="images/bik6.jpg" alt=""/> <div class="bike-cost"> <div class="bike-mdl"> <h4>Smart Balance</h4> </div> <div class="bike-cart"> <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a> </div> <div class="clearfix"></div> </div> <div class="fast-viw"> <a href="/page.php?page=<?php echo $id; ?>">Подробнее</a> </div> </div></a> <div class="clearfix"></div> </div> <?php } ?> --- Добавлено --- он выводит так выводит категорию 1 и все 4 товара по ссылке page=1- а должно быть page=1 page=2 page=3 page=4 ниже выводит опять категорию 1 и все 4 товара уже page=2 ниже выводит опять категорию 1 и все 4 товара уже page=3 ниже выводит опять категорию 1 и все 4 товара уже page=4
@jordan3216, так и есть 4 товара в html, а в цикле один id. В результатах запроса в БД есть категории?
У Вас сейчас так работает скрипт: PHP: foreach(...) { $id =... //Вывод категории //Вывод первого товара //Вывод второго товара //Вывод третьего товара //Вывод четвертого товара } А должно быть так (с учетом, что все товары отсортированы по категориям): PHP: $current_category = 0; foreach(...) { if($current_category != $value['category']) { $current_category = $value['category']; //Вывод категории } $id =... //Вывод одного товара }
я не совсем понимаю этот вопрос есть база есть таблицы --- Добавлено --- ничего не изменилось все также как и было(
@jordan3216, и сколько у Вас таких скриптов? Три? Вам удобно с ними работать? Приблизительно так может выглядеть Ваш скрипт для одной категории: PHP: <?php include($_SERVER['DOCUMENT_ROOT'].'/connect.php'); $popular = $pdo->prepare('SELECT `id`, `img` FROM `sb6.5`'); $popular->execute(); $result = $popular->fetchall(); $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>'; $group = ''; foreach ($result as $value) { $group .= strtr($tovar, ['%id%' => $value['id'], '%src%' => $value['img']]); } echo str_replace('%tovar%', $group, $category); У Вас, кстати, не хватает одного закрывающего тега </div>
ДА 3 таких. насчет удобности не могу говорить так как результата конечного еще нет Parse error: syntax error, unexpected '$category' (T_VARIABLE) in D:\OpenServer\domains\topgiro.ru\Popular.php on line 10
я этот код применил для 2 категории он работал и перестал по непонятной причине. показывает пустую страницу. что могло случиться?
PHP: //Удалено повторное подключение к безе $popular = $pdo->prepare('SELECT `id`, `img` FROM `sb10`');// изменена таблица $popular->execute(); $result = $popular->fetchall(); $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"> <h2>SMART BALANCE 10</h2>%tovar%<div class="clearfix"></div></div></div>'; $group = ''; foreach ($result as $value) { $group .= strtr($tovar, ['%id%' => $value['id'], '%src%' => $value['img']]); } echo str_replace('%tovar%', $group, $category); 170730 20:21:17 59 Connect roottop@localhost on popular 59 Prepare SELECT * FROM `sb6.5` WHERE `id` = ? 59 Execute SELECT * FROM `sb6.5` WHERE `id` = '5' 59 Close stmt 59 Quit --- Добавлено --- \openserver\modules\database\MySQL-5.5\bin\mysqld.exe, Version: 5.5.53-log (MySQL Community Server (GPL)). started with: TCP Port: 3306, Named Pipe: (null) Time Id Command Argument 170730 20:25:36 1 Connect roottop@localhost on popular 1 Prepare SELECT * FROM `sb6.5` WHERE `id` = ? 1 Execute SELECT * FROM `sb6.5` WHERE `id` = '5' 1 Close stmt 1 Quit 170730 20:25:44 2 Connect roottop@localhost on popular 2 Prepare SELECT * FROM `sb6.5` WHERE `id` = ? 2 Execute SELECT * FROM `sb6.5` WHERE `id` = '2' 170730 20:25:45 2 Close stmt 2 Quit 170730 20:25:51 3 Connect roottop@localhost on popular 3 Prepare SELECT * FROM `sb6.5` WHERE `id` = ? 3 Execute SELECT * FROM `sb6.5` WHERE `id` = '5' 3 Close stmt 3 Quit
@jordan3216, В логах БД у Вас другие запросы. В таблице sb10 есть поля id и img? Как Вы подключаете эти скрипты?
Да эти поля есть --- Добавлено --- PHP: <?php if ( $_GET['page']){ $page = $_GET['page']; }else{ false; } ?> <?php include($_SERVER['DOCUMENT_ROOT'].'/connect.php'); $popular = $pdo->prepare('SELECT * FROM `sb6.5` 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']; ?>
Этот код больше похож на тот, который выводит полную информацию одного товара из первой категории. Запросы из этого скрипта и были в логах БД. Имя этому файлу, скорее всего page.php. Но в нем нет вывода всех товаров по категориям. И в строке 26 не хватает знака $
извини пропал что батарея села. --- Добавлено --- да Вы правы файл называется page.php я так понимаю нужен какой то подобный код вывода и не пойму зачем объявлять перееменную в 26 страке