Использование тега привязки для запуска и отображения запроса - PullRequest
0 голосов
/ 15 января 2019

У меня есть запрос, который возвращает нужные мне данные, но я бы хотел, чтобы его можно было вызвать, щелкнув ссылку в верхней части страницы. У меня есть три ссылки сверху, первые две отображают активные и неактивные заказы при нажатии, и я хотел бы, чтобы третья отображала только заказы, созданные / просмотренные текущим вошедшим пользователем.

Кажется, что все работает независимо (запрос возвращает то, что я ищу из базы данных, ссылка отображает, где и как я этого хочу), но ссылка просто обновляет страницу при нажатии в данный момент.

Я уверен, что здесь есть что-то простое, чего мне не хватает, так как я очень новичок в ColdFusion. Вот мой код с расширенным запросом (я не думаю, что это важно).

QUERY:

<cfif structKeyExists(url,"myOrders")>
    <cfquery>
       SELECT * 
       FROM table
       WHERE processorID = #session.user.id#
    </cfquery>
</cfif>

ЯКОРЬ TAG:

<li class="active">
    <a href="websiteName.cfm?m=#url.m#&ai=1&myOrders=True">My Orders</a>
</li>

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Я нашел проблему. Я новичок в этом проекте, и существующий код, ну, в общем, существовал, когда я пришел. Мой запрос работал (что меня очень радует), но проблема была в другой части файла, там был раздел, который фактически отображал результаты именованного запроса.

Они настроили его так, что каждый запрос для этой конкретной страницы имел одно и то же имя, вроде:

<cfquery name=qDisplayQuery>

Как только я нашел это, я просто поставил то же имя для запроса. Теперь он перебирает все остальные запросы при нажатии на ссылку. И каждая ссылка делает то же самое, поэтому при нажатии отображается только запрос, связанный с правильной ссылкой. И спасибо @James A Mohler, Я добавил <cfqueryparam> с некоторыми параметрами.

Спасибо всем, кто протянул руку, вы, ребята, герои.

0 голосов
/ 15 января 2019

Во-первых, вы должны установить <cfparam>, чтобы определить ожидаемые переменные, их тип данных и значения по умолчанию.

<cfparm name="url.myOrders" type="boolean" default="true">
<cfparm name="url.active" type="boolean" default="true">

Далее ваши ссылки должны отражать комбинации этих переменных. Я удалил некоторые параметры строки запроса, чтобы сосредоточиться на этих двух. Обратите внимание, что последние две ссылки не содержат myOrders, первая <cfparam> обрабатывает определение по умолчанию этого параметра строки запроса.

<ul>
    <a href="websiteName.cfm?myOrders=true&active=true">My Active Orders</a>
    <a href="websiteName.cfm?myOrders=true&active=false">My Inactive Orders</a>
    <a href="websiteName.cfm?active=true">All Active Orders</a>
    <a href="websiteName.cfm?active=false">All Inactive Orders</a>
</ul>

Наконец, вы можете динамически генерировать ваш SQL на основе этих двух переменных.

<cfquery>
    SELECT * 
    FROM table
    WHERE 
        orderStatus = <cfqueryparam value="#url.active#" cfsqltype="cf_sql_bit">
        <cfif url.myOrders>
            AND processorID = <cfqueryparam value="#session.user.id#" cfsqltype="cf_sql_integer">
        </cfif>
</cfquery>

Теги <cfqueryparam> предназначены для защиты от атак SQL-инъекций. Вы можете добавить больше переменных по мере необходимости, чтобы изменить необходимый вам SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...