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) но они не выводятся... Помогите пожалуйста написать правильно вывод... ибо я уже просто не знаю как... -------------------- Если хочешь избежать критики - ничего не говори, ничего не делай и будь никем. |
Код:
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> "; |
Цитата:
|
щаз проверил.
нащет параметров вы правы. но имхо, лучше все таки использовать кавычки. хотя бы для того, чтобы предупредить XSS, и просто баги в случае неаккуратного кодинга. ЗЫ. я так понимаю проблема темы решена? |
проблема была решина еще вчера утром... я просто забыла о данном форуме и ВАМ не сообщила.... но спасибо что помагали решать... ;)))))
|
пожалуйста тогда, и удачи вам))
|
Спасибо;)
|
У меня такой вопрос по поводу mySQL
Я создаю таблицу товарных позиций в двух вариантах. Вариант А Код:
CREATE TABLE positions ( Код:
CREATE TABLE positions ( 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 ... Что интересует: какой из вариантов более разумнее с точки зрения сбережения времени на поиски записей - вариант А или вариант Б? |
я не считаю себя сильным специалистом MySQL, но все же:
в плане скорости запроса типа Код:
SELECT * FROM positions WHERE id = '{$id}' начнете замечать разницу в скорости на количестве записей порядка 100.000 при том, чтобы удаленых записей было раз в цать больше. при других запросах, у второй таблицы скорость падать будет гораздо больше. если вы собираетесь использовать вторую таблицу то в условиях id = '{$id} надо указывать на первом месте, иначе будут тормоза(это непроверенная информация). Итог таков: в общем, если вам не нужна удаленная информация, то используйте первую таблицу. если же нужна, то создайте таблицу такого же типа как первая, и переносите в нее записи, перед удалением. порядок нумерации по id-клонке вас волновать не должен. это щабота процессора MySQL. Главное что вы указали для нее PRIMARY KEY (id). разрывы в нумерации не отобразятся на скорости запросов, а вот ЛИШНИЕ записи могут выйти боком.пусть даже на других типах запросов. ЗЫ этот пост сделан на основании того, что я знаю, или полагаю что знаю о работе MySQL. поэтому промежуточные умозаключения могут оказатся неправильными, но итог верен. используйте превую таблицу. ЗЫЫ а вообще, при возникновении таких вопросов, пробуйте сгенерить таблицу с случайными данными, на предпологаемый объем данных, и сделать замеры скорости |
Цитата:
|
Цитата:
Цитата:
|
передача переменных из php в js
Доброе время суток.
Сразу оговорюсь, что в js я совсем не силён:) Вопросов у меня два, начну с главного. Пишу фотогалерею на php, но увеличенные копии вывожу при помощи javascript, в отдельно создаваемом окне. Системма хранения фотографий такая, при создании нового каталога/группы, название пишется на русском языке.При добавлении фото в каталог/группу создаётся папка, которая имеет тоже название, что и каталог/группа, естественно на русском языке.Делается это для того, чтобы фото сортировались по директориям и при необходимости не надо было рыскать по названиям файлов, а всего навсего открыть соответствующую директорию. Проблема в следующем. Как мне передать имя каталога/группы в js из php, чтобы сохранялась кодировка? При просмотре исходного текста,путь к файлу выводится как положено, т.е. http://mysite/file/имя группы/imja_faila(имя группы на русском), но когда пытаюсь открыть увеличенное изображение, то вместо фото выводится пустой квадрат и если посмотреть свойства рисунка виден путь http://mysite/files/Перв...1217040702.jpg Второй вопрос связан в передачей переменных функции js. привожу два фрагмента кода первый a) формируем путь к увеличенному изображению $patch = "files/".$view_photo['nam']."/".$name; формируем ссылку на увеличеную копию изображения $image = "<a href=\"javascript:myPhoto('".$patch."',".$cat.",".$ph.")\"><img src='files/".$view_photo['nam']."/".$view_photo['small']."' height='100'></a>"; // работает,но не выводи фото из русскоязычных папок. b) создаём окно <script type="text/javascript"> function myPhoto(patch,cat,ph){ myWin = window.open("","newWindow","top=100,left=150,width=800,height=560"); myWin.document.open(); myWin.document.write("<html><head>"); myWin.document.write("<title>Big Size</title>"); myWin.document.write("<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>"); myWin.document.write("<link rel='stylesheet' type='text/css' href='stylecss.css'>"); myWin.document.write("</head><body>"); myWin.document.write("<div id='djs'>"+cat+" / "+ph+"</div>"); myWin.document.write("<div align='center'><img src='"+patch+"'><br>"); myWin.document.write("<div id='djs'><button onClick='javascript:window.close()'></button></div>"); myWin.document.write("</body></html>"); myWin.document.close(); } </script> при таком разкладе создаётся окно, где выводятся все параметры нужные мне(за исключением каталогов на русском языке) второй фрагмент но если сделать так формируем путь к увеличенной копии $patch = "files/".$view_photo['nam']."/"; формируем ссылку на увеличеную копию фотографии $image = "<a onClick=myPhoto('".$patch."".$name."',".$cat.",".$ph.") href='#'><img src='files/".$view_photo['nam']."/".$view_photo['small']."' height='100'></a>";// не работает и соответственно js <script type="text/javascript"> function myPhoto(patch,name,cat,ph){ myWin = window.open("","newWindow","top=100,left=150,width=800,height=560"); myWin.document.open(); myWin.document.write("<html><head>"); myWin.document.write("<title>Big Size</title>"); myWin.document.write("<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>"); myWin.document.write("<link rel='stylesheet' type='text/css' href='stylecss.css'>"); myWin.document.write("</head><body>"); myWin.document.write("<div id='djs'>"+cat+" / "+ph+"</div>"); myWin.document.write("<div align='center'><img src='"+patch+""+name+"'><br>"); myWin.document.write("<div id='djs'><button onClick='javascript:window.close()'></button></div>"); myWin.document.write("</body></html>"); myWin.document.close(); } </script> выводится чёрт знает что, переменные меняются местами и т.д. пробовал разные варианты, экранировал кавычки ни чего не получилось,к имени файла, после расширения добавляет значение другой переменной ни чем не разделяя. Подскажите, пожалуйста, почему второй вариант не работает? Заранее благодарю за подсказки. p.s. Проблема с первым вопросом намного важней!!! |
По первому вопросу: в php есть iconv() - не помогает?
|
iconv() нет
|
по первому вопросу могу добавить, что если навести курсор на превьюшку, то в статусной строке путь к файлу отображается правильно.
javascript:myPhoto('files/имя каталога/20081217041615.jpg',12,78) перекодировка символов происходит после клика по превьюшке и выводится в созданном окне уже изменённая |
Часовой пояс GMT +3, время: 12:03. |