Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.06.2008, 18:26
Аватар для solomusic
Новичок на форуме
Отправить личное сообщение для solomusic Посмотреть профиль Найти все сообщения от solomusic
 
Регистрация: 08.06.2008
Сообщений: 7

PHP, JavaScript, MySQL
:confused: Здравствуйте! У меня проблема. Мне нужно, чтоб из таблицы открывалось окошко. Вот пример того что я делала:
<script type="text/javascript">
<!-- Begin
function win(det) {
msg=window.open("","msg","height=400,width=400,lef t=200,top=200");
msg.document.write("<html><head><title></title></head>");
msg.document.write("<body>");
msg.document.write("<Table><tr><td>" + det + "</td></tr>");
msg.document.write("</table></body></html>");
}
// End -->
</script>
</head>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0 rightMargin=0 marginheight="0" marginwidth="0">
<TABLE cellSpacing=0 cellPadding=2 width=950 align=center border=0>
<TABLE cellspacing="0" cellpadding="0" width="100%" bgcolor="#458ea0" border="0">
<TBODY>
<TR>
<TD>
<TABLE cellspacing="1" cellpadding="2" width="100%" border="0">
<TBODY>
<TR>
<TD><P align="center"><FONT size="2"><B>№</B><FONT ></TD>
<TD width="19%" align="center"><FONT color="#ffffff" size="2"><B>район</B></FONT></TD>
<TD width="19%" align="center"><FONT color="#ffffff" size="2"><B>улица</B></FONT></TD>
<TD width="20%" align="center"><FONT color="#ffffff" size="2"><B>метраж/м.кв.</B></FONT></TD>
<TD width="15%" align="center"><FONT color="#ffffff" size="2"><B>цена</B></FONT></TD>
<TD width="17%" align="center"><FONT color="#ffffff" size="2"><B>телефон</B></FONT></TD>
<TD width="40%" align="center"><FONT color="#ffffff" size="2"><B>подробно</B></FONT></TD>
<TD width="20%" align="center"><FONT color="#ffffff" size="2"><B>дата</B></FONT></TD>
</TR>
<?php
mysql_connect ("localhost", "root", "");
mysql_select_db('realtyy');
$sql = "SELECT * FROM `dob` WHERE `type` LIKE 'aa' ORDER BY `id` DESC";
$result = mysql_query($sql);
$data = array();
while($res=mysql_fetch_array($result))
{
echo "<TR bgcolor=#FLEFE5>";
echo "<TD ALIGN=CENTER>".$res['id']."</TD>";
echo "<TD ALIGN=CENTER><B><i>".$res['area']."</i></B></TD>";
echo "<TD ALIGN=CENTER>".$res['street']."</TD>";
echo "<TD ALIGN=CENTER>".$res['metric']."</TD>";
echo "<TD ALIGN=CENTER><pre>".$res['price']." ".$res['val']."</pre></TD>";
echo "<TD ALIGN=CENTER>".$res['phone']."</TD>";
echo "<TD width=30%><a href=# onclick=win(" . $res['det'] . ")>Открыть окно</a></TD> ";
echo "<TD ALIGN=CENTER>".$res['date']."</TD>";
echo "</TR>";
};
?>
<TR>
<TD align="center"></TD>
<TD align="center"></TD>
<TD align="center"></TD>
<TD align="center"></TD>
<TD align="center"></TD>
<TD align="center"></TD>
<TD align="center"></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</TABLE>
<BR>
</BODY>
здесь в окошко должны загружаться данные из БД (mysql) но они не выводятся... Помогите пожалуйста написать правильно вывод... ибо я уже просто не знаю как...

--------------------
Если хочешь избежать критики - ничего не говори, ничего не делай и будь никем.
Ответить с цитированием
  #2 (permalink)  
Старый 10.06.2008, 06:41
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,233

Код:
echo "<TD width=30%><a href=# onclick=win(\'" . $res['det'] ."\')>Открыть окно</a></TD> ";
надо экранировать вывод.
PS ипользуйте пожалуйста BB-теги обрамления кода
PPS почитайте на досуге спецификацию HTML. параметры тегов должны быть обрамлены в кавычках всегда.
если не ошибаюсь, такое навешивание обработчика на onclick может пройти только в ИЕ. хотя...
Код:
echo "<TD width=30%><a href=\"#\" onclick=\"win(\'" . $res['det'] ."\')\">Открыть окно</a></TD> ";
//особое внимание на вложенность двойных и одинарных кавычек!!!

Последний раз редактировалось Gvozd, 10.06.2008 в 06:48.
Ответить с цитированием
  #3 (permalink)  
Старый 10.06.2008, 09:20
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Gvozd
почитайте на досуге спецификацию HTML. параметры тегов должны быть обрамлены в кавычках всегда.
Ошибаетесь, как раз в HTML (без буквы X в начале) кавычки для аттрибутов необязательны. Там вообще много чего необязательно.
Ответить с цитированием
  #4 (permalink)  
Старый 10.06.2008, 16:52
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,233

щаз проверил.
нащет параметров вы правы.
но имхо, лучше все таки использовать кавычки.
хотя бы для того, чтобы предупредить XSS, и просто баги в случае неаккуратного кодинга.
ЗЫ. я так понимаю проблема темы решена?
Ответить с цитированием
  #5 (permalink)  
Старый 10.06.2008, 18:52
Гость
 
Сообщений: n/a

проблема была решина еще вчера утром... я просто забыла о данном форуме и ВАМ не сообщила.... но спасибо что помагали решать... ))))
Ответить с цитированием
  #6 (permalink)  
Старый 10.06.2008, 21:16
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,233

пожалуйста тогда, и удачи вам))
Ответить с цитированием
  #7 (permalink)  
Старый 13.06.2008, 11:52
Аватар для solomusic
Новичок на форуме
Отправить личное сообщение для solomusic Посмотреть профиль Найти все сообщения от solomusic
 
Регистрация: 08.06.2008
Сообщений: 7

Спасибо
Ответить с цитированием
  #8 (permalink)  
Старый 12.10.2008, 13:38
Аспирант
Отправить личное сообщение для EugenyK Посмотреть профиль Найти все сообщения от EugenyK
 
Регистрация: 17.03.2008
Сообщений: 64

У меня такой вопрос по поводу mySQL

Я создаю таблицу товарных позиций в двух вариантах.
Вариант А
Код:
CREATE TABLE positions (
	id			mediumint		not null auto_increment,
	cid			mediumint		not null default '1',
	date			int			not null default '0',
	name			varchar(255)	not null default 'Без названия',
	hidden		enum ('Y','N')	not null default 'N',
	price			mediumint		not null default '0',
	title_b		varchar(255)	not null default 'Без описания',
	title_f			mediumtext,
	PRIMARY KEY (id),
	KEY cid (cid),
	KEY name (name)
);
Вариант Б
Код:
CREATE TABLE positions (
	id			mediumint		not null auto_increment,
	cid			mediumint		not null default '1',
	date			int			not null default '0',
	name			varchar(255)	not null default 'Без названия',
	deleted		enum ('Y','N')	not null default 'N',
	hidden		enum ('Y','N')	not null default 'N',
	price			mediumint		not null default '0',
	title_b		varchar(255)	not null default 'Без описания',
	title_f			mediumtext,
	PRIMARY KEY (id),
	KEY cid (cid),
	KEY name (name)
);
Далее, при заполнении базы данных может возникнуть ситуация, когда нужно будет удалить какую-то запись. В варианте А действовать придётся через

DELETE FROM positions WHERE id = '{$id}'

В варианте Б можно просто

UPDATE positions SET deleted = 'Y' WHERE id = '{$id}'

При этому в варианте А после удаления данная строка будет стёрта и при следующем добавлении позиции она будет задействована, тем самым порядок нумерации по id-колонке будет нарушен.
Беспокоит, что иногда приходится пользоваться запросом типа

SELECT * FROM positions WHERE id = '{$id}' - увеличится ли время на поиск конкретной записи?

В варианте Б же новая запись будет размещаться в самом конце, при этом таблица будет конечно расти. И тут же надо учесть будет, что запрос по выбору определенных записей будет сложнее:

SELECT * FROM positions WHERE deleted = 'N' AND ...

Что интересует: какой из вариантов более разумнее с точки зрения сбережения времени на поиски записей - вариант А или вариант Б?
Ответить с цитированием
  #9 (permalink)  
Старый 12.10.2008, 22:40
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,233

я не считаю себя сильным специалистом MySQL, но все же:
в плане скорости запроса типа
Код:
SELECT * FROM positions WHERE id = '{$id}'
первая таблица выигрывает, но незначительно.
начнете замечать разницу в скорости на количестве записей порядка 100.000 при том, чтобы удаленых записей было раз в цать больше.
при других запросах, у второй таблицы скорость падать будет гораздо больше.
если вы собираетесь использовать вторую таблицу то в условиях id = '{$id} надо указывать на первом месте, иначе будут тормоза(это непроверенная информация).
Итог таков:
в общем, если вам не нужна удаленная информация, то используйте первую таблицу.
если же нужна, то создайте таблицу такого же типа как первая, и переносите в нее записи, перед удалением.
порядок нумерации по id-клонке вас волновать не должен. это щабота процессора MySQL. Главное что вы указали для нее PRIMARY KEY (id).
разрывы в нумерации не отобразятся на скорости запросов, а вот ЛИШНИЕ записи могут выйти боком.пусть даже на других типах запросов.
ЗЫ этот пост сделан на основании того, что я знаю, или полагаю что знаю о работе MySQL. поэтому промежуточные умозаключения могут оказатся неправильными, но итог верен. используйте превую таблицу.
ЗЫЫ а вообще, при возникновении таких вопросов, пробуйте сгенерить таблицу с случайными данными, на предпологаемый объем данных, и сделать замеры скорости
Ответить с цитированием
  #10 (permalink)  
Старый 12.10.2008, 22:51
Аспирант
Отправить личное сообщение для EugenyK Посмотреть профиль Найти все сообщения от EugenyK
 
Регистрация: 17.03.2008
Сообщений: 64

Цитата:
но итог верен. используйте превую таблицу.
Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лучшая книга по JavaScript Systemnik Оффтопик 27 26.08.2012 16:54
Современная книга по JavaScript twolf Оффтопик 18 21.02.2009 01:20
Обращение к именам, полученным через Javascript baal1988 Events/DOM/Window 1 31.08.2008 15:08
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43