Отображать выходные данные запроса ColdFusion в форматированной таблице

#coldfusion

#coldfusion

Вопрос:

Позвольте мне начать с того, что я новичок в ColdFusion и пытаюсь учиться, поэтому, пожалуйста, потерпите меня.

Я работаю в жилом комплексе, который обслуживает студентов местного колледжа. У нас есть квартиры с одной, двумя и четырьмя спальнями. Каждая комната в квартире сдается отдельному студенту. Что я хочу сделать, так это заполнить HTML-таблицу всеми людьми в комнате. Мой запрос работает и извлекает все соответствующие данные, но происходит то, что каждый пользователь разделяется на свою собственную таблицу HTML вместо того, чтобы все люди в комнате помещались в одну таблицу. Вот пример:

Чего я хочу

ожидаемое изображение

Что происходит:

фактическое изображение

Вот мой код:

     <!---Begin data table--->
    <cfoutput query = "qryGetAssignments">
    <div class="datagrid">
    <table> 
      <tr><td align="right"><strong>#RoomType#</strong></td></tr>
      <thead>
        <tr>
          <th>#RoomNumber#</th>
      </thead>
      <tbody>
        <tr><td><strong>#Bed#</strong> 
            | #FirstName# #LastName# :: #StudentNumber# 
            </td>
        </tr>
      </tbody>
     </table>
     </div>
     </cfoutput>
  

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

Редактировать: Извините за путаницу. Вот полное изображение того, к чему я стремлюсь:

Ожидаемый - более подробный

Комментарии:

1. вероятно, вы не хотите, чтобы вся ваша таблица находилась внутри части, которая зацикливается на строках, иначе вы получите таблицу для каждой строки, а не строку для каждой строки.

2. Привет, Кевин, спасибо за твой комментарий. Я попытался переместить тег <cfoutput> вниз внутри таблицы. Когда я это делаю, я получаю тот же вывод «разделить», только таблица отформатирована вертикально, каждая запись поверх другой, вместо формата страницы с тремя столбцами, как я собираюсь.

3. формат страницы с 3 столбцами? я не понимаю, как это представлено на вашем первом изображении.

4. хм … вы пытаетесь распределить 4 человек по нескольким комнатам, исходя из того, сколько человек может поместиться в каждой комнате? если это так, то…. нам нужно намного больше информации, например, о том, как вы генерируете этот запрос, потому что в его текущем формате он относительно бесполезен для решения вашей проблемы.

5. Взгляните на функцию<cfoutput group=»..»> . Вы могли бы легко использовать его для генерации одной таблицы или div для каждого номера комнаты. Смотрите пример . Чтобы отобразить три таблицы / divs в строке, загляните в оператор MOD .

Ответ №1:

Это должно сделать то, что вам нужно, при условии, что ваш запрос правильно упорядочен по RoomType, для <cfoutput group=""> работы.

 <!---Begin data table--->
<cfoutput query="qryGetAssignments" group="roomType">
  <div class="datagrid"><!--- If this isn't needed to style the tables, it can be moved outside the loop --->
    <table> 
      <tr><td align="right"><strong>#qryGetAssignments.roomType#</strong></td></tr>
      <thead>
        <tr>
          <th>#qryGetAssignments.roomNumber#</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>
            <strong>#qryGetAssignments.bed#</strong> 
            <cfoutput><!--- this output here will loop over rows for that groupby --->
              | #FirstName# #LastName# :: #StudentNumber# 
            </cfoutput>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</cfoutput>
  

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

Ответ №2:

Это должно сработать, за исключением того, что, возможно, потребуется сгруппировать их по «номеру комнаты», например N108.