PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 6
alex_orl Отправлено: 31 Июля, 2018 - 10:59:55 • Тема: Исключить из цикла в массиве • Форум: Вопросы новичков

Ответов: 0
Просмотров: 104
Добрый день. Есть система хелпдекса и инвентаризации GLPI. Потребовалось добавить несколько ссылок в меню . Проблему решить не могу по причине что ссылки попадают в массив и отображаются во всех пунктах меню.
Нашел блок отвечающий за вывод меню
PHP:
скопировать код в буфер обмена
  1.  
  2. ///Main menu
  3.       echo "<div id='c_menu'>";
  4.       echo "<ul id='menu'>";
  5.  
  6.       // Get object-variables and build the navigation-elements
  7.  
  8. [b]Добавляю свой ссылки [/b]
  9.  
  10. echo "<li>";
  11.                 echo "<a href='/front/test4.php'>Карточки ПК</a>";
  12.                 echo "<ul class='ssmenu' style='display: none;'>";
  13.                 echo "</ul></li>";
  14.  
  15.                 echo "<li>";
  16.                 echo "<a  href='/front/per.php'>Карточки устройств</a>";
  17.                 echo "<ul class='ssmenu' style='display: none;'>";
  18.                 echo "</ul></li>";
  19.  
  20.  
  21.       $i = 1;
  22.       foreach ($menu as $part => $data) {
  23.          if (isset($data['content']) && count($data['content'])) {
  24.             $menu_class = "";
  25.             if (isset($menu[$sector]) && $menu[$sector]['title'] == $data['title']) {
  26.                $menu_class = "active";
  27.             }
  28.  
  29.             echo "<li id='menu$i' class='$menu_class' onmouseover=\"javascript:menuAff('menu$i','menu');\" >";
  30.             $link = "#";
  31.  
  32.             if (isset($data['default']) && !empty($data['default'])) {
  33.                $link = $CFG_GLPI["root_doc"].$data['default'];
  34.             }
  35.  
  36.             echo "<a href='$link' class='itemP' title='{$data['title']}'>{$data['title']}</a>";
  37.             echo "<ul class='ssmenu'>";
  38.  
  39.  
  40.             // list menu item
  41.             foreach ($data['content'] as $key => $val) {
  42.                $menu_class       = "";
  43.                $tmp_active_item  = explode("/", $item);
  44.                $active_item      = array_pop($tmp_active_item);
  45.                if (isset($menu[$sector]['content'])
  46.                    && isset($menu[$sector]['content'][$active_item])
  47.                    && isset($val['title'])
  48.                    && ($menu[$sector]['content'][$active_item]['title'] == $val['title'])) {
  49.                   $menu_class = "active";
  50.                }
  51.                if (isset($val['page'])
  52.                    && isset($val['title'])) {
  53.                   echo "<li class='$menu_class'><a href='".$CFG_GLPI["root_doc"].$val['page']."'";
  54.  
  55.                   if (isset($val['shortcut']) && !empty($val['shortcut'])) {
  56.                      if (!isset($already_used_shortcut[$val['shortcut']])) {
  57.                         echo " accesskey='".$val['shortcut']."'";
  58.                         $already_used_shortcut[$val['shortcut']] = $val['shortcut'];
  59.                      }
  60.                      echo ">".Toolbox::shortcut($val['title'], $val['shortcut'])."</a></li>\n";
  61.                   } else {
  62.                      echo ">".$val['title']."</a></li>\n";
  63.                   }
  64.                }
  65.             }
  66.             echo "</ul></li>";
  67.             $i++;
  68.          }
  69.       }
  70.  
  71.  
  72.  
alex_orl Отправлено: 11 Июля, 2018 - 12:46:29 • Тема: glpi подскажите как составить запрос. • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 241
В текущем цикле все работает.
А в другом не выходит сопоставление по пользователю и значения одинаковые в колонках.

Другой цикл там идет привзяка по Users_id ) компьютер , пользователь ,монитор


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.  $result5 = $mysqli->query("SELECT id , name, serial, otherserial, users_id, computermodels_id, states_id, computertypes_id, manufacturers_id  FROM glpi_computers  ORDER BY name");
  4.  while ($data = $result5->fetch_array())  {
  5.  
  6.  
  7.      $comp = $data['name'];
  8.      $compserial = $data ['serial'];
  9.      $compinv  = $data ['otherserial'];
  10.  
  11.  
  12.  
  13.     echo '<tr>';
  14.     echo '<td>' .$number. '</td>';
  15.     echo '<td>' .$comp . '</td>';
  16.  
  17.     echo '<td>' .$proizv[$data ['manufacturers_id']].' '.$mb[$data['computermodels_id']]. '</td>';
  18.  
  19.     echo '<td>' .$cpu_name [$data['id']].' '.$cpu_fre [$data['id']].'</td>';
  20.  
  21.     echo '<td>' .$mem_name [$data['id']].' '.$mem_size [$data['id']].'</td>';
  22.  
  23.     echo '<td>' .$mem_serial [$data['id']].'</td>';
  24.  
  25.     echo '<td>' .$compserial. '</td>';
  26.  
  27.     echo '<td>' .$compinv. '</td>';
  28.  
  29.   [b]  echo '<td>' .$monitor ['us_id'][$index]. '</td>';
  30.  
  31.     echo '<td>' .$monserial ['us_id'][$index]. '</td>';[/b]
  32.  
  33.     echo '<td>' .$u_name [$data['users_id']].' '.$fio [$data['users_id']] .'</td>';
  34.     echo '</tr>';
  35.  
  36.  
  37. $number++;
  38.  
  39.  
  40. }
  41.  
  42.  


