За последние 24 часа нас посетили 21889 программистов и 1001 робот. Сейчас ищут 655 программистов ...

В чем ошибка?

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

  1. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    У Вас должен быть еще один файл (или три) для вывода всех товаров по категориям. Мы ведь о нем говорим? Или Вы уже про вывод конкретного товара?
     
  2. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    я думал можно сделать что будет одна страница page.php на которую будет перебрасывать с indexного файла где есть три категории товаров и в каждом по 4 пазиции
     
  3. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, можно и так. Тогда Вам надо делать проверку GET
    PHP:
    1. if(isset($_GET['page']))
    2. {
    3. // показать один товар
    4. } else {
    5. // показать все товары
    6. }
     
    #28 Maputo, 30 июл 2017
    Последнее редактирование: 30 июл 2017
  4. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    эти три категории находятся в файле popular.php(популярное) он подключен к index.php
     
  5. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    В чем, все-таки, проблема? Вы писали, что со 2-ой категорией что-то не получилось. Что именно?
     
  6. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    Parse error: syntax error, unexpected '{' in D:\OpenServer\domains\topgiro.ru\page.php on line 3
     
  7. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А что в строке 2 ? Это тот код, что я Вам написал с условием? Так там я скобку одну круглую не дописал)))
     
  8. jordan3216

    jordan3216 Новичок

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

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    В чем выражается "перестал"? Пустая страница? Ошибка 500?
    Если что-то сломалось - в логах сервера (явно не БД) надо смотреть ошибки.
    В тот раз Вы мне на этот же вопрос показали логи работы скрипта page.php и сам скрипт, хотя в нем не было 2й категории товаров.
    Может он перестал работать, когда Вы перешли по ссылке с popular.php на page.php?
     
  10. jordan3216

    jordan3216 Новичок

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

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

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

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    Кажется я разобрался в чем была проблема
    PHP:
    1. <?php
    2. include($_SERVER['DOCUMENT_ROOT'].'/connect.php');
    3.  
    4.  
    5.  
    6.  
    7. $popular = $pdo->prepare('SELECT * FROM `sb6.5` WHERE `id` = ?');
    8. $popular = $pdo->prepare('SELECT * FROM `sb10` WHERE `id` = ?');------ Вот этого запроса не хватало.
    9. $popular->execute( [$page] );
    10. $result = $popular->fetchAll();
    11.  
    12. foreach ($result as $value) {
    13. $img = $value['img'];
    14. $price = $value['price'];
    15. $name = $value['name'];
    16. $col = $value['color'];
    17. $text = $value['text'];
    18.  
    19. ?>
     
  13. Maputo

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

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

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    что то вроде этого?
    PHP:
    1. $popular1 = $pdo->prepare('SELECT * FROM `sb6.5` WHERE `id` = ?');
    2. $popular1->execute( [$page] );
    3. $result = $popular1->fetchAll();
    4.  
    5. $popular2 = $pdo->prepare('SELECT * FROM `sb10` WHERE `id` = ?');
    6. $popular2->execute( [$page] );
    7. $result = $popular2->fetchAll();
    8.  
    9. $popular3 = $pdo->prepare('SELECT * FROM `sb10.5` WHERE `id` = ?');
    10. $popular3->execute( [$page] );
    11. $result = $popular3->fetchAll();
    --- Добавлено ---
    кажется нет чтто то не так. не работает пустую страницу выдает
     
  15. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, result1, result2, result3
    Может пора объединить таблицы в одну, добавив еще одно поле с категорией?
    И почему у Вас WHERE id условие прописано? Вы ведь все товары выводите, а не один
     
  16. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    WHERE id прописано так как только с этим у меня получилось вывести
     
  17. Maputo

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

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

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    Неустранимая ошибка : исключить исключение «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
     
  19. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Проверьте имя переменной $query во всех файлах. В данном случае они должны быть одинаковыми.
     
    #44 Maputo, 1 авг 2017
    Последнее редактирование: 1 авг 2017
  20. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    ошибку я исправил, дальнейшее что происходит пока объяснению не поддается
     
  21. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, что Вы исправили и как это выглядит? Может скриншот?
     
  22. jordan3216

    jordan3216 Новичок

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

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А где должна быть надпись "популярное"?
    page.php
    PHP:
    1. require($_SERVER['DOCUMENT_ROOT'].'/connect.php');
    2. $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>';
    3. $category = '<br> <h2>%name%</h2>%tovar%<div class="clearfix"></div>';
    4. echo '<a id="catalog"></a><div class="bikes"> <div class="mountain-sec"> <center><h1>Популярное</h1></center>';
    5. $query = 'SELECT `id`, `img`  FROM `sb6.5`';
    6. $name = 'SMART BALANCE 6.5';
    7. include 'category.php';
    8. $query = 'SELECT `id`, `img`  FROM `sb10`';
    9. $name = 'SMART BALANCE 10';
    10. include 'category.php';
    11. $query = 'SELECT `id`, `img`  FROM `sb10.5`';
    12. $name = 'SMART BALANCE 10.5';
    13. include 'category.php';
    14. echo '</div></div>';
    popular.php
    PHP:
    1. <?php
    2. $popular = $pdo->prepare($query);
    3. $popular->execute();
    4. $result = $popular->fetchall();
    5. $group = '';
    6. foreach ($result as $value)
    7. {
    8.     $group .= strtr($tovar, ['%id%' => $value['id'], '%src%' => $value['img']]);
    9. }
    10. echo strtr($category, ['%tovar%' => $group, '%name%' => $name]);
     
    #48 Maputo, 1 авг 2017
    Последнее редактирование: 1 авг 2017
  24. jordan3216

    jordan3216 Новичок

    С нами с:
    20 июл 2017
    Сообщения:
    60
    Симпатии:
    0
    Надпись "Популярное" находится только над Smart Balance 6.5. начало происходить что то невообразимое и я откатил все назад. до первоночальной версии Вашего кода
     
  25. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @jordan3216, скопируйте последний вариант и покажите что происходит. Только не забудьте поменять имя файла category.php на popular.php. Я чего-то не обратил внимания.