Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Отфильтровать из всех новостей 3 ближайших по дате к заданной дате

Не могу дотумкать, как отфильтровать из всех новостей 3 ближайших по дате к заданной дате.
То есть, если у меня есть новости за 02.01, 20.01, 04.02, 13.02, 05.06, 15.06, 23.11
Я хочу, если дана дата 13.02, вывести три "соседние" по датам новости 20.01, 04.02, 05.06, то есть и раньше, и позже, (но не текущую, но это-то решается с помощью ID).
Ответ: в каждой дате у тебя по одной новости или по несколько?

02.01
20.01
04.02
13.02 <- твоя дата
05.06
15.06
23.11

т.е. у тебя получается в фильтре ['>DATE_ACTIVE_FROM']=>'13.02', т.е. выберет 02.01 20.01 04.02 (ближайшие с лева)

т.е. у тебя получается в фильтре ['<DATE_ACTIVE_FROM']=>'13.02', т.е. выберет 05.06 15.06 23.11 (ближайшие с права)

ну и нужно сортироваться по разному в разных запросах
Вопрос: DataTable сортировка даты

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

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function sorter()
{
    $(document).ready(function(){
        $('#table_id').DataTable({
            searching:false,
            "aoColumnDefs":[
        {"aTargets":[0],'bSortable':false},
        {"aTargets":[8],"bSortable":false},
        {"aTargets":[1], "sType": "ruDate"}
        ],
        language: {
                "search": "Поиск:",
                "lengthMenu": "Показать _MENU_ записей",
                "info": "Записей с _START_ до _END_ из _TOTAL_ записей",
                "infoEmpty": "Записи с 0 до 0 из 0 записей",
                "infoFiltered": "(отфильтровано из _MAX_ записей)",
                "zeroRecords": "Записи отсутствуют",
                "emptyTable": "В таблице отсутствуют данные",
                "paginate": {"first":"Первая",
                "previous":"Предыдущая",
                "next": "Следующая",
                "last": "Последняя"
                }
            }
        });
    });
}
    jQuery.extend(jQuery.fn.dataTableExt.oSort, 
    {
        "ruDate-ask": function(a,b){
            var ruDatea=$.trim(a).aplit('.');
            var ruDateb=$.trim(b).split('.');
 
            if (ruDatea[2]*1<ruDateb[2]*1) return 1;
            if (ruDatea[2]*1>ruDateb[2]*1) return -1;
            if (ruDatea[2]*1 == ruDateb[2]*1) 
            {
                if (ruDatea[1]*1<ruDateb[1]*1) return 1;
                if (ruDatea[1]*1>ruDateb[1]*1) return -1;
                if (ruDatea[1]*1 == ruDateb[1]*1) 
                {
                    if (ruDatea[0]*1<ruDateb[0]*1) return 1;
                    if (ruDatea[0]*1>ruDateb[0]*1) return -1;
                }
                else return 0;
            }
        },
        "ruDate-desk": function(a,b) {
            var ruDatea=$.trim(a).aplit('.');
            var ruDateb=$.trim(b).split('.');
 
            if (ruDatea[2]*1<ruDateb[2]*1) return 1;
            if (ruDatea[2]*1>ruDateb[2]*1) return -1;
            if (ruDatea[2]*1 == ruDateb[2]*1) 
            {
                if (ruDatea[1]*1<ruDateb[1]*1) return 1;
                if (ruDatea[1]*1>ruDateb[1]*1) return -1;
                if (ruDatea[1]*1 == ruDateb[1]*1) 
                {
                    if (ruDatea[0]*1<ruDateb[0]*1) return 1;
                    if (ruDatea[0]*1>ruDateb[0]*1) return -1;
                }
                else return 0;
            }
        }
    });
 Комментарий модератора 
Если Вы так и продолжите размещать темы, как Бог на душу положит, увидите перед собой карту!
Ответ: Сейчас тогда попробую, если что отпишу

Добавлено через 38 минут
Уф, Да все работает

Добавлено через 42 минуты
Уф, Как понимаю данный сервис помогает в разработке?

Добавлено через 11 минут
Уф, И как я понял она только работает в том случае когда дата дд.мм.гг. А если поменяешь формат даты на дд.мм, то уже сортировка не работает. Там примерно что нужно поменять в коде, если не секрет? Просто я буду сейчас устанавливать фильтрацию по году. В принципе формат гг не нужно будет мне

Добавлено через 2 минуты
Все я понял просто пунктом [2] просто убираем и все.
Вопрос: Отфильтровать вложенный массив объектов

Всем привет!

Есть объект по типу:

var obj = [
              {name : "name",
               componentTypes : [{id: 1, name: "ct1"}, {id: 2, name: "ct5"}]
              },
             {name : "name22",
              componentTypes : [{id: 1, name: "ct"}, {id: 2, name: "ct5"}]
             },
           {name : "name33",
            componentTypes : [{id: 1, name: "ct1"}, {id: 2, name: "ct7"}]
           }
];


Есть массив элементов ["ct1", "ct7","ct5"].

Нужно отфильтровать исходный массив и получить только те элементы, у которых ComponentTypes соответсвенно ["ct1", "ct7","ct5"].
Ответ:
Manonia
Нужно отфильтровать исходный массив и получить только те элементы, у которых ComponentTypes соответсвенно ["ct1", "ct7","ct5"].

Крути в цикле по obj, проверяй componentTypes... Если все элементы не совпадают - делай соответствующие выводы.
Вопрос: Как запарсить данные, которые генерируются после выбора даты в календаре

Добрый день.

Имеется к примеру
В конце строки Сеансы в кинотеатрах *** вторник 8 сентября есть кнопка календаря. В нем есть даты, по нажатию на которые выдается новая порция данных в виде html. Я знаю, как парсить html, но еще нуб и не знаком с механизмом генерации данных в js.

Как я понимаю, есть 2 варианта вывода информации с использованием js:
1) Когда рендерится html страница со всеми данными и js просто скрывает часть инфы, но через дебаг инструменты к этим данным добраться можно и легко запарсить.
2) Когда идет именно генерация данных по какому-то событию, как в данном случае, по нажатию на дату.

Подскажите пожалуйста:
1) В данном примере, есть ли где-то "скрытая в недрах js" ссылка на выбираемую дату, которую можно как-то перехватить и перейти по ней напрямую в браузере?
2) Если есть, как эту ссылку перехватить? Пол дня облазил инет, дебаг инструментарий хрома ковырял, но не нашел. Может плохо искал? Направьте пожалуйста.

Или js не работает так, как я предполагаю (не выдает никаких юзабельных ссылок), и мне нужно смотреть в сторону WebDriver'ов для имитации нажатий на даты?

Спасибо.
Ответ: TitanFighter, это на евенте построено, и когда евент происходит делается запрос(ajax) в базу данных, то есть на сервер
а потом результат обрабатвается и выводятся данные

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

Добавлено через 1 минуту
короче, сделать это сразу, не зная js, можно конечно, но потом обплюётесь, обматеритесь и пошлёте это неблагодарное дело(писать расширения), к чёрту
Вопрос: Форматирование даты

Существует ли в принципе возможность форматировать дату в полях ввода и при выводе в таблице, но так чтобы это не влияло на сами данные, которые затем будут отправлены на сервер?

У меня на сервере пустая дата это "0001.00.00 00:00", но на клиенте хочется чтобы в поле ввода даты, если она "пустая" выводилась чистая строка, а не год рождения Иисуса, а то люди пугаются такой даты.

Пробовал в моделе использовать convert: function (value) {} но это влияет на данные, которые затем оправляются на сервер, т.е. я заменяю якобы пустую дату на пустую строку и на клиенте вроде всё нормально, но эта пустая строка возвращается на сервер,а там всё ломается и не может распарсится из json.

Хочется, чтобы дата хранилась как "0001.00.00 00:00", но клиент видел пустую строку и если он дату не выбирал, то на сервер она вернулась в том же виде, что и пришла, т.е. "0001.00.00 00:00".

Есть конечно в полях ввода свойство format: "d.m.Y H:i", но оно не делает то что хотелось бы.
Ответ:
Сообщение от Пролетарий
Сообщение от nohuhu
Опция submitFormat вам поможет: .
К сожалению не помогла, она преобразует дату в любой формат для отправки на сервер, но если дата null или пустая строка, то на сервер всё равно уходит null, который в дату не может там распознаваться.
На такой случай есть опция поля в модели: .
Вопрос: Сохранение данных в txt

Мне нужно на страницу добавить 2 текстовых поля и кнопку, а в HTML я полный 0.
В первое поле вводится имя (пример: Andrey), во-второе поле вводится дата рождения (пример: 06.08.1991).
При нажатии на кнопку эти данные должны сохраниться в .txt файл по пути -
Текстовик должен иметь название из первого поля (имя), и в этот текстовик надо записать данные из второго поля (дату рождения).
Пример, в поле 1 ввожу имя "Andrey", в поле 2 вводу дату "06.08.1991" - нажимаю на кнопку и у меня создается текстовый файл - и в нем записана дата рождения.

Можно ли сделать так? Помогите, кому не сложно. Буду благодарен.
Ответ:
Сообщение от ERTGER
Можно ли сделать так?
да
Сообщение от ERTGER
Мне нужно на страницу добавить 2 текстовых поля и кнопку, а в HTML я полный 0.
Почитать про формы HTML с примерами можно тут
Сообщение от ERTGER
При нажатии на кнопку
Почитать про обработку данных с формы в PHP можно тут
Сообщение от ERTGER
При нажатии на кнопку эти данные должны сохраниться в .txt файл по пути -
Записать данные в файл можно этой функцией
Вопрос: Как можно получить результат работы php скрипта после отправки данных через ajax

Добрый день
Прошу помощи.

Делаю следующее:
при клике на чекбокс (с датой) должны отображаться связанные с данным
чекбоксом места без перезагрузки страницы.
Есть js скрипт, который меняет отмеченный чекбокс и отсылает выбранную дату php cкрипту:
$(function(){
    $('.checkbox-row :checkbox').change(function(){
        if (!this.checked) return;
        $('.checkbox-row :checked').not(this).prop('checked',false);
        if ($(this).is(':checked')) {
            var chk = $(this).attr("name");
            var chkVal = $(this).attr("value");
            $.ajax({
                url: 'test.php',
                type: 'post',
                data: { chk: chkVal },
                beforeSend: function() { alert(chk+ ' '+chkVal); },
                success: function(data) {$('.choose_place').load('test.php', function() {
                    alert('Load was performed.');

                });
                }
            });
        }
    });
});

Есть test.php, который делает выборку необходимых мест по переданной дате из бд:
<?php

$date_trip = isset($_POST['chk'])? $_POST['chk']:'';
$sql_select =  "SELECT date_place.id_place FROM date_place
                INNER JOIN DATE ON date.id_datetrip = date_place.id_datetrip
                WHERE date.datetrip =  '$date_trip'
                AND typeplace =  'available'";
$date_select = mysql_query($sql_select);
$count = mysql_affected_rows();
$info = '';
for($i=0; $i<$count;$i++){
    $date_info = mysql_fetch_assoc($date_select);//получаем из контейнера данные как ассоц массив

    $info.='<input type="checkbox" name="place[]" id="place_'.$date_info['id_place'].'" value="place_'.$date_info['id_place'].'">';
    $info.='<label for="place_'.$date_info['id_place'].'"></label>';
}
echo $info;

И есть текущий файл index.php , в
в который после выбора другой даты должен вернуться результат работы php скрипта.
Вопрос в том: как можно вернуть результат работы test.php в div class=''choose_place" на странице index.php.
Сейчас возращается пустой test.php, дата в test.php передается, запрос в бд рабочий, во всяком случае если просто вписать вручную WHERE date.datetrip = '2017-06-11' он верно выполняется в PhpMyAdmin.
В чем может быть проблема?
Ответ: Это никак не оправдывает писать так код. Например, зачем в запросе INNER JOIN, разве нельзя сразу выбрать то, что удовлетворяет и дате, и typeplace?
Вопрос: Сравнение даты с датой из базы данных - PHP БД

Код JavaScript отправляет AJAX запрос в PHP с датой. Как сделать проверку, есть ли такая дата в базе данных? Если есть то все хорошо, если нет то добавляем. Формат даты из кода
Код:
"Thu Nov 05 2015 00:00:00 GMT 0500 (RTZ 4 (Зима))"
 

, а в бд формат даты
Код:
"2015-11-26 00:00:00"
 

Код:
function(start) {
    $(
".fc-cell-overlay").click(function(){
        $.
ajax({
            
url'test.php',
            
data'postVar=' start,
            
type"POST",
            
success: function(data) {
                
alert(data);
            },
            
error: function(){
                
alert("No PHP script: ");
            }
        });
 
        return 
false;
    });

это php код здесь я получаю дату и сравниваю ее с базой,но не получается
Код:
$id $_POST['postVar'];
 
$result mysqli_query("SELECT * FROM events WHERE 'events'=$id");
 


PHP, JavaScript, SQL и другой код пишите внутри тегов [code=php]Тут код[/code]
Ответ: Скорее всё-таки ты его в таком виде берешь.

Добавлено спустя 1 минуту 18 секунд:
Ну или взял за основу пример из плохих рук )

Добавлено спустя 41 минуту 41 секунду:
в примерах я вижу такое:
Код:


eventReceive
: function(event){
    var start = event.start.format("YYYY-MM-DD[T]HH:mm:SS");



а у тебя как выглядит получение даты-времени в событии?

Добавлено спустя 35 секунд:
тема очевидно не про БД, а про JS. переношу
Вопрос: $.getJSON не получает данные

Доброго времени суток! Делаю выборку данных с помощью календаря в БД, задаю дату начал и конца, вывожу alert, но он получается пустой, если задать руками дату и время все работает. Заранее спасибо!
Код HTML5
1
2
3
4
5
6
7
8
9
10
11
<form id="form1" name="form1" action="<?php $_PHP_SELF ?>" method="GET" >
 <center>
 </center> 
 <div class="date" align= "center" >
  <label>Дата начала:</label>
  <input type="text" name="txtStartDate" id="txtStartDate" value = "2013-08-01"></input>
  &nbsp;&nbsp;&nbsp;
  <label>Дата окончания:</label>
  <input type="text" name="txtEndDate" id="txtEndDate" value = "2013-08-31"></input>
  <input type="submit" id="submit" value="Отправить" onclick=""></input>  
</form>
Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$stime =$_GET['txtStartDate'];
$etime =$_GET['txtEndDate'];
 
$query1 = 'SELECT * FROM pokazanie WHERE termometr_id=1 AND time >= "'.$stime.' 00:00:00" AND time <= "'.$etime.' 23:59:59"' ;
 
$result1 = mysql_query($query1) or die('Ошибка запроса: ' . mysql_error());
 
$djson1 = array();
$i=0;
 
while($row1 = mysql_fetch_array($result1)){
 
array_push($djson1,array($row1['time_unix'],$row1['meaning']));//Обьединяем в один
 
$i++;
}
 
echo str_replace('"','',json_encode($djson1));
Код PHP
1
2
3
$.getJSON('http://sa1.ru/json.php?&txtStartDate=' +txtStartDate +'&txtEndDate' +txtEndDate,    function (data) {
        
alert(data);
Ответ: Чтобы получить json данные с другого сайта надо чтобы там их отдавали как jsonP иначе только через php
Вопрос: JS Дата и время

Добрый день. Выполняю такое задание:
1.Создайте форму с текстовым полем, куда пользователь должен будет ввести дату своего рождения в формате ДД.ММ.ГГГГ (например, 25.05.1980).
2.С помощью регулярного выражения корректность ввода.
3.Вычислите и через innerHTML выведите отдельный блок, сколько секунд уже прожил данный человек.
4.Вычислите и через innerHTML выведите отдельный блок, сколько часов уже прожил данный человек.
5. Вычислите и через innerHTML выведите отдельный блок, сколько дней уже прожил данный человек.
И вот что у меня получилось:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Функции. Дата и время</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <script type="text/javascript">
        /* Используйте справочник */
        function checkForm(form) {
            var date = form.date.value;
            var m = date.match(/^[0-9][0-9\.]*[0-9][0-9\.]*[0-9][0-9][0-9][0-9]+$/);
            if (!m) {
                alert("Дата введена неверно");
                return false;
            }
            return true;
            var date = new Date();
            var d_s = date.getSeconds();
            var d_m = date.getMinutes();
            var d_h = date.getHours();
            var d_d = date.getDate();
            var d_m = date.getMonth();
            var d_y = date.getFullYear();
            var date_value = document.getElementById("time").innerHTML;
             var arr = time.split(".");
             var day = arr[0];
             var month = arr[1];
             var year = arr[2];
             var sec = document.getElementById("sec").innerHTML;
             var secunds = ((d_y - year) * 365 * 86400 ) + (d_m * 30 * 86400)+ (month * 30 * 86400) + (day * 86400) + (d_d * 86400) + (d_h * 3600) + (d_m * 60) + d_s;
             var minutes = ((d_y - year) * 365 * 1440 ) + (d_m * 30* 1440)+ (month * 30 * 1440) + (month * 30 * 1440) + (d_d * 1440) + (d_h * 60) + d_m;
             var days = ((d_y - year) * 365) + (d_m * 30)+ (month * 30) + (month * 30) + d_d + day;
             
        }
    </script>
 
<form name="myform" method="post" onsubmit="return checkForm(this)">
        <p>
            Date: <input type="text" placeholder="Введите дату своего рождения" id="time"/>
        </p>
        <p>
            <input type="submit" value="Отправить" />
        </p>
    </form>
    
<input type="text" placeholder="Результат" id="result"/>
<br />
<input type="text" placeholder="Результат" id="result"/>
<br />
<input type="text" placeholder="Результат" id="result"/>
</body>
</html>
Но програма так и не работает, помогите разобраться
Ответ: вы задание-то своё сами хоть раз прочитали?
в нём чётко написано, что в форме должно быть только одно текстовое поле для ввода даты рождения

а у вас внутри формы только "цирка с конями" не хватает, а так уже всё есть -- и кнопка сабмита формы, и три текстовых поля для показа каких-то результатов

интересно -- зачем вы указываете метод отправки данных, если по заданию форма никуда ничего отправлять не должна?

покажите -- где в вашем коде упомянуто свойство innerHTML, о котором в задании написано трижды?

Не по теме:

анекдот (с намёком)
- чем на работе занимаешься?
- программы пишу
- что, до килограммов ещё не дорос?



----------------------
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<style>
p {margin: 12px; padding: 12px; border-bottom: 1px solid #000}
</style>
<script>
function myFunc (str)
{
var arr = /^(\d\d)\.(\d\d)\.(\d\d\d\d)$/.exec (str);
 
if (!arr) {alert ('неверный формат даты'); return false}
var d = parseInt (RegExp.$1, 10),
    m = parseInt (RegExp.$2, 10),
    y = parseInt (RegExp.$3, 10),
    D = new Date (y, m - 1, d),
    N = new Date;
if (!y) {alert ('Вы указали несуществующий год'); return false}
if (!m || m > 12) {alert ('Вы указали несуществующий номер месяца'); return false}
if (D.getMonth () != m - 1) {alert ('Вы указали несуществующее число месяца'); return false}
if (D > N) {alert ('Вы ещё не родились? А кто же тогда здесь пишет?'); return false}
 
var Dsec = Math.floor (D / 1000),
    Nsec = Math.floor (N / 1000),
    Rsec = Nsec - Dsec,
    Rmin = Math.floor (Rsec / 60),
    Rhour = Math.floor (Rmin / 60);
 
var txt  = '<p>Вы прожили ' + Rsec + ' сек.</p>';
    txt += '<p>Вы прожили ' + Rmin + ' мин.</p>';
    txt += '<p>Вы прожили ' + Rhour + ' час.</p>';
 
document.body.innerHTML += txt;
 
}
</script>
<form>
Введите дату вашего рождения в формате ДД.ММ.ГГГГ
<input name="birthday" onchange="myFunc (this.value)">
</form>