Помогите пожалуйста с записью в БД по событию мыши.
Добрый вечер.
Я Только начал изучать JS - помогите пожалйста с функцией записи в БД по событию наведения мыши. <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function mouseOver() { document.getElementById("button").src ="../images/button2.png"; } function mouseOut() { document.getElementById("button").src ="../images/button1.png"; <?php // Данные для mysql сервера $dbhost = "localhost"; $dbuser = "root"; $dbpassword = ""; $dbname = "database"; $link = mysql_connect($dbhost, $dbuser, $dbpassword); mysql_select_db($dbname, $link); $query = "insert into customer values(0,'тест', 'тест')"; mysql_query($query, $link); mysql_close($link); ?> } </script> </head> <body> <a href="#"> <img border="0" alt="Пример 2" src="../images/button1.png" id="button" onmouseover="mouseOver()" onmouseout="mouseOut()" /> </a> </body> </html> Уверен что в коде написана ересь полнейшая, не пинайте пожалуйста сильно. В таком кособоком и кривом виде код отрабатывается только один раз (навели мышь, появилось картинка - записалось в бд) по каждый последующий не работает, снова начинает работать только после обновления страницы. |
Я бы использовал ajax, каждый раз отправляешь ajax-запрос, и в php его обрабатываешь.
|
drenadan,
Объясните подробней - этот код в браузере на клиенте ? Что он должен отправлять ? |
код лежит на сервере.
я с JS не сталкивался к сожалению до этого Задача состоит в том что: Собираю робота, до этого управление делал через програмку накатанную на делфи, с усовершенствованием железа (добавился модуль Ethernet) переделываю управление через Инет по идее есть область вида римской единицы, блоки разбиты следующим образом : Центр - Стоп , верхний центральный блок - газ , Верхний левый - поворот влево, верхний правый - поворот вправо, ну и так же назад. мохги на роботе считывают по средством ГЕТ запросов показания с БД и очишают ... на деле Выглядит так - Навели на область ГАЗ - запись в базу с значением 255 (к примеру, там не важно ), железка на роботе обратилась к скрипту на вэб сервере считала данные - выполнила - очистила таблицу .... все реализовано кроме записи данных в БД по наведению на область ... буду рад любым советам. |
Цитата:
|
Цитата:
Пока трудно даже сказать, каким местом js cюда, если непонятно каким макаром и где это прописано Если это браузерная вещь - должен быть некий HTML код вашего рабочего стола управления |
drenadan,
var last_id = new XMLHttpRequest(); // создете новый запрос last_id.open('post', 'tochat.php', true) // post, куда, true last_id.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // это просто нужно last_id.send("c=1") // и что-нибудь посылаете if($_POST['c']) { // если запрос был осуществлен.. //code... } // того вы сделали тоже самое, этого хотели? |
Цитата:
еще раз спасибо. начинаю понимать принцип работы Вот что получилось. <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function mouseOver() { document.getElementById("button").src ="../images/button2.png"; var last_id = new XMLHttpRequest(); // создете новый запрос last_id.open('post', '4.php', true) // post, куда, true last_id.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // это просто нужно last_id.send("c=1") // и что-нибудь посылаете if($_POST['c=1']) { // если запрос был осуществлен.. <?php // Данные для mysql сервера $dbhost = "localhost"; // Хост $dbuser = "root"; // Имя пользователя $dbpassword = ""; // Пароль $dbname = "database"; // Имя базы данных // Подключаемся к mysql серверу $link = mysql_connect($dbhost, $dbuser, $dbpassword); // Выбираем нашу базу данных mysql_select_db($dbname, $link); // Добавляем запись в нашу таблицу customer // т.е. делаем sql запрос $query = "insert into customer values(0,'Иванов Иван Иванович', '(095) 555-55-55')"; mysql_query($query, $link); // Закрываем соединение mysql_close($link); ?> } // того вы сделали тоже самое, этого хотели? } function mouseOut() { document.getElementById("button").src ="../images/button1.png"; } </script> </head> <body> <a href="#"> <img border="0" alt="Пример 2" src="../images/button1.png" id="button" onmouseover="mouseOver()" onmouseout="mouseOut()" /> </a> </body> </html> |
А это нормально? О_о:
if($_POST['c=1']) { // если запрос был осуществлен.. <?php // Данные для mysql сервера $dbhost = "localhost"; // Хост $dbuser = "root"; // Имя пользователя $dbpassword = ""; // Пароль $dbname = "database"; // Имя базы данных Может быть if($_POST['c']) {} запихнете в php?)) |
Цитата:
теперь при уходе с области я могу таким же образом через mouseOut отправить запрос и если он осуществлен выполнить php скрипт очистки таблицы в БД ? |
Спасибо Вам большое, 9xaker.
Сейчас все работает. вид имеет такой. <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function mouseOver() { document.getElementById("button").src ="../images/button2.png"; var last_id = new XMLHttpRequest(); // создете новый запрос last_id.open('post', '4.php', true) // post, куда, true last_id.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // это просто нужно last_id.send("c=1") // и что-нибудь посылаете <?php if($_POST['c']) { // если запрос был осуществлен.. // Данные для mysql сервера $dbhost = "localhost"; // Хост $dbuser = "root"; // Имя пользователя $dbpassword = ""; // Пароль $dbname = "database"; // Имя базы данных // Подключаемся к mysql серверу $link = mysql_connect($dbhost, $dbuser, $dbpassword); // Выбираем нашу базу данных mysql_select_db($dbname, $link); // Добавляем запись в нашу таблицу customer // т.е. делаем sql запрос $query = "insert into customer values(0,'Иванов Иван Иванович', '(095) 555-55-55')"; mysql_query($query, $link); // Закрываем соединение mysql_close($link); } // того вы сделали тоже самое, этого хотели? ?> } function mouseOut() { document.getElementById("button").src ="../images/button1.png"; var last_id = new XMLHttpRequest(); // создете новый запрос last_id.open('post', 'clear.php', true) // post, куда, true last_id.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // это просто нужно last_id.send("m") // и что-нибудь посылаете <?php if($_POST['m']) { // если запрос был осуществлен.. // Данные для mysql сервера $dbhost = "localhost"; // Хост $dbuser = "root"; // Имя пользователя $dbpassword = ""; // Пароль $dbname = "database"; // Имя базы данных // Подключаемся к mysql серверу $link = mysql_connect($dbhost, $dbuser, $dbpassword); // Выбираем нашу базу данных mysql_select_db($dbname, $link); mysql_query("TRUNCATE TABLE `customer`"); mysql_query($query, $link); // Закрываем соединение mysql_close($link); } ?> } </script> </head> <body> <a href="#"> <img border="0" alt="Пример 2" src="../images/button1.png" id="button" onmouseover="mouseOver()" onmouseout="mouseOut()" /> </a> </body> </html> Еще есть пару вопросов, это нормально что при каждой функции мыши я вызываю запрос такой полный (подключение-выбор базы ...) или можно как то проще сделать, к примеру инклуд всех параметров в начале операции а потом уже просто отправка в БД. И еще вопрос: хочу все понять принцип работы этой строчки. last_id.open('post', 'clear.php', true) // post, куда, true я так понял что если указать куда (clear.php) и в файле не будет правильного скрипта php , событие сработает не правильно ? |
Цитата:
Цитата:
Во время синхронного браузер немного подвисает, в данном случае все будет выполняться последовательно( например: запрос, потом алерт) При асинхронном запрос выполняется незаметно для юзера, то бишь: алерт, и в это же время запрос. |
Цитата:
send("delete") и в php: if ($_POST['delete']) {/*code...*/}.. |
Понял.
все оказалось куда проще ,он на самом деле читает файл который указывается в ПОСТ. убрал лишенее. Все работает :dance: и вид приятнее. Спасибо Вам огромное 9xaker Вид сейчас такой. <!DOCTYPE HTML> <html> <head> <script type="text/javascript"> function mouseOver() { document.getElementById("button").src ="../images/button2.png"; var last_id = new XMLHttpRequest(); // создете новый запрос last_id.open('post', '4.php', true) // post, куда, true last_id.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // это просто нужно last_id.send("c=1") // и что-нибудь посылаете } function mouseOut() { document.getElementById("button").src ="../images/button1.png"; var last_id = new XMLHttpRequest(); // создете новый запрос last_id.open('post', 'Clear.php', true) // post, куда, true last_id.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // это просто нужно last_id.send("m") // и что-нибудь посылаете } </script> </head> <body> <a href="#"> <img border="0" alt="Пример 2" src="../images/button1.png" id="button" onmouseover="mouseOver()" onmouseout="mouseOut()" /> </a> </body> </html> Навели на область - запись в БД, ушли с области - очистили таблицу . |
еще раз спасибо, вот видео что получилось .(модуль ГАЗ)
http://www.youtube.com/watch?v=alDjmM211ao если б не вы 9xaker я б еще долго копал =) |
Часовой пояс GMT +3, время: 08:33. |