We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 36300
    • 3 Posts
    Делаю вывод из таблицы
    Выводит только последнее поле из таблицы
    Как вывести все поля?

    <?php
    $result = $modx->db->query("SELECT * FROM `modx_link_list`");
    
    while($row=mysql_fetch_array($result))
    {
    $modx->setPlaceholder('link', $row['link']);
    $modx->setPlaceholder('link_name', $row['link_name']);
    }
    ?>
    
      • 785
      • 2,113 Posts
      Quote from: webtarik at May 24, 2011, 03:18 AM

      Выводит только последнее поле из таблицы
      А что можно ожидать, если в цикле одной переменной присваиваются разные значения?
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 23935
        • 0 Posts
        Quote from: AKots at May 24, 2011, 05:09 AM

        А что можно ожидать, если в цикле одной переменной присваиваются разные значения?

        Дык там вроде двум переменным присваивают значения:link и link_name

        Quote from: webtarik at May 24, 2011, 03:18 AM

        Как вывести все поля?
        Делаю по аналогии
        <?php
        $result = $modx->db->query("SELECT * FROM `modx_site_content`");
        while($row=mysql_fetch_array($result))
        {
        echo "<pre>";
        print_r($row);
        echo "</pre>";
        }
        ?>

        Все поля на месте! Проверь точно ли ты название полей пишешь в выводе.

        Другой вопрос, что если внутри цикла есть такая конструкция:
        echo "Страница <strong>[+pl_page_id+]</strong> имеет заголовок: [+pl_page_title+] <br />";
        $modx->setPlaceholder('pl_page_id',$row['id']);
        $modx->setPlaceholder('pl_page_title',$row['pagetitle']);
        


        то в операторе echo плэйсхолдеры будут заменены на последние присвоенные им значения в цикле. Т.е. если в таблице у тебя 100 страничек, то echo из моего примера выведет 100 строчек с информацией о документе с ID=100. Как я понял это происходит из-за того, что в файле document.parser.class.inc.php, в функции parseDocumentSource плэйсхолдеры обрабатывается только после того, как всё остальное уже обработано.
          • 785
          • 2,113 Posts
          Quote from: ProninS at May 24, 2011, 05:45 AM

          Дык там вроде двум переменным присваивают значения:link и link_name
          И что? В цикле присваивание идет одной и той же переменной, например, link. И зачем дальнейшие рассуждения, не понятно, и так ясно, что не надо присваивать одной и той же переменной разные значения и ждать, что кто-то чудесным образом все изменения этой переменной будут перехватывать.
          Quote from: ProninS at May 24, 2011, 05:45 AM

          Делаю по аналогии
          Никакой аналогии – абсолютно другой подход.

          А вообще непонятно, чего ожидал автор сообщения?
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 23935
            • 0 Posts
            Quote from: AKots at May 24, 2011, 06:13 AM

            И что? В цикле присваиваниеидет одной и той же переменной, например, link. И зачем дальнейшие рассуждения, не понятно, и так ясно, что не надо присваивать одной и той же переменной разные значения и ждать, что кто-то чудесным образом все изменения этой переменной будут перехватывать.

            Что-то я ничего не понимаю:
            $modx->setPlaceholder('link', $row['link']);
            $modx->setPlaceholder('link_name', $row['link_name']);
            

            плэйсхолдерам присваиваются значения разных переменных...или?
              • 785
              • 2,113 Posts
              Quote from: ProninS at May 24, 2011, 06:39 AM

              Что-то я ничего не понимаю:
              Ключевое слово "в цикле":
              while($row=mysql_fetch_array($result)) { // в цикле
              $modx->setPlaceholder('link', $row['link']); // ОДНОЙ переменной
              $i++;
              $modx->setPlaceholder('link'.$i, $row['link']); // РАЗНЫМ переменным
              }
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации