chama
Новичок
Быстрый выбор данных из базы
Платформа(FreeBSD с PHP5.0.5) выполняю программу для внутренней сети.
Решаемая задач: необходим быстрый выбор контрагентов из базы(контрагенты берутся select запросом из базы MSSQL2000 с 1С).
Задача навеена удобством поиска в 1С и примером реалицации в google, но своими умениями. Т.е., конкретно, ввожу начало названия контрагента в поле input, появляется слой на которм отображаются все подходящие слова по запросу(точне like '$zapros%'), выбираю слово и продолжаю работать.
В этой задачи использую AJAX - ActiveXObject(для IE) и XMLHttpRequest (для остальных).
Задачу решил(довольно сильно отличается от реализаци в гугле, но выглядит так же), но остались нерешенными возникшие по ходу вопросы.
1). Все новые данные записываются в один span(можно в div, что наверное безразницы) в виде значений записанных по отдельности в div, имеющих методы onmouseover и onclick(для чего?, посмотрите на сайте гугла при наведении мышкой на значениях и нажатии на одно из них мышкой). В слой приходит что то типа этого:
<div onmouseover="javascript:" onclick="javascript;">контр1</div>
<div onmouseover="javascript" onclick="javascript">контр2</div>,
причем методы onmouseover и onclick прекрасно работают, ног когда я пытаюсь поставить переди divк примеру
<script type="text/javascript" language="JavaScript">
alert("test");
</script>(мне это необходимо для внесения значения в глобальную переменную - сколько найдено слов для того что бы показывать или прятать слой, если не найдено ничего), хотя я думал раньнше что появится модальное окно с надписью test.
Дальше 2 вопроса по Опере, которые не позволили полноценно реализовать все функции под ней.
2) в Опере не работает событие onkeup(версия 8.50 под FreeBSD), хотя в Осле и Фаирфоксе оно присутствует, хотя везде есть onkeydown и onkeypress для input type=text присутствует. Пришлось использовать onkeyup, так как последние два события возвращают знасение this.value до нажатия кнопки(что неприемлимо!).
3)ИМХО: AJAX IE и Firefox отправляют и получают данные в слой только в кодировке utf-8, но так как MSSQL работает с win1251 приходится перекодировать данные в запрос из одной кодировки в другую и обратно, но Opera отправляет и получает данные в кодировке в которой открыта страница(в моем случае это win-1251, преобразвание всех связанных скриптов в utf-8 весьма затруднительна). Поэтому наверное сайт гугла не работа с русскими словами под Оперой.
Не знаю как реализовать(не нашел ни в справочниках ни в документации), подозреваю CSS2.
4) В общем случае - это с использованием javsripts сделать текст в input type=text частично выделенным(анекдот).
Т.е. я ввожу часть слова которое хочу найти а мне подставляется в строку наиболее подходящее слово но символы которые я не вводил стыновятся выделенными а курсор как бы остается на том же месте, что бы дальше уточнить запрос.
Платформа(FreeBSD с PHP5.0.5) выполняю программу для внутренней сети.
Решаемая задач: необходим быстрый выбор контрагентов из базы(контрагенты берутся select запросом из базы MSSQL2000 с 1С).
Задача навеена удобством поиска в 1С и примером реалицации в google, но своими умениями. Т.е., конкретно, ввожу начало названия контрагента в поле input, появляется слой на которм отображаются все подходящие слова по запросу(точне like '$zapros%'), выбираю слово и продолжаю работать.
В этой задачи использую AJAX - ActiveXObject(для IE) и XMLHttpRequest (для остальных).
Задачу решил(довольно сильно отличается от реализаци в гугле, но выглядит так же), но остались нерешенными возникшие по ходу вопросы.
1). Все новые данные записываются в один span(можно в div, что наверное безразницы) в виде значений записанных по отдельности в div, имеющих методы onmouseover и onclick(для чего?, посмотрите на сайте гугла при наведении мышкой на значениях и нажатии на одно из них мышкой). В слой приходит что то типа этого:
<div onmouseover="javascript:" onclick="javascript;">контр1</div>
<div onmouseover="javascript" onclick="javascript">контр2</div>,
причем методы onmouseover и onclick прекрасно работают, ног когда я пытаюсь поставить переди divк примеру
<script type="text/javascript" language="JavaScript">
alert("test");
</script>(мне это необходимо для внесения значения в глобальную переменную - сколько найдено слов для того что бы показывать или прятать слой, если не найдено ничего), хотя я думал раньнше что появится модальное окно с надписью test.
Дальше 2 вопроса по Опере, которые не позволили полноценно реализовать все функции под ней.
2) в Опере не работает событие onkeup(версия 8.50 под FreeBSD), хотя в Осле и Фаирфоксе оно присутствует, хотя везде есть onkeydown и onkeypress для input type=text присутствует. Пришлось использовать onkeyup, так как последние два события возвращают знасение this.value до нажатия кнопки(что неприемлимо!).
3)ИМХО: AJAX IE и Firefox отправляют и получают данные в слой только в кодировке utf-8, но так как MSSQL работает с win1251 приходится перекодировать данные в запрос из одной кодировки в другую и обратно, но Opera отправляет и получает данные в кодировке в которой открыта страница(в моем случае это win-1251, преобразвание всех связанных скриптов в utf-8 весьма затруднительна). Поэтому наверное сайт гугла не работа с русскими словами под Оперой.
Не знаю как реализовать(не нашел ни в справочниках ни в документации), подозреваю CSS2.
4) В общем случае - это с использованием javsripts сделать текст в input type=text частично выделенным(анекдот).
Т.е. я ввожу часть слова которое хочу найти а мне подставляется в строку наиболее подходящее слово но символы которые я не вводил стыновятся выделенными а курсор как бы остается на том же месте, что бы дальше уточнить запрос.