Jump to content
  • 0

хелп, плз. Не знаю как еще назвать.


RodgerFox
 Share

Question

Всем привет, подскажите пожалуйста как мне быть?

Использую готовый скрипт, который создает диаграмму Ганта, на входе он считывает вот такой массив:

$data = array();
$data[] = array(
'label' => 'Рытье котлована под фундамент',
'start' => '2012-10-02',
'end' => '2012-10-04'
);

$data[] = array(
'label' => 'Монтаж фундаментных блоков',
'start' => '2012-10-04',
'end' => '2012-10-08'
);
// и т.п. , где label - название start - начальное время end - время завершения

Есть форма:

<form>
<p>3 инпута тут (название, дата начала и окончания)</p>
<!-- дальше те же самые инпуты, они могут добавлятся и удалятся, без ограничений -->
</form>

Вот я не пойму не как, как мне собрать всю информацию с этой формы и хранить их в виде, что представил в самом начале? Пробовал:

<input type="text" name="label[]">
<input type="text" name="start[]">
<input type="text" name="end[]">

и php

$result = array();
for($i = 0, $cnt = count($_POST['label']); $i < $cnt; $i ++) {
$result[$i]['label'] = $_POST['label'][$i]; // и здесь сразу добавляете очистку для входящих данных
$result[$i]['start'] = $_POST['start'][$i];
$result[$i]['end'] = $_POST['end'][$i];
}
var_dump($result);

Потом решил шаблонизировать, но как то не получилось, типа взять шаблон, что выше и подставлять данные из форм туда. Как это сделать, подскажите пожалуйста.

Edited by RodgerFox
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

Может дело в этом http://htmlbook.ru/html/form/method ?

PS: Путем тьмы идёшь, перебирая массив так.


$result = array_filter( array_map(function($i){
return isset( $_POST['label'][$i] ) && isset( $_POST['start'][$i] ) && isset( $_POST['end'][$i] )
? array(
'label' => $_POST['label'][$i],
'start' => $_POST['start'][$i],
'end' => $_POST['end'][$i],
)
: false;
}, array_keys( isset($_POST['label'] ) ? $_POST['label'] : array() ) );

Link to comment
Share on other sites

  • 0

Спасибо большое, еще вчера разобрался)) Просто на выходе не много отличалось от желаемого, но парсер в дальнейшем все "съел" хорошо.

Но у меня другой вопрос, не знаю куда его правильнее занести.

Вот в масиве 3 поля этих, а как правильно реализовать еще одно поле, его суть заключается в поиске потомка. Т.е. одному из масива мы указываем родителя. Это на тему сетевого планирования, не встречались с таким? Для расчета критического пути ну и рассчитывания параметров сетевого графика.

Вся соль в том, что мы сначала пишем название первой работы и задаем её временный промежуток, а при создании второй работы, на этой же страницы ( без перезагрузки) можем к новой работе указать, что она относится (т.е. предшествует выбранной). Тем самым создавая метку, и резервируем начальное время выполнения от завершения предыдущей.

Edited by RodgerFox
Link to comment
Share on other sites

  • 0

копаем в сторону многомерных массивов:


$data = array Workes (
"works-1" = array (
'label' => 'Рытье котлована под фундамент',
'start' => '2012-10-02',
'end' => '2012-10-04'
'metka' = > array (
'label' => 'Монтаж фундаментных блоков',
'start' => '2012-10-04',
'end' => '2012-10-08'
)
)

"works-2" = array (
'label' => 'Рытье котлована под фундамент',
'start' => '2012-10-02',
'end' => '2012-10-04'
'metka' = > array (
'label' => 'Монтаж фундаментных блоков',
'start' => '2012-10-04',
'end' => '2012-10-08'
)
)
и т.д...
);

мне кажется такая структура была бы лучше, не?

Link to comment
Share on other sites

  • 0

Ну так работаем, как обычно с деревьями.

Надо присвоить каждой задаче id (ну в базе-то они хранятся), и также дать второе поле task_id, в котором будет находится id родительской задачи.

А дальше уже проходим рекурсивно по списку задач и строим нужные структуры. Потом выводим их через шаблон в html (ну или что там нужно?).

копаем в сторону многомерных массивов:

...

мне кажется такая структура была бы лучше, не?

А если у задач будет больший уровень вложенности?

Link to comment
Share on other sites

  • 0

А если у задач будет больший уровень вложенности?

будет больше - пусть делает больше, в чем проблема?

а по этой задаче пока что такой - какой есть.

если же речь о динамике, то в задаче я не увидел ее упоминание...

Link to comment
Share on other sites

  • 0

будет больше - пусть делает больше, в чем проблема?

а по этой задаче пока что такой - какой есть.

если же речь о динамике, то в задаче я не увидел ее упоминание...

Ну так любая сферическая лошадь в вакууме делается, чтобы работать в реальном мире. От этого и надо отталкиваться.

Link to comment
Share on other sites

  • 0

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

И так, есть сетевые графики https://app.gantter.com/ ( один из лучших вариантов показать), скрываем поп ап, с правой стороны колонка название. пишим название, потом продолжительность. Создаем второй так же, и самое важное, теперь можно выбрать в колонке предшественники родительскую работу. После уже по полученным всем данным я расчитываю параметры и создаю диаграмму Ганта ru.wikipedia.org/wiki/Диаграмма_Ганта Но сделать первую часть, просто ппц, голову сносит.

Сначала за основу взял, эту модель Ганта - https://github.com/bastianallgeier/gantti ,сейчас уже не знаю как быть.

Link to comment
Share on other sites

  • 0

Не, я вордпресс не смотрел и вообще его не переношу.

Чтобы решить задачу, надо определиться с таким понятием, как:

qb9iyv9c9qs3.jpg

Так же, стоит покурить тему алгоритмов обхода деревьев.

А вообще я бы посоветовал разобраться с тем, как работает этот класс. Тогда его уже можно будет откорректировать по своему усмотрению. Ну и для самообразования будет полезно.

Link to comment
Share on other sites

  • 0

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

Разгадка в моем предыдущем комменте.

Link to comment
Share on other sites

  • 0

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

Я просто не знаю как мне указать эту чертовую глубину на пример. Вот создаю работы, как сразу же на этой странице выбрать родительскую работу?

Edited by RodgerFox
Link to comment
Share on other sites

  • 0

Ну я уже не знаю, как тебе объяснить. Только что за тебя все написать.

Гугли на тему рекурсивных функций. Это одна из основ функционального программирования. Да и вообще основа основ для обхода деревьев в программах. Не копипастить же сюда статьи из интернета?

В таких ЯП, как Erlang, вообще нету циклов, они там с помощью рекурсии организовываются.

Так что считай, что разобраться в этом материале для тебя необходимый минимум. По началу всем сложно, но в этом нет ничего сверхъестественного.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy