2014-10-04 2 views
0

У меня возникли проблемы с получением информации из формы ColdFusion на страницу действия и отображением того, что необходимо. Я должен отобразить выбранный продукт и фирменное наименование для этого продукта на основе продукта, выбранного из формы.ColdFusion SELECT с INNER JOIN из формы

Вот код из моей страницы формы:

<form action="productinfo.cfm" method="post"> 
    <cfoutput query = "getProducts"> 
    ... 
    <input type="radio" name="prods" value="#getProducts.productname#"> 
    #getProducts.productname# 
    ... 
    </cfoutput> 
    <input type="submit" value="Submit"> 
</form> 

Вот код, с моей страницы действий:

<cfset prodname = form.prods> 

<cfquery name = "JoinProdSupp" datasource = "jeb48_northwind"> 
    SELECT Products.ProductName, Suppliers.CompanyName 
    FROM Suppliers INNER JOIN Products 
       ON Suppliers.SupplierID = Products.SupplierID 
    WHERE (((Products.ProductName)='#prodname#')); 
    </cfquery> 

Я точно не знаю, как вывести содержимое запроса ,

ответ

1

Я уверен, что я понял это ... если у кого есть комментарии, я все уши. это то, чем я закончил.

 <cfoutput query = "JoinProdSupp"> 
     #JoinProdSupp.ProductName#<br> 
     #JoinProdSupp.CompanyName#<br> 
    </cfoutput> 
+1

При выполнении запроса вы должны использовать параметр запроса по разным причинам. В вашем выходном коде, поскольку у вас есть атрибут запроса в вашем теге cfoutput, квалифицировать переменную с именем запроса необязательно. –

+2

@DanBracuk прав, и, чтобы быть ясным, он означает как это .. WHERE (((Products.ProductName) = )). CFQueryParam является важной защитой от внедрения sql. http://help.adobe.com/livedocs/coldfusion/8/htmldocs/help.html?content=Tags_p-q_18.html. Также обратите внимание на отсутствие кавычек вокруг тега , cfqueryparam добавляет кавычки, как это определено выбранным cfsqltype. –

+2

Имя запроса действительно не нужно, но если этот блок cfoutput растет и усложняется, очень приятно иметь его там, особенно когда кто-то еще приходит и пытается выяснить, откуда идут переменные. – Barry

1

Для справки ..

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

<cfdump var="#MyQuery#"> 

(Примечание хэши вокруг имени переменной, те, имеют важное значение.)

посмотреть, что происходит, если вы выполнить этот сценарий. (Этот скрипт использует синтаксис из CF 8 или выше)

<cfscript> 
    s_struct = {}; // Create an empty structure. 
    s_struct.sample_array = ["sample","array","data"]; // Create an array with three elements 
    s_struct.sample_array[4] = {one = 1,banana = "yellow"}; // Add a fourth element to the same array, whose content is a struct with two elements. 
    s_struct.second_array = [{cat = "dog", red = "blue", big = "small"},{cat = "feline", dog = "canine", big = "large"}]; 
    s_struct.FirstArraySize = ArrayLen(s_struct.sample_array); 
</cfscript> 

<cfdump var="#s_struct#"> 

Выход из cfdump основном учит вас, как вы можете получить доступ к содержимому переменной, которая может быть полезна при плохо документированных веб-служб или таблиц, вы не можете получить доступ напрямую. Не забудьте всегда очищать cfdumps от производства.

Смежные вопросы