|
PHP / MySQL Создание динамических Веб-ресурсов |
14.12.2010, 22:17
|
#1
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Использование "промежуточного" php-скрипта
В php я немного нуб, простите за кривоватую формулировку.
Вообщем, у меня есть php-скрипт который ничего не отображает. Ему приходят переменные (через GET) и он их пишет в базу.
А есть страница со всякими переключателями, полями и прочей лабудой. На ней пользователь фактически формирует те переменные которые должны быть записаны в базу.
Когда пользователь совершает какое-либо действие на странице - переменные надо сразу записать в базу НЕ перезагружая стрницу.
Как это сделать?
|
(Offline)
|
|
14.12.2010, 22:22
|
#2
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.12.2010, 22:25
|
#3
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
О, как раз то что нужно))
А как нибудь получить и использовать на странице данные от этого php-скрипта?
|
(Offline)
|
|
14.12.2010, 22:26
|
#4
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Сообщение от cherepets
О, как раз то что нужно))
А как нибудь получить и использовать на странице данные от этого php-скрипта?
|
Там всё есть
|
(Offline)
|
|
14.12.2010, 22:40
|
#5
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Еще б я это всё внезапно понял))
Пролистав, я написал вот так:
$(document).mouseup(function(){ $i=1; while($i<11){ var Stoppos = $('#im'+$i).position(); if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open('GET','http://cherepets.99k.org/index.php?use=write&n='+$i+'&x='+ Stoppos.left + '&y=' + Stoppos.top +'&dat=2010.12.12',true); req.send(null); } else if (window.ActiveXObject) { req = new ActiveXObject('Microsoft.XMLHTTP'); if (req) { req.onreadystatechange=processReqChange; req.open('GET','http://cherepets.99k.org/index.php?use=write&n='+$i+'&x='+ Stoppos.left + '&y=' + Stoppos.top +'&dat=2010.12.12', true); req.send(); } } $i++}; });
По идее на скрипт при отпускании мыши должны быть отправлены координаты 10 объектов с именами im1 - im10. Но почему то этого не происходит
Есть идеи в чем я накосячил?
UPD: виснет на req.send(null);
|
(Offline)
|
|
15.12.2010, 00:49
|
#6
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Заюзай jQuery и метод оттуда load. (хотя бы потому что твой код не будет работать на разных браузерах)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
15.12.2010, 13:01
|
#7
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Всё равно не работает (хотя и не виснет).
$(document).mouseup(function(){ $i=1; while($i<11){ var Stoppos = $('#im'+$i).position(); $('#result').load('http://cherepets.99k.org/index.php?use=write&n='+$i+'&x='+Stoppos.left+'&y='+Stoppos.top+'&dat=2010.12.12'); $i+=1; }; });
Судя по всему запрос никуда не отправляется. Если задать переменные так {n:$i,x:=Stoppos.left,...} - виснет.
UPD: $.ajax({url}). Работает =)
Следующая проблема:
$query="DELETE FROM records WHERE Date='$dat';"; mysql_query($query, $db); $query="INSERT INTO records (Date) VALUES ('$dat');"; mysql_query($query, $db);
При этом старая запись с такой остается, а новая тоже добавляется. В принципе можно изменить структуру самой базы, но гораздо лучше будет, если заработает удаление)
|
(Offline)
|
|
04.01.2011, 14:09
|
#8
|
Нуждающийся
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений (для 24 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Запросы неправильные.
на добавление:
INSERT INTO records SET records.Date = STR_TO_DATE('$dat','%Y.%m.%d')
на удаление:
DELETE FROM records WHERE records.Date = STR_TO_DATE('$dat','%Y.%m.%d')
причем входящий параметр $dat должен Быть именно в том формате, который ты укажешь во втором параметре функции STR_TO_DATE
P.S и для безопасности обрабатывай входящие параметры. Чтобы не запороть всю базу некорректными запросами
|
(Offline)
|
|
04.01.2011, 20:03
|
#9
|
Знающий
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений (для 257 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Сообщение от HAMANN
Запросы неправильные.
|
Врёшь!! Запросы правильные.
Но вот откуда взялась переменная $dat??
Javascript неправильный. Какие, нахер, долары у переменных в JS? Надо так:
function sendData(i) { var Stoppos = $('#im' + i).position(); $('#result').load('http://cherepets.99k.org/index.php', { use: 'write', n: i, x: Stoppos.left, y: Stoppos.top, dat: '2010.12.12' }, function(responseText, textStatus, XMLHttpRequest) { if( i < 11 ) { sendData(i + 1); } }); } $(document).mouseup(function(){ sendData(1); });
----
Но лучше всего отправлять все данные (все 10 позиций) в одном запросе через массивы.
----
А в обработчике небольшое дополнение:
$dat = date('Y-m-d', strtotime($_GET['dat'])); //Мне так больше нравится :) $query="DELETE FROM records WHERE Date='" . $dat . "';"; mysql_query($query, $db); $query="INSERT INTO records (Date) VALUES ('" . $dat . "');"; mysql_query($query, $db);
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.01.2011, 13:21
|
#10
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Всем спасибо, тот скрипт закончен и прекрасно работает =)
Он и до этого был правильный, просто у хостера какая-то беда с MySQL вероятно.
Сейчас столкнулся с прямо таки паранормальным явлением у них. У поля NULL запрещен, но запись с пустым значением в этом поле все равно вносится. О_о
Возможно, конечно, это я что-то недопонимаю...
|
(Offline)
|
|
12.01.2011, 01:31
|
#11
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
У поля NULL запрещен, но запись с пустым значением в этом поле все равно вносится. О_о
Возможно, конечно, это я что-то недопонимаю...
|
Вообще хорошим тоном считается валидация ещё до записи в БД средствами похапе (или на чём там сайт)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
12.01.2011, 02:09
|
#12
|
Знающий
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений (для 257 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Сообщение от cherepets
Сейчас столкнулся с прямо таки паранормальным явлением у них. У поля NULL запрещен, но запись с пустым значением в этом поле все равно вносится. О_о
Возможно, конечно, это я что-то недопонимаю...
|
Пустое значение != NULL
Если присваеваешь, например, к varchar = '', то сохранится строка нулевой длины, а не NULL. Для int, float и т.д. сохранится 0. Чтобы присвоить NULL, его надо указать явно или просто пропустить в INSERT`e соответствующее поле.
|
(Offline)
|
|
12.01.2011, 16:29
|
#13
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Присвоение пустого поля происходит именно при пропуске в INSERT.
Что '' тоже значение я знаю))
Еще меня сильно удивляет что их сервер не знаком с базами InnoDB. Мне всегда казалось что это одни из самых распространенных баз...
|
(Offline)
|
|
13.01.2011, 02:55
|
#14
|
Знающий
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений (для 257 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Что значит не знаком с InnoDB? Это один из дефолтных типов таблиц, используемый в MySQL. Либо они, либо ты неправильно их готовишь.
|
(Offline)
|
|
13.01.2011, 02:57
|
#15
|
Знающий
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений (для 257 пользователей)
|
Ответ: Использование "промежуточного" php-скрипта
Сообщение от cherepets
Присвоение пустого поля происходит именно при пропуске в INSERT.
|
Значит при создании таблицы поле было указано с дефолтным значением. Например:
name varchar(30) not null default ''
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:43.
|