Не отрабатывает код!
Проблема решена самым элементарным способом! Создал ещё одну таблицу, в неё записывается выбранная сейчас дата! После идёт к ней запрос, узнаём дату, фильтруем, и выводим аяксом (подгружаем).
---------------------------------- ТЕМУ МОЖНО ЗАКРЫВАТЬ! ---------------------------------- Доброй ночи коллеги! Столкнулся с проблемой на аяксе! Вот о чудо тестовая вещь! Для дальнейшего понимания о чём идёт речь, перейдите пожалуйста на сайт! И выполните инструкцию! По умолчанию в селекте стоит "Работа", нажмите "показать". Перед вами откроется табличка! Рядом с к нопкпой "показать" появиться фильтр" по дате начала (колонка подписана в таблице)! Если мы кликаем на кнопку "фильтр" и оба поля пусты, то нам выдаст "alert" что вы не заполнили дату! Если заполнить хоть одно поле или оба "С (дата) по (дата)", то нам выдаёт такое сообщение: Код:
Notice: Undefined index: in_filter В js строка alert(data) показывает, что фильтр работает нормально, так как в дата приходит ответ отфильтрованый, но вот беда, подгрузка не выполняется, а выводит выше предоставленные ошибки! Я понимаю, что это за ошибки но как этого избежать? И так js:
//---Фильтр работ по дате
$( "#date_filter input" ).datepicker({
dateFormat: 'dd.mm.yy',
});
$('.filter').click(function(){
start = $('#in_filter').val();
finish = $('#out_filter').val();
if((start == '') && (finish == '')){
alert('Вы не выбрали дату!');
}else{
$.post("ajax.php",
{
filter_date: "date",
in_filter: start,
out_filter: finish
},
onAjaxSuccess
);
function onAjaxSuccess(data)
{
$('#work').load('ajax.php', {filter_date:"date"});
alert(data);
}
}
});
//---Фильтр работ по дате
А теперь PHP:
<?php
require $_SERVER['DOCUMENT_ROOT'].'/config.php';
$other = new Other;
//Филтр по дате начала!
if(isset($_POST['filter_date']) && $_POST['filter_date']=='date'){
$in_filter = $_POST['in_filter'];
$out_filter = $_POST['out_filter'];
if(($in_filter != '') && ($out_filter == '')){
$q = mysql_query("SELECT * FROM work WHERE datestart >= '".$in_filter."'");}
elseif(($in_filter == '') && ($out_filter != '')){
$q = mysql_query("SELECT * FROM work WHERE datestart <= '".$out_filter."'");}
elseif(($in_filter != '') && ($out_filter != '')){
$q = mysql_query("SELECT * FROM work WHERE datestart >= '".$in_filter."' AND datestart <= '".$out_filter."'");}
while($row = mysql_fetch_assoc($q)){
?>
<tr>
<td><?=$row['id']?></td>
<td><?=$row['name']?></td>
<td><?=$row['stage']?></td>
<td><?=$row['plot']?></td>
<td><?=$row['face']?></td>
<td><?=$row['datestart']?></td>
<td><?=$row['datefinish']?></td>
<td><input type="checkbox" name="work[]" value="<?=$row['id']?>"></td>
</tr>
<?
}
}
|
Вам же английским языком написали
Undefined index: in_filter нет такого индекса в посте |
Ну вот же оно:
if(isset($_POST['filter_date']) && $_POST['filter_date']=='date'){
$in_filter = $_POST['in_filter'];
Это называется: а и б сидели на трубе, а курило, б дымило, что др....ло на трубе? Следующие строки сообщений сервера попросту вытекают из первого после которого скрипт продолжает молотить себе по яйцам, потому что нет нигде проверок на ошибку и нет эксепшнов. |
ПО ходу ведения
Чтобы не маятся с массивом, при условии нежирных зависимостей, пишите кложу в которой раскидываете массив на обычные переменные.
$save_req = function() use($config) {
extract($_POST); // все что там есть - высыпалось идентификаторами
if(isset($in_filter, $out_filter, get_filter, $set_filter, take_filter, $bring_filter) {
// blah-blah-blah
}
};
да иссет как и унсет принимает список аргументов и нул для него - не сет. Пустые строки запросам не страшны. ПРосто ничего не найдется. ЗЫ Без кложи (которая для защиты namespace) можно юзать префикс в экстракте или натурально namespace |
Народ, да это я в курсе, но вы логику понять можете, что когда выполняется эта строка
$('#work').load('ajax.php', {filter_date:"date"});
то это не работает
if(isset($_POST['filter_date']) && $_POST['filter_date']=='date'){
$in_filter = $_POST['in_filter'];
|
Вы сначала провереку поставьте и направляйте в алерт причинный текст заголовка (который ежу понятно надо прописать) и тогда найдете что где отвалилось и вообще ваш ява-скрипт ничтожен. Проверять все надо на сервере. Любой дятел в лесу отгрузит вам что хочет из консоли или плагина.
$('#work').load('ajax.php', {filter_date:"date"});
По этому поводу ничего не могу посоветовать, потому что смысла криптографии не улавливаю. |
Цитата:
Я не понимаю что в терминах аякса и тем более живерного является successful элементом, но, если вот тут 14 in_filter: start, у вас null, или там undefined, или false - то в посте in_filter не будет ВООБЩЕ как такового. Почитайте что такое successful элемент form-data |
Цитата:
|
В форме:
<input type="checkbox" name="checkbox"/> чек бокс не нажат, форма отправлена. Будет в $_POST элемент 'checkbox'? Нет. И это хорошо. Нет checkbox значит НЕ нажат. А чтобы это понять надо проверить if(isset($_POST['checkbox']))// А вы не проверяете. Ы: Нажал я таки ссылку и что же - там туча этих самых чекбоксов которые я взял для примера как самый типичный глюк программистов не знакомых с глюкавостью веба. Если чекбокс не нажат на сервер никакого FALSE, или 0, или NULL не придет. Ничего не придет и все. Исходя из заведомости знания что должно прийти можно сделать вывод что было, а что не было нажато. |
| Часовой пояс GMT +3, время: 08:41. |