PHP.SU

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

Страниц (59): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец

> Найдено сообщений: 881
Vladimir Kheifets Отправлено: 24 Января, 2022 - 06:06:42 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:
А вот функция запроса работников через XMLHttpRequest исходя из ID должности может подвести, так как, как я понимаю, счёт идёт по номеру элемента option, а не ссылается на ID самой должности, к которой привязан работник. Сбой произойдёт, когда ID в списке должностей будут не по порядку или в разброс.


Если Вы имеете ввиду value в option, то счёт НЕ идёт по номеру элемента option.
Посмотрите в коде, индекс массива $arr, который затем попадает в value option, это id работника из таблицы, а не порядковый номер.
PHP:
скопировать код в буфер обмена
  1. ........
  2. $query='SELECT id, pr, im, pb FROM `workers` WHERE `ps`= '.$ps_id;
  3. $result = mysqli_query($db, $query);  
  4. while ($rows=mysqli_fetch_assoc($result)) {
  5.     $pip = full_name_to_short($rows["pr"]." ".$rows["im"]." ".$rows["pb"]);
  6.     $arr[$rows['id']]=$pip;
  7. }
  8. echo json_encode($arr, JSON_PRETTY_PRINT);
  9. //Возвращаем данные в JS в JSON-формате (XMLHttpResponse)
  10. ..........


Посмотрел Ваши доработки, Увидел только full_name_to_short
1. Советую Вам не вставлять функции в коде там где они применяются.
2. м. б. сделать попроще
PHP:
скопировать код в буфер обмена
  1. <?
  2. function full_name_to_short($rows){
  3.         $shortName = $rows["pr"];
  4.         foreach(["im","pb"] as $v)
  5.                 $shortName .= " ".mb_substr($rows[$v], 0, 1, 'UTF-8').".";
  6.         return $shortName;
  7. }
  8.  
  9. $rows["pr"]="Пупкин";
  10. $rows["im"]="Василий";
  11. $rows["pb"]="Иванович";
  12. echo "<pre>";
  13. print_r($rows);
  14. $pip = full_name_to_short($rows);
  15. echo $pip;
  16. /*
  17. Array
  18. (
  19.     [pr] => Пупкин
  20.     [im] => Василий
  21.     [pb] => Иванович
  22. )
  23. Пупкин В. И.
  24. */
  25. ?>
Vladimir Kheifets Отправлено: 23 Января, 2022 - 16:53:55 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Дополнение

Новая версия с контролем и отправкой данных.
Спойлер (Отобразить)
Vladimir Kheifets Отправлено: 23 Января, 2022 - 13:42:32 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:
Касательно вашей формы есть непонимание:
в цикле
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.         for(i in optObj)
  3.         {
  4.                 opt = document.createElement('option');
  5.                 opt.innerHTML = optObj[i];
  6.                 -->opt.value = optObj[i];
  7.                 select2.appendChild(opt);
  8.         }
  9.  


Догадался добавить optionу параметр value, чтобы что-то отправить, а не просто увидеть. Всё, что я могу отправить, это данные из optObj[i] - то есть Ф.И.О. А задумал отправлять именно ID работника, который хоть и приходит в список json, но я его так и не нашел ни в какой переменной.


Добрый день!
ID работника было в переменной i. Чтобы было понятнее заменил i на ID:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.         for(ID in optObj)
  3.         {
  4.                 opt = document.createElement('option');
  5.                 opt.innerHTML = optObj[ID];
  6.                 opt.value = ID;
  7.                 select2.appendChild(opt);
  8.         }
  9.  


Из консоли браузера:

optObj:
CODE (javascript):
скопировать код в буфер обмена
  1. Object
  2. 1: "Иванов"
  3. 2: "Петров"
  4. 3: "Сидоров"[[Prototype]]: Object


select id="NamePosition1"
CODE (html):
скопировать код в буфер обмена
  1. <select id="NamePosition1" style="visibility: visible;">
  2. <option>Фамилия</option>
  3. <option value="1">Иванов</option>
  4. <option value="2">Петров</option>
  5. <option value="3">Сидоров</option>
  6. </select>

Удачи!
Vladimir Kheifets Отправлено: 21 Января, 2022 - 18:56:23 • Тема: PHP скрипт обработчик • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 837
don.bidon пишет:
Владимир, Вы же взрослый человек, если сервис не предполагает API + очевидные потуги ТС, не стоит такому помогать.

Божу упаси. Вообще-то, никто и не помогал. Пошутили и на этом закончили.
Vladimir Kheifets Отправлено: 21 Января, 2022 - 18:42:46 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:

