Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > PHP / MySQL

PHP / MySQL Создание динамических Веб-ресурсов

Ответ
 
Опции темы
Старый 14.12.2010, 22:17   #1
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Использование "промежуточного" php-скрипта

В php я немного нуб, простите за кривоватую формулировку.

Вообщем, у меня есть php-скрипт который ничего не отображает. Ему приходят переменные (через GET) и он их пишет в базу.

А есть страница со всякими переключателями, полями и прочей лабудой. На ней пользователь фактически формирует те переменные которые должны быть записаны в базу.

Когда пользователь совершает какое-либо действие на странице - переменные надо сразу записать в базу НЕ перезагружая стрницу.
Как это сделать?
(Offline)
 
Ответить с цитированием
Старый 14.12.2010, 22:22   #2
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Использование "промежуточного" php-скрипта

http://ru.wikipedia.org/wiki/XMLHttpRequest
http://xmlhttprequest.ru/
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
cherepets (14.12.2010)
Старый 14.12.2010, 22:25   #3
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: Использование "промежуточного" php-скрипта

О, как раз то что нужно))
А как нибудь получить и использовать на странице данные от этого php-скрипта?
(Offline)
 
Ответить с цитированием
Старый 14.12.2010, 22:26   #4
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: Использование "промежуточного" php-скрипта

Сообщение от cherepets Посмотреть сообщение
О, как раз то что нужно))
А как нибудь получить и использовать на странице данные от этого php-скрипта?
Там всё есть
(Offline)
 
Ответить с цитированием
Старый 14.12.2010, 22:40   #5
cherepets
Бывалый
 
Регистрация: 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
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Использование "промежуточного" php-скрипта

Заюзай jQuery и метод оттуда load. (хотя бы потому что твой код не будет работать на разных браузерах)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
cherepets (15.12.2010), Reizel (04.01.2011)
Старый 15.12.2010, 13:01   #7
cherepets
Бывалый
 
Регистрация: 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
HAMANN
Нуждающийся
 
Аватар для HAMANN
 
Регистрация: 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
cyberblut
Знающий
 
Регистрация: 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',
        
ni,
        
xStoppos.left,
        
yStoppos.top,
        
dat'2010.12.12'
      
}, function(responseTexttextStatusXMLHttpRequest) {
        if( 
11 ) {
          
sendData(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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
cherepets (11.01.2011)
Старый 11.01.2011, 13:21   #10
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: Использование "промежуточного" php-скрипта

Всем спасибо, тот скрипт закончен и прекрасно работает =)
Он и до этого был правильный, просто у хостера какая-то беда с MySQL вероятно.

Сейчас столкнулся с прямо таки паранормальным явлением у них. У поля NULL запрещен, но запись с пустым значением в этом поле все равно вносится. О_о
Возможно, конечно, это я что-то недопонимаю...
(Offline)
 
Ответить с цитированием
Старый 12.01.2011, 01:31   #11
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Использование "промежуточного" php-скрипта

У поля NULL запрещен, но запись с пустым значением в этом поле все равно вносится. О_о
Возможно, конечно, это я что-то недопонимаю...
Вообще хорошим тоном считается валидация ещё до записи в БД средствами похапе (или на чём там сайт)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 12.01.2011, 02:09   #12
cyberblut
Знающий
 
Регистрация: 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
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: Использование "промежуточного" php-скрипта

Присвоение пустого поля происходит именно при пропуске в INSERT.
Что '' тоже значение я знаю))

Еще меня сильно удивляет что их сервер не знаком с базами InnoDB. Мне всегда казалось что это одни из самых распространенных баз...
(Offline)
 
Ответить с цитированием
Старый 13.01.2011, 02:55   #14
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: Использование "промежуточного" php-скрипта

Что значит не знаком с InnoDB? Это один из дефолтных типов таблиц, используемый в MySQL. Либо они, либо ты неправильно их готовишь.
(Offline)
 
Ответить с цитированием
Старый 13.01.2011, 02:57   #15
cyberblut
Знающий
 
Регистрация: 14.06.2009
Сообщений: 338
Написано 139 полезных сообщений
(для 257 пользователей)
Ответ: Использование "промежуточного" php-скрипта

Сообщение от cherepets Посмотреть сообщение
Присвоение пустого поля происходит именно при пропуске в INSERT.
Значит при создании таблицы поле было указано с дефолтным значением. Например:
name varchar(30not null default '' 
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:21.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com