За последние 24 часа нас посетили 5314 программистов и 446 роботов. Сейчас ищут 92 программиста ...

Как сделать тоже самое ток на php?

Тема в разделе "PHP для профи", создана пользователем lix4000, 13 фев 2018.

  1. lix4000

    lix4000 Новичок

    С нами с:
    13 фев 2018
    Сообщения:
    1
    Симпатии:
    0
    Код (Text):
    1. public string GetHTML()
    2.         {
    3.             string html, row1 = "", row2 = "";
    4.             html = "<table border=1 itemprop=\"graduatejob\"><thead>";
    5.             List<string> Years = new List<string> {};
    6.             List<string> Collumns = new List<string> {};
    7.             // Копируем столбец God1
    8.             foreach (graduateJob self in this.graduateJobBindingList)
    9.             {
    10.                 Years.Add(self.God1);
    11.             }
    12.             // Сортируем по возрастанию
    13.             Years.Sort();
    14.             // Определяем максимальный год в исходном массиве данных
    15.             int lastYearValue = Convert.ToInt32(Years.Max());
    16.             // Формирем массив колонок, соответствующих году,
    17.             // отбирая уникальные позици, и фильтруя список по последним трем годам
    18.             Collumns.AddRange(Years.Distinct().Where(p => p.CompareTo(Convert.ToString(lastYearValue - 3)) == 1));
    19.            
    20.             // Заполняем шапку таблицы
    21.             foreach (string columnYear in Collumns) {
    22.                 row1 += "<td colspan=2>Год " + columnYear + "</td>";
    23.                 row2 += "<td>Кол-во выпускников</td><td>Кол-во  трудоустроенных выпускников</td>";
    24.             }
    25.             html += "<tr><td rowspan=2>Код</td><td rowspan=2>Направление подготовки (специальности)</td>" + row1 + "</tr><tr>" + row2 + "</tr></thead><tbody>";
    26.             // формируем новый список на основании имеющегося
    27.             IEnumerable<graduateJob> sortedRepo = this.graduateJobBindingList
    28.                     .Where(z => z.God1.CompareTo(Convert.ToString(lastYearValue - 3)) == 1) // фильтруем по последним трем годам
    29.                     .OrderBy(s => s.God1) // сортируем по году
    30.                     .OrderBy(p => p.EduName); // затем по наименованию специиальности
    31.             int nextColumn = 0, delta, currentCollumn, i;
    32.             string previousName = sortedRepo.First().EduName;
    33.             html += "<tr><td>" + sortedRepo.First().EduCode + "</td><td>" + sortedRepo.First().EduName + "</td>";
    34.             // заливаем тело таблицы
    35.             foreach (graduateJob self in sortedRepo)
    36.             {
    37.                 // Для новой специальности отбиваем новую строку
    38.                 if (previousName != self.EduName) { // проеверяем не закончилась ли инфа по текущей специальности
    39.                     html += "</tr><tr><td>" + self.EduCode + "</td><td>" + self.EduName + "</td>"; // если да, отбиваем новую строку и вносим инфу по следующей
    40.                     nextColumn = 0; // переводим курсор колонки на первую позицию
    41.                 }
    42.                 previousName = self.EduName; // фиксируем текущую специальность
    43.                 currentCollumn = Collumns.FindIndex(p => p == self.God1); // Ищем позицию колонки для текущей строки по году
    44.                 delta = currentCollumn - nextColumn; // проверяем, соответствует ли год текущей строки году текущей колонки
    45.                 nextColumn++; // смещаем курсор на следующую колонку
    46.                 // Заполняем пустоты
    47.                 for (i = 0; i < delta; i++)
    48.                 {
    49.                     html += "<td>-</td><td>-</td>";
    50.                 }
    51.                 html += "<td>" + self.KollTrudvipsk1 + "</td><td>" + self.Kollvipsk1 + "</td>"; // Забиваем данные на пересечении года и специальности
    52.             }
    53.                html = html.Substring(0, html.Length - 5); // отсекаем последний <tr>
    54.                html += "</tbody>";
    55.                html += "</table>";
    56.        
    57.             return html;
    58.            
    59.         }
    PHP:
    1. <!DOCTYPE html>
    2. <?php /*подключаем xml файл*/
    3.     $xml = simplexml_load_file('../data/t21graduatejob.xml');
    4.         ?>
    5. <html>
    6.     <head>
    7.         <meta charset="UTF-8">
    8.         <title>Таблица(Шаблон представления информации о трудоустройстве выпускников образовательных организаций  за последние 3 года)</title>
    9.         <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
    10.     </head>
    11.     <body>
    12.         <div class="container-fluid">
    13.             <h1>Таблица(Шаблон представления информации о трудоустройстве выпускников образовательных организаций  за последние 3 года)</h1>
    14.             <table itemprop="eduOP" class="table table-bordered table-hover table-striped">
    15.                 <thead>
    16.                     <tr>
    17.                        <td rowspan=2>Код</td>
    18.                 <td rowspan=2>Направление подготовки (специальности)</td>
    19.                 <?php  
    20.                     $obj = $xml->graduateJobBindingList->graduateJob;
    21.                     echo "\t\t\t\t\t\t".'<td colspan=2> Год '.$obj->God.'</td>'.PHP_EOL;
    22.                     echo "\t\t\t\t\t\t".'<td colspan=2> Год '.$obj->God2.'</td>'.PHP_EOL;
    23.                     echo "\t\t\t\t\t\t".'<td colspan=2> Год '.$obj->God3.'</td>'.PHP_EOL;
    24.                 ?>
    25.                 </tr>
    26.                 <tr>
    27.                 <td>Кол-во выпускников</td>
    28.                 <td>Кол-во  трудоустроенных выпускников</td>
    29.                 <td>Кол-во выпускников</td>
    30.                 <td>Кол-во  трудоустроенных выпускников</td>
    31.                 <td>Кол-во выпускников</td>
    32.                 <td>Кол-во  трудоустроенных выпускников</td>
    33.                     </tr>
    34.                
    35.                 </thead>
    36.                 <tbody>
    37. <?php
    38.                        
    39.                         foreach($xml->graduateJobBindingList->graduateJob as $curNode)
    40.                         {
    41.                             echo "\t\t\t\t\t".'<tr>'.PHP_EOL;
    42.                             echo "\t\t\t\t\t\t".'<td itemprop="eduCode" class="text-center">'.$curNode->EduCode."</td>".PHP_EOL;
    43.                             echo "\t\t\t\t\t\t".'<td itemprop="eduName">'.$curNode->EduName.'</td>'.PHP_EOL;
    44.                        
    45.                            // echo "\t\t\t\t\t\t".'<td itemprop="god1">'.$curNode->God1.'</td>'.PHP_EOL;
    46.                             echo "\t\t\t\t\t\t".'<td itemprop="kollvipsk1">'.$curNode->Kollvipusknikov.'</td>'.PHP_EOL;
    47.                             echo "\t\t\t\t\t\t".'<td itemprop="kollTrudvipsk1">'.$curNode->Kolltrudoustroinihvipsknikov.'</td>'.PHP_EOL;
    48.                            
    49.                             //echo "\t\t\t\t\t\t".'<td itemprop="god2">'.$curNode->God2.'</td>'.PHP_EOL;
    50.                             echo "\t\t\t\t\t\t".'<td itemprop="kollvipsk2">'.$curNode->Kollvipusknikov2.'</td>'.PHP_EOL;
    51.                             echo "\t\t\t\t\t\t".'<td itemprop="kollTrudvipsk2">'.$curNode->Kolltrudoustroinihvipsknikov2.'</td>'.PHP_EOL;
    52.                            
    53.                            // echo "\t\t\t\t\t\t".'<td itemprop="god1">'.$curNode->God3.'</td>'.PHP_EOL;
    54.                             echo "\t\t\t\t\t\t".'<td itemprop="kollvipsk1">'.$curNode->Kollvipusknikov3.'</td>'.PHP_EOL;
    55.                             echo "\t\t\t\t\t\t".'<td itemprop="kollTrudvipsk1">'.$curNode->Kolltrudoustroinihvipsknikov.'</td>'.PHP_EOL;
    56.                            
    57.                            
    58.                            
    59.                             echo "\t\t\t\t\t".'</tr>'.PHP_EOL;
    60.                         }
    61.                     ?>
    62.                 </tbody>
    63.             </table>
    64.         </div>      
    65.     </body>
    66. </html>