PHP.SU

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

Страниц (4): [1] 2 3 4 »

> Найдено сообщений: 55
thefreedom Отправлено: 29 Марта, 2021 - 13:43:15 • Тема: Сортировка колонок при первой загрузке страницы • Форум: Вопросы новичков

Ответов: 4
Просмотров: 357
Vladimir Kheifets пишет:
thefreedom пишет:
0.post
И второй вопрос как запретить показ 1й колонки с сохранением сортировки?...
2.post
Но вопрос второй по скрытию строки остался, как правильно скрыть первый слтолбец, чтобы сортировка не сдвинулась ?


Если Вам нужно скрыть первый столбец, то может быть сделать это в PHP?
Просто исключите первый <td> после распаковки данных и уберите первый <th>


Сделал так, спасибо за наводку.
CODE (javascript):
скопировать код в буфер обмена
  1. print str_replace
  2. (
  3. ['<td><a0>'],
  4. ['<a hidden>'],
  5. $tbl);
  6. print "</table>";
thefreedom Отправлено: 29 Марта, 2021 - 10:22:04 • Тема: Сортировка колонок при первой загрузке страницы • Форум: Вопросы новичков

Ответов: 4
Просмотров: 357
Vladimir Kheifets пишет:
thefreedom пишет:
Всем доброго дня.
Первый вопрос, столкнулся с проблеммой такого характера при загрузки страницы таблица сортируется не правильно но если нажать на любую колонку (шапку), то сортируется так как нужно по алфавиту, кто силён и может помочь.
Я понимаю что проблема в использовании class, без него сортируется правильно, но мне нужны классы тк нужно скрывать определённые колонки, а в IE скрытие (display:none;) работает только когда класс у каждой колонки.


