Php и IFRAME

Patrul

Новичок
Php и IFRAME

Задумка такая:
Страница интернет-магазина со списком товаров реализована на php, считыванием из файла csv, после каждой строчки с товаром добавлен значек (картинка) с корзиной. Хочется, чтобы при нажатии на этот значек появлялся либо дополнительный слой, через iframe либо что-то подобное, но не новая страница, т.к. теряется весь смысл задумки, т.е. хочется устроить типа диалога с пользователем, в этом появившемся "слое" должна быть возможность, например, ввести колличество товара. По средствам команды onclick не получается. Как я понял php не дружит с "onclick".
Как можно реализовать диалог в php без открытия нового окна? То есть поверх уже открытой страницы.

Такое реализовано в игре Territory, если кто играл.
 

kruglov

Новичок
php может только страницы генерить.

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

"Команда" (на самом деле "обработчик события") onclick - это JavaScript.
 

Patrul

Новичок
каким образом тогда можно связать нажатие на картинку и выполнение процедуры javascript без открытия новой страницы, т.е. вставить во фрейм сгенерированную php страницу. Т.е. как заставить php реагировать на нажатие?
Я понимаю, что можно сделать
echo "<a href='1.php?id=$i'><img ...></a>
и в 1.php сделать диалог
Но тогда будет открываться новая страница, а мне требуется что бы диалог появлялся на этой же странице, причем поверх нее.
 

Линка

Новичок
Patrul

Т.е. как заставить php реагировать на нажатие?
Приведу цитату одного из членов клуба:
"Когда страница появилась в браузере клиента PHPуже закончил свою работу"
Так что для реалицации твоей идеи надо юзать javascript
PHP пусть генерит html код а в самом коде вставь
echo "<a href='1.php?id=$i'><img ... onclick='Your_function()'></a>";
 

Patrul

Новичок
Так в том-то и дело.
Осуществил все это через javaScript
Если я задаю команду "onclick" картинке внутри файла php (через echo)? то почему-то никакой реакции на ее нажатие не происходит.

Попробовал все тоже самое в 1.html - все работает.
http://www.torgzal.h16.ru/1.html

Для сравнения сделал абсолютно тот же код самое, но в php через echo и тишина....
http://www.torgzal.h16.ru/1.php
 

Линка

Новичок
Patrul
onClick='showElem('test'); return false;'
ВОТ ЭТО Я вытянула с твоего кода
Для правильной работы надо
onClick='showElem("test"); return false;'
 

Patrul

Новичок
PHP не позволяет ставить среди в echo ", не прерывая генерацию html кода, да и html код работает нормально!

А если заменить ' на ", то команда onClick="showElem(" прервется...
 

realman

Новичок
Автор оригинала: Patrul
PHP не позволяет ставить среди в echo ", не прерывая генерацию html кода, да и html код работает нормально!
ты где такое вычитал??

PHP:
<?php
echo "onClick='showElem(\"test\"); return false;'";
?>
 

Patrul

Новичок
Линка
realman

Спасибо! Был не прав :) Исправлюсь
Заработало.
Теперь осталось только определить координаты,? чтобы привязать, всплывающее, окно к данной строке, а то я в примере - вручную их задавал
 

Линка

Новичок
Patrul
цепляй на событие клик мыхой функцию
event.clientX поможет тебе определить координату X также само и для У
 

Patrul

Новичок
Попытался встроить работающий код в основной php и начались проблемы...
Перестал реагировать на position:visible
Нажимаю на картинку - пишет Script error!
...

-~{}~ 29.12.05 16:30:

То есть на Position:absolute
 

Patrul

Новичок
не, получается такое, если я передаю переменные по ссылке *.php?a=...&b=...

То есть если просто ссылаться на страницу с таким слоем, то все ок, а если в ссылке указаны переменные, то код отказывается работать, почему - не пойму...
Свяжись со мной, пожалуйста по ICQ: 28554553

-~{}~ 30.12.05 09:41:

Все заработало. Были не понятные мне до сих пор проблемы со встраиванием в ячейки таблицы. Кое как впихнул. Все работает.

Пытался поэксперементировать с event.clientX, но ничего не получилось. Не понимаю как...
Помогите сделать, чтобы при нажатии на картинку - слой появлялся возле нее, а не с заданными мной координатами.

Код вот такой:
echo "<img src='pict/korzina.jpg' id=\"$data_array[0]\" width='33' height='26' onClick='showElem(\"test\"); return false;'>";
echo "</td></tr>";

echo "</table>";
echo "<SCRIPT type='text/javascript' src='show.js'>";
echo "</SCRIPT>";
echo "<div id=\"test\" style='visibility:hidden; position:absolute; left: 60; top: 60'>";
echo "<table width='200' border='2' align='center' bgcolor='#c0c0c0'><tr align='center' valign='middle'><td>";
echo "<p>&#194;&#226;&#229;&#228;&#232;&#242;&#229; &#234;&#238;&#235;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238;: </p><input type='text' name='&#202;&#238;&#235;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238;' value='1' size='1' maxlength='4'>";
echo "<input type='submit' name='Ok' value='Ok' width='10' height='10' onclick='hideElem(\"test\"); return false;'>";
echo "</td></tr></table>";
echo "</div>";

-~{}~ 30.12.05 09:45:

Как понимаю - надо к событию картинки onClick= прикрутить javascript с определением и присвоением каким-то параметрам (напр. X и Y) значений. А потом эти значения вписать в div: left: X; top: Y', но почему-то не работает, т.е. в этом случае див появляется там, где он стоит в коде.
 

Линка

Новичок
Patrul
echo "<img src='pict/korzina.jpg' id=\"$data_array[0]\" width='33' height='26' onClick= document.getElementById(\"test\").style.top=event.clientY;document.getElementById(\"test\").style.display=\"block\"; '>";
echo "</td></tr>";

echo "</table>\n";
echo "<SCRIPT type='text/javascript' src='show.js'>";
echo "</SCRIPT>\n";
echo "<div id=\"test\" style='display:none; position:absolute; left: 60; '>\n";
echo "<table width='200' border='2' align='center' bgcolor='#c0c0c0'><tr align='center' valign='middle'><td>\n";
echo "<p>Aaaaeoa eieee?anoai: </p><input type='text' name='Eieee?anoai' value='1' size='1' maxlength='4'>\n";
echo "<input type='submit' name='Ok' value='Ok' width='10' height='10' onclick='hideElem(\"test\"); return false;'>\n";
echo "</td></tr></table>\n";
echo "</div>";
 

Patrul

Новичок
Линка
Огромное спасибо, все ок. Не знаю чтобы делал без Вашей помощи. Весь инет облазил - не мог найти ничего похожего
 

Линка

Новичок
Patrul
Ошибки могут быть(в плане кода) только 2
1.кривой или нерабочий код php
2.кривой или нерабочий код javascript
В данном случае у тя ошибка 2 . И многие когда сталкиваются с такой проблемой не понимают что на этом этапе надо тестить или редактировать код js
И вот когда он у тя заработал(засунутый в фаил htm или html )
тогда и встраивай его в код php
90% ошибок на странице из-за неумения коректно пользоваться командами отображения типа echo и неграмотности в отношении ковычек(многие забывают про экранирование)
 

white phoenix

Новичок
Линка
Ну до какой же степени нужно напиться чтобы ошибиться с экранированием, там же всё очень просто, перед символами равными ограничителю строки ставится '\' указывающий на последующий литерал.
 

Patrul

Новичок
Появилась еще одна проблема:
У меня идет цикл считвания файла построчно, потом поэлементно

<table>
for ($i=1;$i<count($data);$i++)
{
<tr>
....
for ($f=1;$f<count($data_array);$f++) // поэлементно
{
<td id=\"string$data_array[0]\">...чего-то...</td> // data_array[0] - этот элемент есть (уникальный для каждой строки), но он не виден для пользователя
}
echo "<img src='pict/1.jpg' width='33' height='26' onClick='document.getElementById(\"string$data_array[0]\").bgColor=\"red\";'>";

echo "<SCRIPT type='text/javascript' src='show.js'>";
echo "</SCRIPT>";
echo "<div>";
echo "<table><tr><td>";
echo "<p>ля-ля-ля</p><input type='text' name='ля-ля-ля'>";
echo "<input type='submit' name='Ok' value='Ok' width='10' height='10' onclick='document.getElementById(\"string$data_array[0]\").bgColor=\"blue\";'>";
echo "</td></tr></table>";
echo "</div>";
echo "</td></tr>";
}
echo "</table>";

Нажимаю на первую строку - все работает, окрашивается, при жатии на ок - перекрашивается.
При нажатии на следующие строки - они окрашиваются, но при нажатии на ок - не перекрашиваются... Не могу найти почему?
 

Линка

Новичок
Patrul
правая клавиша->просмотор html кода
потом в фаил .htm
потом открываем в браузере с консолью ошибок и смотрим
и правим правим правим JAVASCRIPT код
НАХОДИМ ЧТО НЕ ТАК
проверяем еще раз в фомате html
потом грамотно засовываем в . php
 

Patrul

Новичок
спасибо, разобрался, только не знаю как консоль ошибок включить в MyIE

Ошибка оказалась в повторяющихся id="test"
:)
 
Сверху