We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 30593
    • 119 Posts
    Обновил сниппет на 2.0 http://modx.ru/files/dev/snippets/articles-snippet-v2.0.txt по уроку http://modx.ru/blog/modx-pagination/

    Но вылезла ошибка!
    « MODx Parse Error »MODx encountered the following error while attempting to parse the requested resource:
    « Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’-6,6’ at line 6 »

    Люди говорят, что ошибка возникает, если неправильно указать родительский документ, например, указать «WHERE `parent` =1» вместо «WHERE `parent` =3», при родительском документе с id=3.

    У блога ID-5, в сниппете тоже 5 указал. Не понимаю, в чем может быть ошибка!?
      • 28814 ☆ A M B ☆
      • 1,086 Posts
      Quote from: Trent at Oct 05, 2009, 05:42 AM


      You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’-6,6’ at line 6
      Судя по ошибке MySQL, у Вас почему-то происходит выборка документов с параметром LIMIT -6,6, где -6 - стартовый документ, а 6 - необходимое количество документов, начиная со стартового. Но здесь не может быть отрицательных значений вообще!

      Думаю, что ошибка возникает в этой функции:

      $results = $modx->getDocumentChildren(
      			$id = 1, // ID родительского документа, а именно документа "Блог"
      			$active = 1, // Выбираем только опубликованные документы
      			$deleted = 0, // Выбираем только неудаленные документы 
      			'id, pagetitle, published, introtext, content, menuindex, createdby, createdon, deleted,  menutitle', // Выбираем поля из БД 
      			$where = '', // Дополнительные условия не требуются
      			$sort='createdon', // Сортируем документы по полю createdon, т.е. по дате создания
      			$dir='DESC', // Сортируем документы по убыванию
      			$limit = $start.",".$num // Вывод $num документов, начиная с $start
      		);
      

      Так вот в ней есть параметр, который генерирует ограничение LIMIT в SQL запросе ($start.",".$num):
      $limit = $start.",".$num // Вывод $num документов, начиная с $start
      Чуть выше имеется строчка $start = $p * $num; // Номер документа в выборке, с которого будет вестись отсчет

      Как мне кажется, только здесь $start может стать отрицательной величиной. А отрицательной переменная $start может быть только в случае, если отрицателен один из множителей $p или $num.

      Выясняйте, почему $p или $num у Вас получается отрицательной величиной.
        Разработка сайтов и программных модулей на MODX.
        Опыт работы на MODx с 2005 года. Высокое качество.
        Компания Baltic Design Colors: http://www.bdcolors.ru.
        • 30593
        • 119 Posts
        Еще Gazpasser пишет о такой же ошибке:
        « Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’-5,5’ at line 6 »
        -Ошибка появлялась, когда я скопировал в сниппет весь обновленный код целиком. Впрочем, сделал все поэтапно, и ошибка исчезла.


        Cейчас скопировал один в один сниппет(ранее я удалял не нужные мне cat,user,comments), пишет следующее:

        « Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’-5,5’ at line 6 »
        SQL: SELECT DISTINCT sc.id,sc.pagetitle,sc.published,sc.introtext,sc.content,sc.menuindex,sc.createdby,sc.createdon,sc.deleted,sc. menutitle FROM `1_modx`.`modx_site_content` sc LEFT JOIN `1_modx`.`modx_document_groups` dg on dg.document = sc.id WHERE sc.parent = ’5’ AND sc.published=1 AND sc.deleted=0 AND (sc.privateweb=0) GROUP BY sc.id ORDER BY sc.createdon DESC LIMIT -5,5

        еще забыл упомянуть, что не использовал TV, папки категорий, как в уроке, мне это не нужно.
          • 30593
          • 119 Posts
          Quote from: Fuzzy at Oct 05, 2009, 06:41 AM

          Выясняйте, почему $p или $num у Вас получается отрицательной величиной.

          В каком направлении копать, где посмотреть почему не правильно, почему вылазит ошибка?
            • 30593
            • 119 Posts
            продолжу)
            нашел где ошибка!

            // Получаем общее количество страниц, округляем их в большую сторону и вычитаем 1 (единицу),
            // чтобы наши расчеты полностью совпадали с логикой базы данных (помните, что отсчет в БД начинается с нуля?)
            $totalPages = ceil ($totalArticles / $num) - 1;

            если я удаляю эту строчку или ставлю 0, то страница открывается, но не работает ссылка назад, вида http://mysite.ru/?p=1 - перебрасывает на главную.
            Fuzzy что это может быть?
              • 30593
              • 119 Posts
              понял что мне это решение, в виде блога, не подходит пока, буду делать на Ditto