А как лучше сформированных в такой форме работников отпралять в базу, чтобы потом они отобразились на странице просмотра графика?
В одну ячейку в виде Json, как я полагаю?

Верно, данные писать в виде Json и тип данных sql поля, для сохранения данных "json".
Остальное улеглось?
Vladimir Kheifets Отправлено: 20 Января, 2022 - 06:34:11 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:
Спасибо большое. Освоил.
А в чём может быть дело, что применил такой метод дублирования строк, но фамилии раскрываются только в первой строке? В остальных только должности.

Я показал Вам полностью рабочий код. Вместе с тем, что Вы применяли работать не будет.
Обратите внимание на то, что нельзя изменять id в тэгах селект.
Если очень нужно, то изменяйте также и селекторы в CSS и JS.
Общее правило.
Если в динамическом коде с JS что-то не работает, смотрите сообщения об ошибках в консоле браузера.
Удачи!
p.s. В Вашем коде каждый тэг селект "обёрнут" в три тэга див. Не надо так делать.
Vladimir Kheifets Отправлено: 19 Января, 2022 - 12:38:57 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Дополнение.

Это код таблицы бригады (как на скриншоте)
Количество работников в таблице может настриваться и соответсвнно м.б. столько же пар связанных тэгов селект.
Спойлер (Отобразить)
Самостоятельно справитесь с столбцом "Рабочее время"?
Vladimir Kheifets Отправлено: 19 Января, 2022 - 08:00:39 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:
По Вашему примеру вывод такой:
CODE (javascript):
скопировать код в буфер обмена
  1. {
  2.     "1": "\u0418\u0432\u0430\u043d\u043e\u0432",
  3.     "2": "\u041f\u0435\u0442\u0440\u043e\u0432",
  4.     "3": "\u0421\u0438\u0434\u043e\u0440\u043e\u0432"
  5. }

При выводе с базы у меня работники вот так:
CODE (javascript):
скопировать код в буфер обмена
  1. [
  2.     {
  3.         "1": "\u0421\u0438\u0434\u043e\u0440\u043e\u0432"
  4.     },
  5.     {
  6.         "2": "\u0421\u0438\u0434\u043e\u0440\u043e\u0432"
  7.     },
  8.     {
  9.         "3": "\u0421\u0438\u0434\u043e\u0440\u043e\u0432"
  10.     }
  11. ]

Возможно, можно как-то jsоm скопитовать и вставить существующий html-блок, вместе с рабочими списками.

Так всё работает:
Спойлер (Отобразить)
Vladimir Kheifets Отправлено: 18 Января, 2022 - 21:45:35 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:
Vladimir Kheifets пишет:
Удачи!

Благодарю, но снова не мгу до конца всё решить.
Должности в список получил, а вот Фио, соответствующие должности не могу никак...
Пытаюсь так:
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['idSelect']))
  2. {
  3.         header('Content-Type: application/json;charset=utf-8');
  4.                 $array = array();
  5.                 $ps_id = $_GET["SelectedInd"];
  6.                 $workers = mysqli_query($db,'SELECT id, pr FROM `workers` WHERE `ps`= '.$ps_id); //     База з посадами /       База с должностями
  7.                 while($rws = mysqli_fetch_assoc($workers)){
  8.                         //$array[] = $rws;
  9.                         $arr = array($rws["id"] => $rws["pr"]);
  10.                 }
  11.     echo json_encode($arr, JSON_PRETTY_PRINT);
  12.     //Возвращаем данные в JS в JSON-формате (XMLHttpResponse)
  13.         exit;
  14. }

где id - ID, pr - ФАМИЛИЯ, ps - ИДЕНТИФИКАТОР ДОЛЖНОСТИ, по которому я и сортирую работяг.
Дальше, эти зависимые списки надо будет вставить в Js

У Вас здесь ошибка:

Д.б.
PHP:
скопировать код в буфер обмена
  1. $arr[] = array($rws["id"] => $rws["pr"]);
Я показал Вам рабочий код, вставлющий оптион в Js и управляющий тэгами селект.
Вам нужно заменить тэги селект в Вашем коде и убрать jQuery.
Vladimir Kheifets Отправлено: 18 Января, 2022 - 21:10:18 • Тема: PHP скрипт обработчик • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 837
don.bidon пишет:
А ничего, что кража контента?