[img]https://a.radikal.ru/a04/1807/fd/775d63ec0cbe.jpg[/img]
alex_orl Отправлено: 11 Июля, 2018 - 12:02:32 • Тема: glpi подскажите как составить запрос. • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 241
andrewkard Спасибо большое все получилось . echo вывел все значения мониторов .
Я конечно понимаю , что как новичек задаю глупые вопросы .

Каким образом можно в циклах не учитывать пустые значения ? ( бывают не заполнены поля s/n или имя ) . Все работает , но в логах вебсервера есть предупреждения.

И второй вопрос можете разъяснить ?

Если я пытаюсь вывести в другом цикле с сопоставлением users_id ( что бы монитор был привзян к пользователю то ошибка Uninitialized string offset: 11

echo '<td>' .$monname [$data['users_id']]. '</td>';

Каким образом я могу сопаставить $monname ?
alex_orl Отправлено: 10 Июля, 2018 - 19:25:15 • Тема: glpi подскажите как составить запрос. • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 241
andrewkard пишет:
alex_orl пишет:
в php еще не очень , можете пример показать ?


PHP:
скопировать код в буфер обмена
  1.  
  2.  //Это массив
  3. $data = [];
  4.  
  5. //Добавим одно значение с ключом  1
  6. $data[1] = 1;
  7.  
  8. //Пытаемся добавить еще одно значение с ключом  1
  9. $data[1] = 2;
  10.  
  11. //Теперь $data[1]  равно 2, поскольку ключи уникальны, что бы сохранить оба значения, сделаем массив двумерным
  12. $data[1][] = 1;
  13. $data[1][] = 2;
  14.  
  15. //Теперь $data[1][0] бедет равно 1, $data[1][1] равно 2
  16.  
  17.  
  18.  


Добрый вечер. Спасибо за разъяснение . Если честно не очень понятно .

Как я понимаю я не могу задать одинаковые поля из массива таблицы id. namr итд . И что будет если у пользователя 1 монитор вместо двух ? Поидее должна быть проверка какая либо ?
Если задаю ключи как было сказано выше , то не работает ... пишет array
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.  // monitor name, s/n
  4.  
  5.  $result2 = $mysqli->query("SELECT  name, serial,otherserial, manufacturers_id, users_id from glpi_monitors");
  6.         while ($data = $result2->fetch_array())  {
  7.  
  8.    [$monitor [$data['users_id']] = $data['1']['name'];
  9.      $monito2 [$data['users_id']] = $data['2']['name'];
  10.  
  11.      $monserial [$data['users_id']] = $data ['serial'];
  12.      $moninv [$data['users_id']] = $data ['otherserial'];
  13.  
  14. }
  15.  
  16.  
  17.  
alex_orl Отправлено: 10 Июля, 2018 - 16:35:25 • Тема: glpi подскажите как составить запрос. • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 241
Мелкий пишет:
alex_orl пишет:
$monitor [$data['users_id']] = $data['name'];

Ну так а почему у одного ключа должно быть два значения? Не бывает такого.
Добавляйте, например, ещё один вложенный массив.


в php еще не очень , можете пример показать ?
alex_orl Отправлено: 10 Июля, 2018 - 14:56:35 • Тема: glpi подскажите как составить запрос. • Форум: Напишите за меня, пожалуйста

Ответов: 10
Просмотров: 241
Добрый день. Есть система инвентаризации glpi. Столкнулся с такой проблемой. Если у пользователя 2 монитора то выводится циклом последнее устройство .

Запрос выводит 3 записи в таблице и видим что 2 устройства привязаны к users_id 6
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. root@localhost [glpi]> SELECT  name, serial,otherserial, manufacturers_id, users_id FROM glpi_monitors;
  3. +-----------+------------------+--------------------+------------------+----------+
  4. | name      | serial           | otherserial        | manufacturers_id | users_id |
  5. +-----------+------------------+--------------------+------------------+----------+
  6. | SME1920NR | HLJB200775       | 2222-2222-2222     |               48 |       11 |
  7. | 2476W     | GGVH5HA044351    | 1111-1111-1111-111 |               11 |        6 |
  8. | 2476W-2   | 2222222222222222 | 3333333333333333   |               11 |        6 |
  9. +-----------+------------------+--------------------+------------------+----------+
  10. 3 rows IN SET (0.00 sec)
  11.  


Цикл на php дергает все данные и вставляет в таблицу
PHP:
скопировать код в буфер обмена
  1.  
  2.  // monitor name, s/n
  3.  
  4.  $result2 = $mysqli->query("SELECT distinct  name, serial,otherserial, manufacturers_id, users_id from glpi_monitors");
  5.         while ($data = $result2->fetch_array())  {
  6.      $monitor [$data['users_id']] = $data['name'];
  7.      $monserial [$data['users_id']] = $data ['serial'];
  8.      $moninv [$data['users_id']] = $data ['otherserial'];
  9.  
  10. }
  11.  


Все это вывожу в таблицу ...
PHP:
скопировать код в буфер обмена
  1.  
  2. echo '<td>' .$monitor[$data['users_id']]. '</td>';
  3.  
  4. echo '<td>' .$monserial[$data['users_id']]. '</td>';
  5.  
  6.  

[img]https://ibb.co/mTkz7T[/img]
Но выводится только последнее значение. Что нужно добавить в цикл что бы выводило в таблицу 2 устройства привзянных к users_id ?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB