Структура Coldfusion и / или массивы для организации некоторых данных - PullRequest
1 голос
/ 03 января 2012

Создание дня рождения клуба.

База данных состоит из клиентов и их питомцев.У некоторых клиентов может быть только 1 домашнее животное, тогда как у других может быть 10. Clients хранятся в одной таблице и Pets в другой таблице с client_id в качестве первичного и внешнего ключа соответственно.

Веб-страница будетпокажи сотни клиентов и их питомцев, но мы сосредоточимся на одной фиктивной записи по имени Джон Доу.Теперь, допустим, у Джона Доу есть собака, лошадь и кошка.У собаки и кошки дни рождения в январе, а у лошади в марте.Когда я просматриваю веб-страницу, я вижу кошку и собаку Джона с флажком ввода, но не для лошади (поскольку его день рождения в марте, а не в январе).Я нажимаю кнопку «продолжить», и Джон сгенерирует электронное письмо, желая его собаке и кошке счастливого дня рождения, но я не хочу включать лошадь.В марте он получит еще одно письмо для лошади, но не для кошки.Пока со мной?

Теперь моя форма настроена так:

<cfset ClientPet = ArrayNew(2)>  
<cfoutput>  
<cfset x = 1>  
<cfloop index="p" list="#select_pet#" delimiters=",">  
Client ID: #listfirst(p,'|')#<br />  
Pet ID: #listlast(p,'|')#  
<cfset ArrayAppend(ClientPet[x][1], '#listfirst(p,'|')#')>  
<cfset ArrayAppend(ClientPet[x][2], '#listlast(p,'|')#')>  
</cfloop>  
</cfoutput>

На странице действий я хотел бы отправить только одно письмо клиенту и динамическиперечислите их домашних животных, но только домашних животных, которые были выбраны на предыдущей странице, поэтому я делаю это:

<cfset ClientPet = ArrayNew(2)>  
<cfoutput>  
<cfset x = 1>  
<cfloop index="p" list="#select_pet#" delimiters=",">  
Client ID: #listfirst(p,'|')#<br />  
Pet ID: #listlast(p,'|')#  
<cfset ArrayAppend(ClientPet[x][1], '#listfirst(p,'|')#')>  
<cfset ArrayAppend(ClientPet[x][2], '#listlast(p,'|')#')>  
</cfloop>  
</cfoutput>

Я не знаю, следует ли мне использовать массивы или структуры, и как бы я это ни делал, янужно иметь возможность перебирать все client_id и затем всех питомцев, затем следующий client_id и всех своих питомцев и так далее.Я на правильном пути выше?Если это так, я должен быть в состоянии перебрать свой 2d массив или структуру и затем систематически перечислять домашних животных соответственно, верно?

1 Ответ

1 голос
/ 03 января 2012

Как предположил Натан, это может быть лучшим кандидатом для запланированного задания, а не ручной формы .

.. Но чтобы ответить на вопрос о массивах и структурах ... это не похоже ни на один из них. Просто установите для флажка значение petid.

<input name="select_pet" type="checkbox" value="#petID#">

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

   SELECT  c.client_name, p.pet_id, p.pet_name
   FROM    pet p INNER JOIN clients c ON c.client_id = p.client_id
   WHERE   p.pet_id IN 
   ( 
      <cfqueryparam value="#form.select_pet#" list="true" cfsqltype="cf_sql_integer"> 
   )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...