А может обойдётся, если переименовать $rezultat на $uname?
Чтобы никто не догадался...
Vladimir Kheifets Отправлено: 18 Января, 2022 - 12:05:02 • Тема: PHP скрипт обработчик • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 837
sherxan-g пишет:
Уважаемые Программисты как сделать так чтобы месте return $rezultat[0]; бил return $uname; или return $rezultat[0]; билл ровна на return $uname;
вот вес код
PHP:
скопировать код в буфер обмена
  1.  
  2. function checkValid($url,$pass){
  3. $opts = array('http' =>
  4.         array(
  5.             'method'  => 'POST',
  6.             'proxy' => (defined('PROXY'))?('tcp://' . PROXY):null,
  7.             'user_agent'=>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20120427 Firefox/15.0a1',
  8.             'header'  => 'Content-type: application/x-www-form-urlencoded',
  9.             'content' => http_build_query(
  10.                 array(
  11.                     'pass' => $pass,
  12.                 )
  13.         )));
  14.     $context  = stream_context_create($opts);
  15.     preg_match('/<td><nobr[^>]*>(.*?)<a/ims',@file_get_contents($url, false, $context),$rezultat);          
  16.     return $rezultat[0];        
  17.            
  18. }
  19.  

Заранее Вам большое спасибо

Простите, непонятно, чем не устраивает $rezultat.
Если очень хочется можно переименовать $rezultat на $uname,
но результат не изменится.
Vladimir Kheifets Отправлено: 18 Января, 2022 - 11:53:17 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:
В данный упёрся в то, что не могу в JS-коде средствами РНР вывести дальше список Должность -> Работники, так как РНР в JS не выполняется.

Добрый день!
Верно, РНР выполняется на сервере, а JS в браузере клиента, НО, из JS можно отправить XMLHttpRequest на сервер, там отработать на РНР запрос к БД и вернуть результат назад в JS. Так это работает:
CODE (html):
скопировать код в буфер обмена
  1. <?php
  2. if(isset($_GET['idSelect']))
  3. {
  4.         header('Content-Type: application/json;charset=utf-8');
  5.         /*
  6.         Здесь должен быть запрос к БД таблица "Personal"
  7.         SELECT id, name FROM Personal WHERE id='{$_GET['SelectedInd'])}'
  8.         нужно создать массив  $arr
  9.         */
  10.         $arr = array(1 => "Иванов", 2 => "Петров", 3 => "Сидоров" );
  11.     echo json_encode($arr, JSON_PRETTY_PRINT);
  12.     //Возвращаем данные в JS в JSON-формате (XMLHttpResponse)
  13.         exit;
  14. }
  15.  
  16. ######################################################
  17. $Position = [0=>"Должность", 1 => "Haчальник", 2 => "Водитель", 3 => "Рабочий"];
  18. $PositionOpt="";
  19. foreach($Position as $val=>$text)
  20.         $PositionOpt.="<option value='$val')>$text</option>";
  21. echo <<<HTML
  22. <html>
  23. <head>
  24. <title>CreateOption</title>
  25. <style>
  26. #PositionName{visibility: hidden}
  27. </style>
  28. </head>
  29. <body>
  30. <select id="Position">$PositionOpt</select>
  31. <select id="PositionName"></select>
  32. </body>
  33. <script>
  34. select = document.querySelectorAll("select");
  35. selectPosition = select[0];
  36. selectPositionName = select[1];
  37. select[0].addEventListener("change", function (e){
  38.         id = e.target.id;
  39.         i=e.target.selectedIndex;
  40.         getOptions(id, i);
  41. });
  42.  
  43. //------------------------------
  44. setOpt = function(IdSelect, optObj){
  45.         select2 = document.getElementById(IdSelect);
  46.         select2.innerHTML = "";
  47.         opt = document.createElement('option');
  48.         opt.innerHTML = "Фамилия";
  49.         select2.appendChild(opt);
  50.         for(i in optObj)
  51.         {
  52.                 opt = document.createElement('option');
  53.                 opt.innerHTML = optObj[i];
  54.                 select2.appendChild(opt);
  55.         }
  56.         select2.style.visibility="visible";
  57. };
  58. //-----------------------------
  59. getOptions = function(idSelect, SelectedInd){
  60.         req = new XMLHttpRequest();
  61.         req.responseType = "json";
  62.         url = "?idSelect="+idSelect+"&SelectedInd="+SelectedInd;
  63.         req.open("get", url, true);
  64.         req.responseType = "json";
  65.         req.onreadystatechange = function()
  66.         {
  67.            if (this.readyState == 4 && this.status == 200)
  68.            {
  69.                         try
  70.                         {
  71.                                 rsp = this.response; //получаем JSON Object
  72.                                 console.log(rsp);
  73.                                 setOpt(idSelect+"Name", rsp);
  74.                         }
  75.                         catch (e)
  76.                         {
  77.                                 err={state:this.readyState,err:e.message,url:url};
  78.                                 console.log(err);
  79.                         }
  80.                 };
  81.         };
  82.         req.send();
  83. };
  84. </script>
  85. </html>
  86. HTML;
  87. ?>
Удачи!
Vladimir Kheifets Отправлено: 17 Января, 2022 - 19:36:17 • Тема: Нужна помощь в создании скрипта для создания графиков дежурств • Форум: Напишите за меня, пожалуйста

Ответов: 33
Просмотров: 3071
Ruskat пишет:
Создал визуально блок.
Имеет такой вид
[img]https://picua[dot]org/images/2022/01/17/76643df7d947f80db73d60c055eef679[dot]md[dot]png[/img]
Нужно добавлять или удалять строки в блоках и сами блоки.
Каждая бригада должна буть как отдельная статья на сайте, но снисок бригад должен быть изъят из базы только в соответствии с заданной датой.

К сожалению, ссылка не открывается.
Цитата:
Error 1020 Ray ID: 6cf00e83c9e33b19 • 2022-01-17 13:51:09 UTC
Access denied

Вы можете загрузить картинку на этом сайте.
Что такое блок и статья?

Возможно, что на сайте должна быть страница "Смены" для ввода, редактирования и сохранения в БД графики работы по сменам.
По идее должно быть несколько таблиц в БД:

Вид деятельности персонала
Код1, должность
1 начальник
2 рабочий
3 водитель

Персонал
Идр, ФИО, Код1, Адрес, Телефон, Мэйл, Зарплата ...

Смены
Идс, Дата/время с, Дата/время по, Бригада
В поле Бригада должны записываться Идп персонала(JSON или сериализованный массив)

Отпуска
Идо, Идр, Дата/время с, Дата/время по, Код отпуска

Возможно и еще что-то...

Должна, быть страница "Персонал", для ввода, редактирования этих данных и
страница "Смены", для которой должна выбираться эти данные.
В формуляре на странице "Смены" должны быть поля для ввода даты и времени смены.
Если смена была введена, то ранне введённые данные должны выбираться для редактирования.
Должны быть списки для выбора начальника, водителя и рабочих.
Имена содруников фирмы должны вибираться из БД с учетом отпусков или больничных.
Выбранные имена должны записываться список бригады или по необходимости удаляться из него.
Vladimir Kheifets Отправлено: 16 Января, 2022 - 11:56:08 • Тема: Call to a member function fetch_assoc() on boolean in • Форум: Вопросы новичков

Ответов: 2
Просмотров: 229
didifogdd пишет:
ВЫХОДИТ ОШИБКА:Call to a member function fetch_assoc() on boolean in ГОВОРИТ НА 39 СТРОКЕ, ПОМОГИТЕ ПОЖАЛУЙСТА

Добрый день!
1.Попробуйте добавить в начало кода:
2.У Вас ошибка в запросе. $result=false. Поэтому возникает фотальная ошибка в 39 стр.
Нужно добавить проверку $result
PHP:
скопировать код в буфер обмена
  1. if($result)
  2. {
  3.   $user = $result -> fetch_assoc();
  4. }

Удачи!

P.S. Лучше было бы показывать коды использую тэги (кнопки), например, PHP
Vladimir Kheifets Отправлено: 16 Января, 2022 - 07:56:37 • Тема: Помогите с регулярным выражением на PHP • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 377
sherxan-g пишет:
Нужно написать регулярное выражение, которое бы находило цифры в тегах
цифры каждый раз бывает разный.

Добрый день!
Можно сделать так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function getTitle($url) {
  3.     $data = file_get_contents($url);
  4.     preg_match_all('{<br>(.*?)\ <span>}', $data, $matches);
  5.     return $matches[1][1];
  6.  }
  7. echo "|",getTitle('http://v832167.hosted-by-vdsina.ru/test.php'),"|";
  8. /*
  9. |5.3.29|
  10. */
  11. ?>

А так найдём три числа разделённые точками:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function getTitle($url) {
  3.     $data = file_get_contents($url);
  4.     preg_match_all('/\d+\.\d+\.\d+/', $data, $matches);
  5.     return $matches[0][0];
  6.  }
  7. echo "|",getTitle('http://v832167.hosted-by-vdsina.ru/test.php'),"|";
  8. /*
  9. |5.3.29|
  10. */
  11. ?>
Удачи!

Страниц (59): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB