Jump to content

Yarik Voronov

Expert
  • Posts

    226
  • Joined

  • Last visited

Everything posted by Yarik Voronov

  1. Yarik Voronov

    PHP и HTML

    Значит как сделать в одном файле. Что-то похоже на такое: <?php if (isset($_POST['reg']) { ?> выводим форму вторую <?php } else if (isset($_POST['ok'])) {?> вносим в базу <?php } else if (isset($_POST['go'])) { ?> если введена информ-я в первую форму <?php } else { ?> если ничего из того, значит выводим первую форму <?php } ?>
  2. как скрипт напишешь. в большинстве способов - условно-параллельно: т.е. если интерпретатор РНР (например) видит оператор $myVar="Привет, ".$login; а затем echo $myVar; то сначала он присвоит $myVar какое-то значение (выполниться), а затем отдаст это значение в виде строки клиенту (выведиться). Но есть несколько вариантов сначала создать весь код страницы, а уже потом ее отдать. см функцию ob_start()
  3. 2 rus. нет у него (Goggi) не было указания мускулу обрабатывать $username как строку символов. $pass_res = mysql_query("SELECT password FROM users WHERE username='".$username."'"); в середине апостроф username= ' ".$username." ' " = username='login'
  4. 2 qwe!. да выложете весь скрипт пожалуйста. При первом взгляде на сабж пришла мысль, что сам скрипт прокрутки находиться именно на вставляемой в iframe первой странице (external1.htm). Естесственно, если страница другая, то прокрутки не будет.
  5. Прогонять через массив клиентов конечно же не надо. Можно регуляркой preg_replace_callback() в качестве массива замены забросить ключевые фразы регулярки, в качестве массива получить найденные совпадения.
  6. http://ru.wikipedia.org/wiki/User_Agent сюда заглядывали?
  7. PS. И последнее размышление. если учитывать, что То бишь XHTML - это тот же XML. То пусть ПШ клепает страницы как клепал, единственное требование к нему чтобы клепал в XHTML Strict. имхо, мы можем взять такой выходной документ написать к нему шаблон xsl и превратить этот выходной документ в любой другой, даже того же типа, но другого форматирования. Собственно тогда "пользователь помимо работы с шаблоном" уже не "должен будет также работать и со скриптом, формирующем xml", пользователь должен будет по собственной необходимости и инициативе писать xsl-стили трансформации для исходного шаблона (документа XHTML). Как говорил один йог:"Теперь свободы завались... На вот возьми долото и молоток и начни ей придавать конкретные формы" PPS. Я ничего не хочу доказать и никого не стараюсь обидеть. Я понимаю и принимаю, что в каких-то местах мог противоречить сам себе, повторять уже сказаное и сказаное не мной. Я всего лишь решал задачу: "возможности извлечения произвольных данных из шаблона по технологии xml + xsl"
  8. С другой стороны никто не мешает применить "знакомые буквы" monitors.mtz (пример чисто теоретический) {cms:section id="monitors"} {cms:xtemplate name="Мониторы" type="div-ol-li"} {title}-{model} {/cms:xtemplate} {/cms:section} {cms:section id="popular" count="3" order="sale_number"} {cms:xtemplate name="Популярные" type="custom"} <div id="{&&cms:section:id;}"><p>{&name;}</p> <ol> <xsl:apply-templates /> </ol> </div> <xsl:template match="monitor"> <li> <a href="<xsl:value-of select="@url"/>"><xsl:value-of select="@name"/></a> <xsl:value-of select="."/><hr/> </li> </xsl:template> {/cms:xtemplate} {/cms:section} то есть логика такова, что как только матрица попадает в парсер. парсер "решает" какой скрипт, формирующий нужный xml подключить и каким xsl этот xml обработать: либо уже имеющимся в наборе (type="div-ol-li") или произвольным (type="custom"). Собственно разницы с обычным ПШ особой нет. Если раньше мы получали тип данных php array() например, то теперь получаем тип данных xml от скрипта. Если раньше мы брали уже готовый html-шаблон c внедренными сущностями cms, то теперь придется прописывать этот html-шаблон через xsl. Т.о. получаем еще одно промежуточное звено в алгоритме, а именно: какой xsl шаблон применить в зависимости от... (типа устройства, выбранной темы и т.п.). C одной стороны преимущество, с другой усложнение кода и верстки. Я думаю ничего нового для вас не сказал, но все же хотел высказаться.
  9. Конечно придется. Просто логика будет иная. Я хочу сказать что при сравнении в посте №7 следовало бы исходить из того что ни ПШ ни Xml система "не знают" как сформировать топ 3 на странице monitors.html Это конечно чистая софистика, но чтобы "почуствовать разницу" надо поставить объекты сравнения в равные условия, но применить к ним разные методы. Почему то мы забыли что и в случае с ПШ надо будет работать с формирующим array массив исходных данных скриптом и со скриптом шаблона, дописывая недостающий функционал. Имхо. я не виже слишком большой разницы в смысле применения двух разных подходов. Разница лишь заключается в том что используются различные инструменты и соответственно различна и логика (алгоритмы) их применения. Хочу еще раз повториться: xsl шаблон не обязательно должен содержать форматирование всей страницы, как и xml файл не обязательно должен быть монолитным (полученным в одном и только одном скрипте). Например monitors.mtz ("матрица") <!DYNAMIC VARS [%style% GETFROM "preferencies.php" ]> <BLOCK head XSL="{!style/head.xsl}" ENGINE="modulas/xGetHead.php" /> <BLOCK top CHOOSE="3" CRITERIA="{topOfSales}" XSL="{!style/senterTop.xsl}" ENGINE="modulas/xGetTops.php" /> <BLOCK content CHOOSE="20" CRITERIA="{$_GET['monitor-type']}" XSL="{!style/senterContent.xsl}" ENGINE="modulas/xGetContent.php" /> Придумано за пять минуть ничего нисчем общего не имеет - просто так бы я например решал задачу CMS на технологии xml+xsl. Имхо логически запись : <BLOCK top CHOOSE="3" CRITERIA="{topOfSales}" XSL="{!style/senterTop.xsl}" ENGINE="modulas/xGetTops.php" /> ничем не отличается от записи: {cms:section id="monitors" count="3" order="sale_number"}<li>{title} - {model}</li>{/cms:section} и в первом и во втором случае происходит замена сущностей сгенерированным контентом.
  10. 2 LokiDi L0ck. следует отметить, что xslt шаблон не обязательно должен содержать форматирование ВСЕЙ страницы. Что такое шаблонизатор? это шаблон + парсер этого шаблона, который обеспечивает функционал этого самого шаблона. если парсер шаблона не поймет эту строку {cms:section id="monitors" count="3" order="sale_number"} то тоже надо будет лезть в его движок и дописывать функционал, т.е. менять скрипт. Шаблонизатор хорош тем, что кто-то хороший уже продумал его функционал и его шаблон. т.е прописал как парсер должен реагировать на ключевые слова. Если брать xml+xsl то в свете приведенного примера (с топ 3 мониторами) я вижу усложнение логики: у нас есть (должна бы быть) матрица конечной страницы. в этой матрице прописано какой запрос, какой xml каким xsl шаблоном следует обработать. т.е. конечная страница - это есть набор маленких xml распарсенных нужным xsl и собранных вместе согласно очередности (и логики) прописанной в матрице. В Програмном шаблонизаторе то что я назвал матрицей, уже прописано в шаблоне вот и все. А XSLT, как заменил ZoNT, нужен для других целей... Итак, на сервере можно парсить множество мелких xml, а можно собрать один xml файл и один xsl-шаблон для этого файла. Имхо, это уже вопрос удобства и целесообразности. Под мелкими xml я подразумеваю: xml для меню, для хедера, для футера, для основной части, для какого-нибудь блока опроса-вопроса, статистики ну и т.д.
  11. оно-то как раз работает... но только при загрузке / обновлении страницы. соответственно при клике надо сразу что-то делать с кнопками. например перезаписывать onclick .onclick = function() {return false}; менять class и т.п.
  12. Конкретнее в каком браузере не ставяться? в FF3 например ставяться. проверено на тест-примере. <?php $id="12345"; setcookie ("limit".$id,"yes",time()+43200, "/"); var_dump ($_GET); ?> Opera 9.52 тоже принимает
  13. Замените <a href="#" onclick="sendRequest('./rating.php?action=up&id=12345', 'rating12345', getRequest); return false;">Поднять</a> на <img src="/my.png" onclick="sendRequest('./rating.php?action=up&id=12345', 'rating12345', getRequest);" /> если и после этого страница перезагружается значит смотреть следует ответ сервера. если не перезагружается тогда следует останавливать дальнейшее распространение события при клике на <a> другим способом. Но скорее всего просто не заполнен атрибут href тега а как приведено выше. и(или) не почищен кеш браузера var request = new XMLHttpRequest(); // осла нету. Переписать эту строчку кода сообразно второго примера надо
  14. Тот же самый тест-пример в контексте первоначального вопроса. Файл raiting.php такой же <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Тест ajax</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <script language="javascript" type="text/javascript"> var resultId, request; /* /* глобальная видимость переменной request и resultId, /* что может привести к неожиданным результатам /* при одновременных нескольких асинхронных запросах, случайно /* выполненных в одно и то же время. */ function makeHttpRequest () { var request = false; // локальная видимость переменной if (window.XMLHttpRequest) { // Mozilla, Safari, Opera 8+, ... request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } return request; } function getRequest() { if (request.readyState == 4) if (request.responseText && request.status == 200) { alert(request.responseText); document.getElementById(resultId).innerHTML = request.responseText; } } function sendRequest (URL, _resultId, getRequestProc) { resultId = _resultId; request = makeHttpRequest(); //глобальная видимость переменной if (!request) return; request.open('GET', URL, true); //асинхронно request.onreadystatechange = getRequestProc; request.send(null); } </script> <a href="#" onclick="sendRequest('./rating.php?action=up&id=12345', 'rating12345', getRequest); return false;">Поднять</a> <b id="rating12345"></b> </body> </html>
  15. 2 Джин и всем. Извиняюсь в посте №5 допущена мною ошибка чтобы отправить запрос методом GET не надо разбивать строку на файл и параметры запроса. Да все правильно UPDATE (и он возвращает true/false). Так как запрос происходит без обновления страницы то где то значение $status['rating'], которое должно быть выведено методом inneHTML();? Если оно все-же было получено в скрипте ранее, то тогда нет вопросов, главное чтобы $status['rating'] не было undefined. Маленький тест-пример test.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Тест ajaxa</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <script language="javascript" type="text/javascript"> function sendRequest (URL, resultId) { var request = new XMLHttpRequest(); // осла нету. request.open('GET', URL, false); //синхронно request.send(null); if (request.status == 200) { alert(request.responseText); document.getElementById(resultId).innerHTML = request.responseText; } } </script> <a href="#" onclick="sendRequest('./rating.php?action=up&id=12345', 'rating12345'); return false;">Поднять</a> <b id="rating12345"></b> </body> </html> rating.php <?php var_dump ($_GET); ?>
  16. Млин, совсем забыл <a href="#" onclick="sendRequest(); return false;"></a> из самого простого
  17. ага, точно. я что-то не видел в РНР запроса типа SELECT и где присваивается $status['rating']. Запрос типа UPDATE возвращает только true/false.в функции getRequest () добавте alert(httpRequest.responseText); и посмотрите ответ сервера
  18. Скорее всего файла с именем например "/rating.php?action=up&id=1333" не существует. Ответ сервера 404. <!-- onClick="java script:..." пишется слитно. а то какой-то глюк, по крайней мере у меня :) --> <a href="" onClick="java script:sendRequest(['/rating.php','action=up&id=<?=$status['id']?>'], 'result<?=$status['id']?>', getRequest);" title="Нравится">+</a> <b id="result<?=$status['id']?>"><? include "./rating.php";?></b> // вывод рейтинга .... function sendRequest(param, _resultId, getRequestProc) { resultId = _resultId; document.getElementById(resultId).innerHTML = '--'; httpRequest.open('GET', param[0], true); /*true - асинхронный запрос. для синхронного запроса (false) алгоритм несколько проще*/ httpRequest.onreadystatechange = getRequestProc; httpRequest.send(param[1]); } function getRequest() { if (httpRequest.readyState == 4) if (httpRequest.responseText && httpRequest.status == 200) document.getElementById(resultId).innerHTML = httpRequest.responseText; }
  19. 2 Джин. А где код самого sendRequest() и getRequest() ??
  20. Зачим такой сложность? Как только файл перезаписался/изменился то меняется информация о нем, которую можно получить серверным скриптом. Например в РНР это функция: stat (string $filename) или fstat (resource $handle). По 1-ому вопросу. Можно сделать эксель таблицу в xml формате (то бишь сохранить как xml из самого excel) или сделать шаблон. И уже работать или как с текстом, или как с xml. (хотя последнее не пробовал). Office нормально открывает такой файл как Excel таблицу. Ессно дело если ошибок нет. ПСЖ А почему вопрос в разделе JS? Java Script тут много не попишешь... Разве что саму html-обертку.
  21. см RegExt.exec() var result = bMask.exec(expression); if (result instanceof Array) br = br.concat(result); Хотя... var test = [1,2,3]; test = test.concat([4,5,6],null); alert([test instanceof Array, test.length]);// true,7 Так что ошибка где-то в другом месте
  22. Yarik Voronov

    Ajax

    2 vvsh "посылка целой формы на сервер" http://dklab.ru/lib/JsHttpRequest/manual.html#cont5
  23. Из личных сообщений: Потому что форма должна работать в связке с серверным скриптом авторизации. у вас в примере только одна часть требуемой цепочки: форма -> серверный скрипт авторизации -> доступ к авторизованной части сайта. форма только отправляет данные для авторизации (в данном примере), но! никак их не обрабатывает и не может этого делать по своей сути. ищите в google статьи про аторизацию. кроме того в теме уже было дано несколько серверных скриптов (простых и более-менее надежных)
  24. noran, тогда подробно уточняйте что вы хотите сделать. я не могу за вас делать вашу работу по трем причинам: 1. не вижу всего коплекса задач 2. это ваша работа, а не моя 3. мне за это не платят с другой стороны приемов уже высказанных в этой теме достаточно чтобы решить задачу создания таблиц. все остальное это только логика и желание найти ответ. читайте введение в DOM (document object model, объектная модель документа/модель объектов документа)
  25. > Однако ко всему прочему я не знаю как мне отсылать инфу из форм number[], date_1[], theme_1[], target[], sender[] если задейстована одна строка с формами и несколько ? Как обычно <form name="links" method="post"> <table width="800" id="tbl" cellpadding="0" cellspacing="0" border="1"> <tr bgcolor=#FF9933 align="center"> <td align="center">№ письма</td> <td align="center">Дата отправления</td> <td align="center">Тема письма</td> <td align="center">Отправитель</td> <td colspan=2 align="center">Получатель</td> </tr> <tr> <td><input type="text" name="number[]" width="160"></td> <td><input type="text" name="date_1[]" width="160"></td> <td><input type="text" name="theme_1[]" width="160"></td> <td><input type="text" name="target[]" width="160"></td> <td><input type="text" name="sender[]" width="160"></td> <td><input type="button" value="+" onClick="add_new_row()"></td> </tr> </table> <input type="submit" value="Сохранить"> <input type="reset" value="Сброс написанного"> </form> просто на сервере данные инерпритируются как нумерованые массивы (будь в этом массиве хоть одно значение, хоть ни одного)
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy