![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| DARKLOTOS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
Доброго времени суток! Пришёл на форум тупо от безысходности. Есть очень важный проект, на него потрачено огромное колличество времени (пол года жизни =) ). Задача в принципе проста, но для меня невыполнима, точнее выполнима, если это не выходит за рамки php, но появилось условие, которое вынуждает использовать AJAX. Помогите с фукнцией... Гугл как не странно ничего толкового по этому вопросу не дал =(, книги тоже, только мозг вынесли.
Задача значит следующая, банальная до ужаса, нужно чтобы значение отмеченных checkbox менялось в БД с 0 на 1. После выполнения запроса к БД пользователю выдаётся список, который строится вот таким кодом
Т.е. если в таблице значение поля personal=1, то здесь отображается Checked, в противном случае пустой чекбокс. Здесь есть кнопка Submit "Result". Есть указание от неё избавиться, т.е. сделать так чтобы при отметке чекбокса его значение в БД сразу менялось. Это же можно сделать через xmlHttpRequest, кот только как, я не знаю. Подскажите плиз. |
|||
|
||||
| EmilRegis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 21.9.2007 Репутация: 3 Всего: 4 |
так в чём проблема..Гуглишь по запросу AJAX примеры, получаешь пример работы с асинхронными запросами и по клику на чекбоксах отправляешь на сервер нужную тебе информацию, а на сервере уже апдейтешь твою таблицу в бд
|
|||
|
||||
| DARKLOTOS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
Логически я тоже понимаю что должно быть именно так, проблема с реализацией, как именно можно передать серверу запрос на изменение данных в БД без использования кнопки?
Это сообщение отредактировал(а) DARKLOTOS - 8.6.2011, 10:33 |
|||
|
||||
| Evghenusi |
|
||||||||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: 3 Всего: 15 |
и распиши пожалуйста по пунктам что тебе надо Это сообщение отредактировал(а) Evghenusi - 8.6.2011, 11:06 |
||||||||
|
|||||||||
| DARKLOTOS |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
По пунктам? Легко! =)
1. Показать пользователю выпадающий список с номерами телефонов, по которым он звонил в прошлом месяце.
2.В зависимости от выбора отобрать с БД все звонки на указанный номер за прошлый меяц и выстроить в таблицу.
В результате пользователь видит все звонки за прошлый месяц, в виде таблицы с чекбоксами. Визуально чекбоксы заменены на красную кнопку Personal(если отмечен) либо на зелёную кнопку Business(если не отмечен) Как сделано: Выводится список, пользователь отметил, нажал Result, посылается запрос на изменение поля personal в таблицу Calls и на запись некоторых данных в таблицу Stats Как нужно: При клике на чек Business он должен не просто сменить значение на checked но и выполнить запрос к БД, изменив в таблице Calls поле personal у этого звонка. Чтобы пользователю не нужно было нажимать кнопку. Хотя я так думаю в любом случае кнопка останется, но уже для того чтобы передать данные в таблицу Stats. Для чего это делается: 1. Пользователи не всегда нажимают кнопку, а если они забыли, им приходится отмечать всё сначала, потому-что после уничтожения сессии данные теряются. 2. Проверяющему будет проще ориентироваться в ситуации, когда он будет заходить и видеть что пользователь был в системе,отметил звонки (т.е. их значение в БД 1), но ещё не окончательно(таблица Stat пустая), значит результат рассчётов ещё будет меняться. Это сообщение отредактировал(а) DARKLOTOS - 8.6.2011, 14:18 |
||||
|
|||||
| EmilRegis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 21.9.2007 Репутация: 3 Всего: 4 |
так что в итоге непонятно? как ajax-ом пользоваться? или что?
|
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: 3 Всего: 15 |
сколько платишь за реализацию?
если будет настроение по читать - сюда (или на методе POST поищи, он даже лучше) |
|||
|
||||
| DARKLOTOS |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
Именно! Вообще непонятно. На php работаю, c MySQL вроде дружу, а что это за зверь такой AJAX вообще не знаю. Добавлено @ 14:54
Прочитал. Там только показано как вытягивать данные из БД. Это у меня и так работает, без AJAX Это сообщение отредактировал(а) DARKLOTOS - 8.6.2011, 14:56 |
||||
|
|||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 12 Всего: 33 |
Пример как раз тот, что вам нужен. Дальше дело за вами
|
|||
|
||||
| DARKLOTOS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
В примере показано только как вытянуть данные.
А можно это как-то сделать используя такую функцию?
Это код с другого проекта Это сообщение отредактировал(а) DARKLOTOS - 8.6.2011, 15:15 |
|||
|
||||
| Evghenusi |
|
||||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: 3 Всего: 15 |
|
||||
|
|||||
| EmilRegis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 21.9.2007 Репутация: 3 Всего: 4 |
DARKLOTOS, вот всё про ажакс http://javascript.ru/ajax/intro
Просто почитайте, там всё понятно. Если же используете жквери(как в вашем примере выше), то тут всё ещё проще, хотя лучше сначала понять как это всё работает, а потом уже применять библиотеки.
Здесь url - адрес, куда отсылается запрос, success - callback-функция, которая вызывается после того как сервер вернёт ответ на ваш запрос. Этот ответ в php возвращается после всех необходимых манипуляций с БД обычным echo |
|||
|
||||
| DARKLOTOS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
Да. Конечно разница ощутима =) Теперь вообще ничего не выводится =) И переделывание цикла не решит проблемы с кнопкой |
|||
|
||||
| DARKLOTOS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
Пойдём более коротким путём.
Есть ли где-нибудь скрипт, который при клике на чекбокс, сразу меняет значение ячейки в БД, без подтверждающих кнопок?! |
|||
|
||||
| EmilRegis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 306 Регистрация: 21.9.2007 Репутация: 3 Всего: 4 |
чем не устраивает
|
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: 3 Всего: 15 |
хотя ни мой редактор, ни подсветка синтаксиса на этом форуме ошибок не показывают. может моя вина в том что echo не дописал в твоём коде....хз, но всё равно извини а эту проблему решишь только ты, или полугодовой проект тоже не ты писал? пока что мотивации писать за тебя нету(( P.S. всё закрываю рот, а то больше флуд чем помощь. модераторы и посетители звиняйте за лишние буквы Это сообщение отредактировал(а) Evghenusi - 9.6.2011, 10:24 |
|||
|
||||
| DARKLOTOS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
Объясните плиз как это использовать. Ну прикрутил я этот код к странице, у меня теперь при входе на страницу выскакивает сообщение Ответ. И что мне это дало?
Как это использовать чтобы подтягивать данные из БД и отправлять туда результат? Проект писал я, но я же не использовал JS, там был только php, а на php я всегда для запросов использую кнопку. Это сообщение отредактировал(а) DARKLOTOS - 14.6.2011, 08:59 |
|||
|
||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: 12 Всего: 33 |
Разбейте задачу на несколько частей :
1) Вам нужна функция, которая принимает от вас данные(урл и пост данные), отправляет на сервер 2) Отрисовать форму с checkbox`ами и повесить на них событие (change или click) и по этому событию собрать данные, вызвать функцию из пункта 1 3) На сервере функция которая обрабатывает данные, вносит изменения в бд и отправляет ответ 4) Проверить все и попить чайку |
|||
|
||||
| DARKLOTOS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.12.2010 Репутация: нет Всего: нет |
=(
Мда, на словах всё та легко, а для меня тёмный лес этот JS как можно переделать этот код, чтобы он нормально работал. А тот тут получается что после того как отмечены чекбоксы, если отметки убрать то вместо 3х их становится 6. Или ошибка не в JS? <?php if (isset($_POST['vs'])) { var_dump($_POST['vs']); die(); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('input:checkbox').change(function() { var vals = new Array(); $('form :checked').each(function() { vals.push(this.value); }) $('#container').load('test.php', { vs: vals } ) }) }) </script> </head> <body> <form action="" method="post"> <input type="checkbox" name="check[]" value="1" /> 1<br /> <input type="checkbox" name="check[]" value="2" /> 2<br /> <input type="checkbox" name="check[]" value="3" /> 3<br /> </form> <div id="container"></div> </body> </html> Это может быть из-за того что в качетсве обработки указан самй текущий файл. Т.е. JS и PHP в одном файле находятся, и он получается сам себе данные передает Это сообщение отредактировал(а) DARKLOTOS - 14.6.2011, 12:28 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |