Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вызов скрипта по нажатии на картинку
 
 автор: apomin   (26.05.2008 в 21:08)   письмо автору
 
 

Задача такая:

В браузере отображается картинка (bmp-файл).
При нажатии на неё вызывается скрипт на сервере, который эту картинку меняет - например, меняет её цвет и записывает изменения в тот же bmp-файл на сервере. Я знаю, что можно заранее прописать в html-код две картинки и менять их, но мне нужно, чтобы смена происходила на сервере.

После этого браузер должен эту картинку перерисовать (очевидно, получив ответ от скрипта, что всё готово)
Остальное содержимое страницы, очевидно, перерисовывать не нужно.

Эффект для пользователя такой, что он нажал, картинка быстро поменялась, и ничего больше на странице не изменилось. Сервер же этот запрос получил, зафиксировал его в базе и поменял картинку.

Кажется, это задача для Javascript
Допустим, скрипт можно вызвать.
А вот как заставить картинку перерисовываться?

   
 
 автор: apomin   (27.05.2008 в 00:23)   письмо автору
 
   для: apomin   (26.05.2008 в 21:08)
 

Забыл написать, что скрипт на сервере - это cgi-скрипт, совершенно отдельная вещь.
Его я могу запрограммировать делать то, что нужно.

   
 
 автор: apomin   (27.05.2008 в 01:44)   письмо автору
 
   для: apomin   (27.05.2008 в 00:23)
 

Исправленный вариант задачи:

На странице имеется несколько картинок.
При нажатии на любую из них картинка меняется (у каждой картинки - два варианта), при повторном нажатии восстанавливается первоначальный вид картинки и т.д.
В конце страницы имеется кнопка Submit, по которой состояния (или изменения состояний) картинок передаются скрипту на сервер.

Это как-то лучше выглядит, переключение состояния картинок я где-то видел. Нужно где-то накапливать изменения и потом их передавать в виде параметров при нажатии кнопки.

   
 
 автор: sim5   (27.05.2008 в 01:23)   письмо автору
 
   для: apomin   (26.05.2008 в 21:08)
 

Перерисовывать изображение на сервере - это GD-библиотека.
Изменение части содержимого страницы без перезагрузки остального - это AJAX.
Только не BMP, а JPG, PNG или GIF, иначе кроме как в IE, вашей картинки видно не будет.

   
 
 автор: apomin   (27.05.2008 в 01:49)   письмо автору
 
   для: sim5   (27.05.2008 в 01:23)
 

Да, точно, AJAX
Могу сделать и gif-картинки - теперь, когда стало ясно, что у каждого изображения всего два состояния, они все создаются заранее, и просто передаются ссылки.
Gif заодно и поменьше будет.

Но если все объекты существуют заранее, а для переключения картинок существуют конструкции вроде
<IMG SRC="face1.gif" NAME="face" ONMOUSEDOWN="document.images['face'].src='face2.gif'">
то можно будет сделать и на JavaScript

   
 
 автор: sim5   (27.05.2008 в 02:13)   письмо автору
 
   для: apomin   (27.05.2008 в 01:49)
 

Можно. Но не так, а так:

<img src="face1.gif" onclick="this.src='face2.gif'" />

   
 
 автор: apomin   (28.05.2008 в 07:56)   письмо автору
 
   для: sim5   (27.05.2008 в 02:13)
 

Спасибо!
Вот получилось то, что нужно
В форму отправляется номер выбранной картинки
Наверняка ещё можно оптимизировать, но идея понятна.

<html>
<head>

<script type="text/javascript">
count = 1
<!--
function ExtractNameNumber (str)
{
for (i = 0; str[i]; i++) {
if (str[i] == '1') {
document.images['face'].src='face2.gif'
count= 2
}
else if (str[i] == '2') {
document.images['face'].src='face1.gif'
count= 1
}
}
}
function f() {
document.myform.data.value=count
}
//-->
</script>
<title></title>
</head>

<body>
<script type="text/javascript">
</script>

<p><img SRC="face1.gif" WIDTH="64" HEIGHT="64" NAME="face" ONMOUSEDOWN="ExtractNameNumber (document.images['face'].src)"> </p>

<form method="get" name="myform" action="script.exe" onsubmit="f(); return true;">
<input type="hidden" id="data" name="data">
<input type="submit" value="Выбрать">
</form>

</body>
</html>

   
 
 автор: sim5   (28.05.2008 в 08:17)   письмо автору
 
   для: apomin   (28.05.2008 в 07:56)
 

Вы можете словами объяснить, чего вы хотите? То, что вы написали полная профанация. Нажав на кнопку формы "Выбрать", вы отправите форму, и все ваши функции форме будут побарабану.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования