За последние 24 часа нас посетил 22461 программист и 1027 роботов. Сейчас ищут 713 программистов ...

В чем ошибка?

Тема в разделе "PHP и базы данных", создана пользователем jordan3216, 30 июл 2017.

  1. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    Подскажите пожалуйста в чем тут ошибка.
    PHP:
    1. $popular = $pdo->prepare('SELECT * FROM `sb6.5`');
    2. $popular->execute();
    3. $result = $popular->fetchall();
    4. foreach ($result as $value)  {
    5.  
    6. $id = $value['id'];
    7.  
    8.  
    9.           ?>
    Есть 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:
    1. <?php
    2. }
    3.           ?>
    2 категория
    3 категория
     
    #1 jordan3216, 30 июл 2017
    Последнее редактирование: 30 июл 2017
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  3. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, тот код, в котором у Вас ошибка Вы и не показали.
    Как я понял, foreach в каждой итерации дает один товар, а Вам надо 4. Ошибка внутри цикла.
     
  4. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    PHP:
    1. <?php
    2. include($_SERVER['DOCUMENT_ROOT'].'/connect.php');
    3.  
    4.  
    5. // $id = 1;
    6.  
    7. $popular = $pdo->prepare('SELECT `id`, `img`  FROM `sb6.5`');
    8. $popular->execute();
    9. $result = $popular->fetchall();
    10. foreach ($result as $value)  {
    11.  
    12.  
    13.  
    14.  
    15.     $id = $value['id'];
    16.    
    17.  
    18. ?>
    19. <a id="catalog"></a>
    20. <!--Товар 1-->
    21. <div class="bikes">      
    22.      <div class="mountain-sec">
    23.      <center><h1>Популярное</h1></center>
    24.      <br>
    25.          <h2>SMART BALANCE 6.5</h2>
    26.           <a  href="/page.php?page=<?php echo $id; ?>"><div class="bike">                        
    27.              <!-- <img src="images/bik3.jpg" alt=""/> -->
    28.              <img src="<?=$value['img']; ?>" />
    29.              <div class="bike-cost">
    30.                      <div class="bike-mdl">
    31.                          <h4>Smart Balance</h4>
    32.              
    33.                      </div>
    34.  
    35.                      <div class="bike-cart">  
    36.                            <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a>
    37.  
    38.                            <!-- <a class="buy" href="page.php?page={$tovar}">Купить</a> -->
    39.                      </div>
    40.            
    41.                  
    42.                      <div class="clearfix"></div>
    43.                  </div>
    44.                
    45.                  <div class="fast-viw">
    46.  
    47.  
    48.                         <a href="/page.php?page=<?php echo $id; ?>">Подробнее</a>
    49.                  </div>
    50.              </div></a>
    51.          
    52.              <a href="/page.php?page=<?php echo $id; ?>"><div class="bike">              
    53.                  <img src="images/bik1.jpg" alt=""/>
    54.                 <!--  Товар 1 конец -->
    55.          
    56.                  <div class="bike-cost">
    57.                      <div class="bike-mdl">
    58.  
    59.                          <h4>Smart Balance</h4>
    60.                      </div>
    61.                      <div class="bike-cart">                      
    62.                          <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a>
    63.                      </div>
    64.                      <div class="clearfix"></div>
    65.                  </div>
    66.                  <div class="fast-viw">
    67.                         <a href="/page.php?page=<?php echo $id; ?>"">Подробнее</a>
    68.                  </div>
    69.              </div></a>
    70.              <a href="/page.php?page=<?php echo $id; ?>"><div class="bike none2">              
    71.                  <img src="images/bik4.jpg" alt=""/>
    72.                  <div class="bike-cost">
    73.                  
    74.              
    75.                      <div class="bike-mdl">
    76.                          <h4>Smart Balance</h4>
    77.                      </div>
    78.                      <div class="bike-cart">                      
    79.                          <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a>
    80.                      </div>
    81.                      <div class="clearfix"></div>
    82.                  </div>
    83.                  <div class="fast-viw">
    84.                         <a href="/page.php?page=<?php echo $id; ?>">Подробнее</a>
    85.                  </div>
    86.              </div></a>
    87.              <a href="/page.php?page=<?php echo $id; ?>"><div class="bike none1">              
    88.                  <img src="images/bik6.jpg" alt=""/>
    89.                  <div class="bike-cost">
    90.                      <div class="bike-mdl">
    91.                          <h4>Smart Balance</h4>
    92.                      </div>
    93.                      <div class="bike-cart">                      
    94.                          <a class="buy" href="/page.php?page=<?php echo $id; ?>">Купить</a>
    95.                      </div>
    96.                      <div class="clearfix"></div>
    97.                  </div>
    98.                  <div class="fast-viw">
    99.                         <a href="/page.php?page=<?php echo $id; ?>">Подробнее</a>
    100.                  </div>
    101.              </div></a>
    102.  
    103.              <div class="clearfix"></div>
    104.       </div>
    105. <?php
    106.  
    107. }
    108.  
    109. ?>
    --- Добавлено ---
    он выводит так
    выводит категорию 1 и все 4 товара по ссылке page=1- а должно быть page=1 page=2 page=3 page=4
    ниже выводит опять категорию 1 и все 4 товара уже page=2
    ниже выводит опять категорию 1 и все 4 товара уже page=3
    ниже выводит опять категорию 1 и все 4 товара уже page=4
     
  5. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, так и есть 4 товара в html, а в цикле один id.
    В результатах запроса в БД есть категории?
     
  6. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    как мне в цикле сделать 4 id
     
  7. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    У Вас сейчас так работает скрипт:
    PHP:
    1. foreach(...)
    2. {
    3.     $id =...
    4.     //Вывод категории
    5.     //Вывод первого товара
    6.     //Вывод второго товара
    7.     //Вывод третьего товара
    8.     //Вывод четвертого товара
    9. }
    А должно быть так (с учетом, что все товары отсортированы по категориям):
    PHP:
    1. $current_category = 0;
    2. foreach(...)
    3. {
    4.     if($current_category != $value['category'])
    5.     {
    6.         $current_category = $value['category'];
    7.         //Вывод категории
    8.     }
    9.     $id =...
    10.     //Вывод одного товара
    11. }
     
    #7 Maputo, 30 июл 2017
    Последнее редактирование: 30 июл 2017
  8. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    что должно быть во второй строке?
    тоже что и у меня?
     
  9. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Где троеточия - все остается как было.
    В результатаз запроса в БД есть категории?
     
  10. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    я не совсем понимаю этот вопрос
    есть база есть таблицы
    --- Добавлено ---
    ничего не изменилось все также как и было(
     
  11. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Товары разбиты по категориям?
    В $value есть категории?
     
  12. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    Сни2мок.JPG Снимок.JPG вот сейчас стало работать по другому 1 категория больше не дублируется но все товары
     
  13. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, как я понял у Вас каждая категория в отдельной таблице?
     
  14. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    в таблице содержится товар, а не категория
    --- Добавлено ---
    в роли категории выступают таблицы
     
  15. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, и сколько у Вас таких скриптов? Три? Вам удобно с ними работать?
    Приблизительно так может выглядеть Ваш скрипт для одной категории:
    PHP:
    1. <?php
    2. include($_SERVER['DOCUMENT_ROOT'].'/connect.php');
    3.  
    4. $popular = $pdo->prepare('SELECT `id`, `img`  FROM `sb6.5`');
    5. $popular->execute();
    6. $result = $popular->fetchall();
    7.  
    8. $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>';
    9.  
    10. $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>';
    11.  
    12. $group = '';
    13.  
    14. foreach ($result as $value)
    15. {
    16.     $group .= strtr($tovar, ['%id%' => $value['id'], '%src%' => $value['img']]);
    17. }
    18.  
    19. echo str_replace('%tovar%', $group, $category);
    У Вас, кстати, не хватает одного закрывающего тега </div>
     
    #15 Maputo, 30 июл 2017
    Последнее редактирование: 30 июл 2017
  16. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0

    ДА 3 таких. насчет удобности не могу говорить так как результата конечного еще нет

    Parse error
    : syntax error, unexpected '$category' (T_VARIABLE) in D:\OpenServer\domains\topgiro.ru\Popular.php on line 10
     
  17. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А догадаться?:D Типа точку с запятой я не поставил. on line 8.
     
  18. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    УРАААА Спасибо огромноеееее работает))))
     
  19. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    я этот код применил для 2 категории он работал и перестал по непонятной причине. показывает пустую страницу. что могло случиться?
     
  20. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Вы бы хоть показали какие изменения Вы в него внесли и какие ошибки у Вас в логах сыпятся.
     
  21. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    PHP:
    1. //Удалено повторное подключение к безе
    2. $popular = $pdo->prepare('SELECT `id`, `img`  FROM `sb10`');// изменена таблица
    3. $popular->execute();
    4. $result = $popular->fetchall();
    5. $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>';
    6. $category = '<a id="catalog"></a><div class="bikes"> <div class="mountain-sec">  <h2>SMART BALANCE 10</h2>%tovar%<div class="clearfix"></div></div></div>';
    7. $group = '';
    8. foreach ($result as $value)
    9. {
    10.     $group .= strtr($tovar, ['%id%' => $value['id'], '%src%' => $value['img']]);
    11. }
    12. 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
     
  22. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, В логах БД у Вас другие запросы. В таблице sb10 есть поля id и img? Как Вы подключаете эти скрипты?
     
  23. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    Да эти поля есть
    --- Добавлено ---
    PHP:
    1. <?php
    2. if ( $_GET['page']){
    3.     $page = $_GET['page'];
    4. }else{
    5.     false;
    6. }
    7. ?>
    8.  
    9. <?php
    10. include($_SERVER['DOCUMENT_ROOT'].'/connect.php');
    11.  
    12.  
    13.  
    14.  
    15. $popular = $pdo->prepare('SELECT * FROM `sb6.5` WHERE `id` = ?');
    16. $popular->execute( [$page] );
    17. $result = $popular->fetchAll();
    18.  
    19. foreach ($result as $value) {
    20. $img = $value['img'];
    21. $price = $value['price'];
    22. $name = $value['name'];
    23. $col = $value['color'];
    24. $text = $value['text'];
    25.  
    26. ?>
     
  24. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Этот код больше похож на тот, который выводит полную информацию одного товара из первой категории. Запросы из этого скрипта и были в логах БД. Имя этому файлу, скорее всего page.php. Но в нем нет вывода всех товаров по категориям.
    И в строке 26 не хватает знака $
     
  25. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    извини пропал что батарея села.
    --- Добавлено ---
    да Вы правы файл называется page.php я так понимаю нужен какой то подобный код вывода и не пойму зачем объявлять перееменную в 26 страке