Добрый день!
В Internet Explorer могут быть проблемы связанные ECMAScript 2015 (6th Edition, ECMA-262).
Цитата:
const getSort = ({ target }) => {...
Цитата:
The const keyword is not supported in Internet Explorer 10 or earlier.
https://www[dot]w3schools[dot]com/js/js_const[dot]asp

Цитата:
for(const tBody of target.closest('table').tBodies)
Цитата:
For/of is not supported in Internet Explorer.
https://www[dot]w3schools[dot]com/js/js_loop_forof[dot]asp

См. ошибки JS в консоле браузера
Удачи!



Да я уже отключил его скриптом:
<script>
navigator.appName == 'Microsoft Internet Explorer' && window.location.replace("internetexplorer.html");
</script>


Но вопрос второй по скрытию строки остался, как правильно скрыть первый слтолбец, чтобы сортировка не сдвинулась ?
thefreedom Отправлено: 29 Марта, 2021 - 07:59:12 • Тема: Сортировка колонок при первой загрузке страницы • Форум: Вопросы новичков

Ответов: 4
Просмотров: 357
Всем доброго дня.
Первый вопрос, столкнулся с проблеммой такого характера при загрузки страницы таблица сортируется не правильно но если нажать на любую колонку (шапку), то сортируется так как нужно по алфавиту, кто силён и может помочь.

Я понимаю что проблема в использовании class, без него сортируется правильно, но мне нужны классы тк нужно скрывать определённые колонки, а в IE скрытие (display:none;) работает только когда класс у каждой колонки.

Конечно можно запретить IE вообще и проблемы не будет.

И второй вопрос как запретить показ 1й колонки с сохранением сортировки, делаю так:
<style type="text/css">
/* Фильтр колонок */
th
.c1,td:first-child{display:none;} /*Первая колонка*/
</style>
Но тогда сбивается очередность сортировки в шапке...

Стартовая страница
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function cmp($a,$b){return strcmp($a[0],$b[0]);}
  4. //
  5. $out=array();
  6. foreach(file('base.html') as $v)
  7.     $out[] = explode('<td>',$v);
  8. usort($out, 'cmp');
  9.  
  10. $tbl = '
  11. <div class="container">
  12. <table class="table_sort">
  13. <thead>
  14. <tr>
  15.  
  16. <th bgcolor=000000><font color=ffffff><b>№:
  17. <th bgcolor=000000 data-order="1" class="sorted" width=290>ФИО
  18. <th bgcolor=000000><font color=ffffff><b>Тел
  19. // ---------------- И т.д.
  20.  
  21. </thead>
  22. <tbody>
  23. ';
  24. foreach ($out as $v)
  25.     $tbl .= join("<td>",$v);
  26.  
  27. echo $tbl;
  28. ?>
  29.  


Скрипт сортировки
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. document.addEventListener('DOMContentLoaded', () => {
  3.  
  4.     const getSort = ({ target }) => {
  5.         const order = (target.dataset.order = -(target.dataset.order || -1));
  6.         const index = [...target.parentNode.cells].indexOf(target);
  7.         const collator = new Intl.Collator(['ru', 'en'], { numeric: true });
  8.         const comparator = (index, order) => (a, b) => order * collator.compare(
  9.             a.children[index].innerHTML,
  10.             b.children[index].innerHTML
  11.         );
  12.        
  13.         for(const tBody of target.closest('table').tBodies)
  14.             tBody.append(...[...tBody.rows].sort(comparator(index, order)));
  15.  
  16.         for(const cell of target.parentNode.cells)
  17.             cell.classList.toggle('sorted', cell === target);
  18.     };
  19.    
  20.     document.querySelectorAll('.table_sort thead').forEach(tableTH => tableTH.addEventListener('click', () => getSort(event)));
  21.    
  22. });
  23.  


Стили
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. table {
  3.       border-collapse: collapse;/* Убираем двойные линии между ячейками */
  4.           width: 100%; /* Ширина таблицы */
  5.     }
  6.  
  7.  tbody tr:hover /* Цвет фона при наведении */
  8. {
  9.     background: #C0C0C0;
  10. }
  11.        
  12. .table_sort th /* Шапка */
  13. {
  14.   text-align: left;
  15.   color: #ffffff;
  16.  background: #000000;
  17.  cursor: pointer;
  18.   font-weight: normal; 
  19. }
  20.  
  21. .table_sort td,
  22. .table_sort th
  23. {
  24.   height: 25px; /* Ширина шапки */
  25.   padding: 0px; /* Поля вокруг текста */
  26.   border-top: 0px; /* Рамка */
  27.   border: 1px solid #999999; /* Толщина и цвет линий */  
  28. }
  29.  
  30. tr:nth-child(2n) /* Каждая вторая строка */
  31. {
  32. background: #DCDCDC;
  33. }
  34.  
  35.  
  36. th.sorted[data-order="1"],
  37. th.sorted[data-order="-1"] {
  38.   position: sticky;
  39.   top: 0;
  40. }
  41.  
  42. th.sorted[data-order="1"]::after,
  43. th.sorted[data-order="-1"]::after
  44. {
  45.   right: 2px;
  46.   position: absolute;
  47. }
  48.  
  49. th.sorted[data-order="-1"]::after
  50. {
  51.         content:  "\25BC";
  52. }
  53.  
  54. th.sorted[data-order="1"]::after
  55. {
  56.         content: "\25B2"
  57. }
  58.  
  59. /* Закрепить шапку */
  60. .container
  61. {
  62.   height: 100%;
  63.   width: 100%;
  64.   margin: left;
  65.   overflow: auto;
  66. }
  67.  
  68. thead th
  69. {
  70.   position: sticky;
  71.   top: 0;
  72. }
  73.  


Файл с данными
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <tr class='noshow'><td class=c1><a0>0002<a0><td class=c2><a1>Коммутатор<a1><td class=c3><a2>Нет<a2><td class=c4><a2>Нет<a3>
  3. <tr class='noshow'><td class=c1><a0>0040<a0><td class=c2><a1>Оргтехника<a1><td class=c3><a2>Нет<a2><td class=c4><a2>Нет<a3><td class=c5><a3>Нет<a4>
  4. <tr class='noshow'><td class=c1><a0>0048<a0><td class=c2><a1>Иванов<a1><td class=c3><a2>Нет<a2><td class=c4><a2>Нет<a3><td class=c5><a3>Нет<a4>
  5. <tr class='noshow'><td class=c1><a0>0042<a0><td class=c2><a1>Петров<a1><td class=c3><a2>Нет<a2><td class=c4><a2>Нет<a3><td class=c5><a3>Нет<a4>
  6.  
  7.  
thefreedom Отправлено: 04 Марта, 2021 - 18:39:53 • Тема: Поиск IP адресов • Форум: Напишите за меня, пожалуйста

Ответов: 7
Просмотров: 122
Строитель пишет:
Vladimir Kheifets пишет:
покажите, пожалуйста, что у Вас в $data
С этого сразу надо было начать Закатив глазки


Решил немного по другому, оказывается все IP адреса заключены в <a9>10.0.0.128<a9>
Поэтому просто использовал:



И все равно спасибо за быстрые ответы и помощь.
thefreedom Отправлено: 04 Марта, 2021 - 11:17:58 • Тема: Поиск IP адресов • Форум: Напишите за меня, пожалуйста

Ответов: 7
Просмотров: 122
Он выдал: 10.0.1.255 - Занят, а такого адреса вообще нет нигде, и всё дальше вообще пусто (
Я думал нужно поменять на preg_split("/\n/", $line), но так тоже не работает.
thefreedom Отправлено: 04 Марта, 2021 - 07:46:43 • Тема: Поиск IP адресов • Форум: Напишите за меня, пожалуйста

Ответов: 7
Просмотров: 122
Доброго дня всем. Есть код который искал в нужном файле IP адреса и при нахождении отображал что он занят, в случае не нахождения писал что адрес свободен. Так вот с недавних пор код изменился и теперь в файле с адресами нет пробелов, поиск соответственно перестал работаь. В PHP не силён, но понимаю что нужно условия поиска поменять.
" 10.0.0.1 " - так искал (где кавычки любой код)
"10.0.0.1" - так нет (где кавычки любой код)

PHP:
скопировать код в буфер обмена
  1.  
  2. function vfcat($files)
  3. {
  4.   $ret = array();
  5.   foreach($files as $f)
  6.   {
  7.     foreach(file($f) as $l)
  8.       $ret[count($ret)] = $l;
  9.   }
  10.   return $ret;
  11. }
  12.  
  13.  
  14. function find_word($line, $w)
  15. {
  16.   foreach(preg_split("/\s/", $line) as $word)
  17.   {
  18.     if($word === $w)
  19.       return TRUE;
  20.   }
  21.   return FALSE;
  22. }
  23.  
  24.  
  25. $data = vfcat(array("base.html")); //файл для поиска
  26.  
  27.  
  28.  
  29. // Поиск по нескольким
  30.  for($hi = 0; $hi < 2; $hi++)
  31.  {  
  32.    for($low = 1; $low < 256; $low++)
  33.    {  
  34.      $ip = "10.0.".$hi.".".$low;
  35.      $found = FALSE;
  36.      foreach($data as $l)
  37.      {
  38.        if(find_word($l, $ip))
  39.        {
  40.         $found = TRUE;
  41.         break;
  42.        }
  43.      }
  44.      echo $found ? $ip. " - <font color=red>Занят</font><br>" : $ip. " - <font color=green>Свободный</font><br>";
  45.    }
  46.  }  
  47.  
thefreedom Отправлено: 27 Августа, 2020 - 15:53:24 • Тема: Сортировка по разным колонкам • Форум: Работа с файловой системой и файлами

Ответов: 12
Просмотров: 2928
Vladimir Kheifets пишет:
thefreedom пишет:
Vladimir Kheifets пишет:
значение variable: $sort не передаётся в функцию.
Добавьте аргумент $sort в function cmp($a,$b,$sort),
а в самой функции сделайте сортировку.
Функция strcmp только сравнивает две строки.



Missing argument 3 for cmp() тогда ошибки о неправильном 3м аргументе (((

PHP:
скопировать код в буфер обмена
  1.  
  2. function cmp($a,$b,$sort)
  3. {
  4. return strcmp($a['$sort'], $b['$sort']);
  5. }
  6.  


При вызове функции должно указываться также три параметра cmp($a,$b,$sort)
Вроде Вы писали, хотите сделать сортировку.
Вас устраивает, что это функция возвращает результат сравнения строк.
Чем Вам не подходят стандартные функции PHP для сортировки по разным колонкам?


$sort = file_get_contents('sort.txt', true); к примеру в нем будет цифра 3 и подставить её туда. Я просто не настолько силен в PHP поэтому и написал на форуме (((
Нужно отсортировать по первой колонки и оставить так потом по 3 и чтобы оно сохранилось значение в файл к примеру 3 в след раз будет открываться и сразу читать что сортировать по 3ке
thefreedom Отправлено: 27 Августа, 2020 - 15:02:24 • Тема: Сортировка по разным колонкам • Форум: Работа с файловой системой и файлами

Ответов: 12
Просмотров: 2928
Vladimir Kheifets пишет:
значение variable: $sort не передаётся в функцию.
Добавьте аргумент $sort в function cmp($a,$b,$sort),
а в самой функции сделайте сортировку.
Функция strcmp только сравнивает две строки.



Missing argument 3 for cmp() тогда ошибки о неправильном 3м аргументе (((

PHP:
скопировать код в буфер обмена
  1.  
  2. function cmp($a,$b,$sort)
  3. {
  4. return strcmp($a['$sort'], $b['$sort']);
  5. }
  6.  
thefreedom Отправлено: 27 Августа, 2020 - 09:15:51 • Тема: Сортировка по разным колонкам • Форум: Работа с файловой системой и файлами

Ответов: 12
Просмотров: 2928
Всем дооброго дня.
Пытаюсь организовать сортироквку по разным колонкам с запоминанием.

PHP:
скопировать код в буфер обмена
  1. function cmp($a,$b)
  2. {
  3. return strcmp($a[2], $b[2]);
  4. }


Сортирует по второй колонке, вместо 2 нужно поставить функцию $sort = "2"; чтобы можно было использовать в дальнейшем для кнопочек сортировки:

PHP:
скопировать код в буфер обмена
  1. $sort = "2";
  2. function cmp($a,$b)
  3. {
  4. return strcmp($a[$sort], $b[$sort]);
  5. }


Вылетают ошибки Undefined variable: sort...... Может я что-то не так делаю и так просто в эту функцию нельзя вставлять данные ?!

Подскажите пож. как правильно ?(


usort($myArray, function($a, $b){
return strcmp($a[0], $b[0]);
});
Правильнее сказать можно ли как-то использовать всмето 0 0 любое значение через присвоение...
thefreedom Отправлено: 03 Августа, 2020 - 09:40:41 • Тема: Вывод найденного в разных строках • Форум: Напишите за меня, пожалуйста

Ответов: 4
Просмотров: 99
Немного не то, он так выводит все со свех <А4> а не с найденных (((
А у меня задача чтобы потом с этих 2х найденных строк:
<tr><td><a1>0002<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2735<a4>
<tr><td><a1>0003<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2540<a4>
Отобразились значения Kyocera2735 и Kyocera2540 и в опоследствии с этими данными работать, причем они должны ещё как-то отличаться при выводе или переменные должны им присваиваться я вот и сам не пойму как это сделать не настолько силен в PHP.

К примеру:
$P1 - Kyocera2735
$P2 - Kyocera2540
а если строка появится ещё одна тобудет
$P3 - ???

Но может это вообще как-то по другому делается чтобы в последствии пользователь мог выбирать. А может быть вообще не использовать такое а как-то сделать фильтр
{
print $out;
}
И отсечь от туда ненужное...
(Добавление)
Вот так к примеру, но как остальное отфильтровать не нужное?
print str_replace("ИТ", "<input type=radio name=answer>", $out);
thefreedom Отправлено: 03 Августа, 2020 - 08:19:50 • Тема: Вывод найденного в разных строках • Форум: Напишите за меня, пожалуйста

Ответов: 4
Просмотров: 99
Доброого утра всем. Есть такой вопрос как вывести все найденные значения, всех строк <a4>?<a4>, постарался в нутри кода всё расписать подробно.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $file =  file('base.html'); // Файл с данными формата
  4.  
  5. //Так выглядит файл
  6. //<tr><td><a1>0002<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2735<a4>
  7. //<tr><td><a1>0003<a1><td><a2>ИТ<a2><td><a3>АО<a3><td><a4>Kyocera2540<a4>
  8. //<tr><td><a1>0004<a1><td><a2>ЛАР<a2><td><a3>НПО<a3><td><a4>Kyocera2040<a4>
  9. //<tr><td><a1>0008<a1><td><a2>ОП<a2><td><a3>АО<a3><td><a4>Kyocera1028<a4>
  10.  
  11. $search = "<a2>ИТ"; // Что ищем
  12. $out = "";
  13. $count = count($file);
  14.  
  15. for($i=0; $i < $count; $i++)
  16. {
  17. if (stristr($file[$i],$search))
  18. {
  19. $out.=$file[$i];
  20. }
  21. }
  22.  
  23. {
  24. print $out; // Тут выводятся все строки котрые нашёл (в последствии это не нужно будет, находит правильные 2 строки)
  25. }
  26.  
  27. {
  28. $all = explode("<a4>",$out);
  29. echo "<b>".$all[1]."</b> "; // А вот тут выводятся значения то что находится в А4, но как вывести значения со всего найденного а не с одной строки ?!
  30. }
thefreedom Отправлено: 29 Мая, 2020 - 11:10:06 • Тема: Кнопка ссылка с подтверждением • Форум: JavaScript & VBScript

Ответов: 1
Просмотров: 300
Доброго дня всем.
Подскажите как на кнопку, ссылку:

<button onclick=location.href=.....

не используя confirm, а через java сделать запрос после нажатия, путем присвоения ID кнопки ?
thefreedom Отправлено: 25 Февраля, 2020 - 09:44:25 • Тема: Выделение цветом нескольких совпадающих слов • Форум: JavaScript & VBScript

Ответов: 1
Просмотров: 278
Добрый день.
Просьба помочь подправить код так, чтобы подсвечивались 1ки одним цветом, а 2ки другим, неправильный конец кода, как его правильно в один массив запихнуть 2 поиска ?
Заранее спасибо.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <body onload="codeTags();">
  2.  
  3. <script type="text/javascript">
  4. function codeTags () {
  5.  
  6. var search_strings = ['1']; //Массив выделяемых слов
  7. var search_strings_2 = ['2']; //Массив выделяемых слов
  8.  
  9. var doc = document || window.document;
  10. var string = doc.body.innerHTML; //Строка с содержимым тега body документа
  11.  
  12. for (var i = 0; i < search_strings.length; i++) { //Цикл по массиву слов
  13.  var reg = new RegExp (
  14.   '(\\s|^|>)([\\(\\{\\[\\"\'])?' +  //Разделители и открывающая скобка или кавычка
  15.   search_strings[i] + //Исходная строка
  16.   '(\\s|$)?([\\u2000-\\u206F\\u2E00-\\u2E7F\\)\\]\\}\\"\'!#\\$%&\\*\\+,\\-\\.\\/:;<=>\\?@^_\\`\\|\\~])?','gi');
  17.    //Разделители и закрывающая скобка, кавычка или знак препинания
  18.        
  19.  string = string.replace (reg,'$1$2<font color=red>' + search_strings[i] + '</font>$3$4');
  20.   string = string.replace (reg,'$1$2<font color=green>' + search_strings_2[i] + '</font>$3$4');
  21.  
  22. }
  23. doc.body.innerHTML = string; //Вернуть документ назад
  24. }
  25. </script>
thefreedom Отправлено: 29 Января, 2020 - 10:34:03 • Тема: Ссылки в блок • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 482
Пока писал и сам понял что всё просто )))
thefreedom Отправлено: 29 Января, 2020 - 10:05:02 • Тема: Ссылки в блок • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 482
При нажатии на первую ссылку, выводится "Отображаемый блок 1". При клике на вторую, выводится "Отображаемый блок 2"

Вопрос как показать текст если ничего ещё не нажато ?

<script>
function openbox(id) {
var all = document.querySelectorAll(".block-of-text");
for (var i = 0; i < all.length; i++) {
if (all[i].id == id) {
all[i].style.display = (all[i].style.display == 'none')? 'block' : 'none';
} else {
all[i].style.display = 'none';
}
}
}
</script>

<a href="#" onclick="openbox('box1'); return false">Записаться</a>
<a href="#" onclick="openbox('box2'); return false">Записаться</a>

<div class="block-of-text" id="box1" style="display: none;">Отображаемый блок 1</div>
<div class="block-of-text" id="box2" style="display: none;">Отображаемый блок 2</div>

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB