Jump to content

alex_tihonko

Newbie
  • Posts

    21
  • Joined

  • Last visited

alex_tihonko's Achievements

Explorer

Explorer (1/14)

0

Reputation

  1. Что за выращивание лога? Атрибуты у тегов при строгом доктайпе не допускаются? P.S. основная моя деятельность - программирование, верстку я только начал осваивать. А у вас какая скорость подключения? Поделитесь пожалуйста информацией У меня на скорости 1Мб/с изображения загружаются не очень быстро - если фотографий много, то при переходе к следующему изображению оно часто оказывается загруженным не до конца и отображается частично.
  2. Добрый день! Порой встречаются страницы, на которых достаточно много тяжелых изображений. При этом браузер начинает загружать все изображения одновременно. Пример такой страницы: http://africa-studio.ru/04_studio.htm Можно ли сделать так, чтобы изображения загружались по очереди в той последовательности, в которой они встречаются в коде, т.е. чтобы следующее изображение не начинало загружаться, пока полностью не загрузится предыдущее? P.S. галерея работает некрасиво, приходится ставить большую начальную задержку, иначе при первом проходе изображения показываются обрезанными, т.к. они еще не загрузились: http://tihonko.spb.ru/show_gallery.php?id_section=25
  3. В IE5 JQuery не работает. Поэтому на него я точно забью) Хотя если кто-нибудь доработает JQuery, чтобы она работала в IE5, то я подумаю))
  4. Эх, ладно, будем поддерживать IE6.
  5. Посмотрим, спасибо!
  6. Добрый день! При выполнении последнего проекта, меня в очередной раз взбесил IE6 - эта Божья ошибка. Не буду рассказывать что он вытворял в этот раз, но было весело(если кому интересно - я расскажу). Статистика говорит о том, что им по прежнему пользуются 11% пользователей. Кто как считает, нужно вообще ориентироваться на IE6 при выполнении проекта или пусть идет лесом то, что он все показывает вкривь и вкось?
  7. Стояла задача сделать так, чтобы правая колонка была всегда, вне зависимости от количества контента, не меньше левой. Причем с помощью слоев (так как нужно было использовать параметры max-width и min-width). За основу был взят вот этот рецепт. Все это привело к тому, что фоновый цвет пришлось задать для всей правой колонки.
  8. Добрый день! Вот какая история приключилась: Сначала, когда я закончил верстку, сайт отображался корректно во всех браузерах кроме ie6. В нем фоновый цвет тега <div class='rightcol'> заслонял содержимое тега! Т.е фоновый цвет располагался поверх содержимого. Поэтому на месте правой колонки располагался просто белый прямоугольник. Долго не мог понять, что не так. Стал экспериментировать. Макет в ie6 стал отображаться корректно после того, как я убрал все комментарии вида <!-- --> из кода. На этом я и успокоился , хотя связь комментарием с фоновым цветом мне до сих пор не понятна. Сегодня пошел к заказчику показывать сайт. Заказчик - кафедра, у них понятное дело - мониторы 15 дюймов и браузер ie6. И на их компьютере опять двадцать пять - фон правой колонки отображается поверх ее содержимого. Домой пришел, проверил у себя в ie6 - все нормально. В чем может быть причина такого глюка и как ее устранить, подскажите пожалуйста? Вот ссылка на сайт: http://vzfei.tihonko.ru
  9. Спасибо! Я не знал о существовании условных комментариев. Сейчас нашел несколько статей, почитал. Очень удобная штука
  10. Добрый день! В связи с тем, что IE6 не понимает параметров min-width и max-width, хочу подкинуть ему хак, который установит обычный параметр width для слоя. Подскажите пожалуйста, как подкинуть хак только под IE6? P.S. IE7 и IE8 понимают параметры min-width и max-width.
  11. Пожалуйста! Если пример понравится, вот код обеих функции down(), up(): <?php //////////////////////////////////////////////////////////// // 2005-2008 (C) Кузнецов М.В., Симдянов И.В. // PHP. Практика создания Web-сайтов // IT-студия SoftTime // http://www.softtime.ru - портал по Web-программированию // http://www.softtime.biz - коммерческие услуги // http://www.softtime.mobi - мобильные проекты // http://www.softtime.org - некоммерческие проекты //////////////////////////////////////////////////////////// // Выставляем уровень обработки ошибок // (http://www.softtime.ru/info/articlephp.php?id_article=23) error_reporting(E_ALL & ~E_NOTICE); // Опускание блока на одну позицию вниз function down($id_position, $tbl_name, $where = "", $fld_name = "id_position") { // Извлекаем текущую позицию $query = "SELECT pos FROM $tbl_name WHERE $fld_name = $id_position LIMIT 1"; $pos = mysql_query($query); if(!$pos) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении текущей позиции"); } if(mysql_num_rows($pos)) { $pos_current = mysql_result($pos, 0); } else { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении текущей позиции"); } // Извлекаем следующую позицию $query = "SELECT pos FROM $tbl_name WHERE pos > $pos_current $where ORDER BY pos LIMIT 1"; $pos = mysql_query($query); if(!$pos) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении следующей позиции"); } if(mysql_num_rows($pos)) { $pos_next = mysql_result($pos, 0); // Меняем местами текущую и следующую позиции $query = "UPDATE $tbl_name SET pos = $pos_next + $pos_current - pos WHERE pos IN ($pos_next, $pos_current) $where"; if(!mysql_query($query)) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка изменения позиции"); } } } // Подъём блока на одну позицию вверх function up($id_position, $tbl_name, $where = "", $fld_name = "id_position") { // Извлекаем текущую позицию $query = "SELECT pos FROM $tbl_name WHERE $fld_name = $id_position LIMIT 1"; $pos = mysql_query($query); if(!$pos) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении текущей позиции"); } if(mysql_num_rows($pos)) { $pos_current = mysql_result($pos, 0); } else { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении текущей позиции"); } // Извлекаем вышестоящую позицию $query = "SELECT pos FROM $tbl_name WHERE pos < $pos_current $where ORDER BY pos DESC LIMIT 1"; $pos = mysql_query($query); if(!$pos) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении предыдущей позиции"); } if(mysql_num_rows($pos)) { $pos_preview = mysql_result($pos, 0); // Меняем местами текущую и вышестоящую позиции $query = "UPDATE $tbl_name SET pos = $pos_current + $pos_preview - pos WHERE pos IN ($pos_current, $pos_preview) $where"; if(!mysql_query($query)) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка изменения позиции"); } } } ?> Копирайты только нужно оставлять. Это не мое личное изобретение , а изобретение руководителей студии www.softtime.ru У них очень много полезных скриптов/приложений. Даже FrameWork свой есть. Я на базе него сайты делаю. Весьма удобный, правда функционал у него не очень большой. Но для маленьких/средних проектов вполне подойдет.
  12. Для того чтобы перемещать можно было нужно ввести дополнительное числовое поле "pos" Поле это должно работать так: при добавлении первой записи его значение должно быть равно 1. При добавлении последующей записи его значение должно вычисляться так: берем максимальную позицию в таблице и увеличиваем ее на 1. При этом если при выводе задана прямая сортировка по полю pos, то новые записи будут помещаться в конец таблицы. Если обратная - то в начало. Если нужно поднять запись (при прямой сортировке). То действуем так: извлекаем значение pos для этой записи, извлекаем значение поля pos для вышестоящей записи(у нее pos будет меньше) и меняем значения поля pos у этих записей местами. Соответственно если нужно запись опустить, то действуем так же за тем исключением, что извлекаем нижестоящую запись (у нее значение pos будет больше). Вот, например, функция, которой я пользуюсь: Параметры: $id_position - номер поднимаемой позиции $tbl_name - название таблицы, в которой осуществляется подъем записи $where - дополнительное where-условие, если оно требуется $fld_name - название поля, в котором содержится первичный ключ // Подъём блока на одну позицию вверх function up($id_position, $tbl_name, $where = "", $fld_name = "id_position") { // Извлекаем текущую позицию $query = "SELECT pos FROM $tbl_name WHERE $fld_name = $id_position LIMIT 1"; $pos = mysql_query($query); if(!$pos) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении текущей позиции"); } if(mysql_num_rows($pos)) { $pos_current = mysql_result($pos, 0); } else { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении текущей позиции"); } // Извлекаем вышестоящую позицию $query = "SELECT pos FROM $tbl_name WHERE pos < $pos_current $where ORDER BY pos DESC LIMIT 1"; $pos = mysql_query($query); if(!$pos) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка при извлечении предыдущей позиции"); } if(mysql_num_rows($pos)) { $pos_preview = mysql_result($pos, 0); // Меняем местами текущую и вышестоящую позиции $query = "UPDATE $tbl_name SET pos = $pos_current + $pos_preview - pos WHERE pos IN ($pos_current, $pos_preview) $where"; if(!mysql_query($query)) { throw new ExceptionMySQL(mysql_error(), $query, "Ошибка изменения позиции"); } } } P.S. вызов функции нужно поместить в try-обработчик и добавить класс ExceptionMySQL, который служит для вывода сообщения об ошибке, если произойдет исключительная ситуация(ExceptionMySQL наследуется от Exception).
  13. Я бы сделал так. Страницы admin_t.php и red_t.php связаны между собой и с БД. Страница online.php не зависит от страниц admin_t.php и red_t.php, а просто делает выборку из БД. 1. admin_t.php <?php //На всякий случай вывод складываем в буфер ob_start(); //Если в POST не пусто - будем проверять есть ли такой логин в базе и есть есть, то правильный ли для него указан пароль if(!empty($_POST)) { //Достаем данные из базы, которые соответствуют введенному логину //в $usr - указатель на результирующую таблицу, в $user - массив с данными пользователя ...... //Если такого пользователя нет - помещаем в переменную $error сообщение об ошибке if(mysql_num_rows($usr) < 1) { $error = 'Неправильно введено имя пользователя!'; } //Если пользователь есть, но пароль введен не верно - помещаем в переменную $error сообщение об ошибке elseif($user['user_pass'] != $_POST['user_pass']) { $error = 'Неправильно введен пароль!'; } //Если пользователь существует и пароль введен правильно - переадресовываем на страницу red_t.php else { header("Location: red_t.php?user_name=$_POST[user_name]&user_pass=$_POST[user_pass]"); exit(); } } //выводим сообщение об ошибке, если пользователь ввел неправильные данные if(!empty($error)) { echo "<p>$error</p>"; } //Выводим форму, в которой нужно ввести логин и пароль. Обработчик - admin_t.php. Метод передачи - POST ........ ?> 2. Файл red_t.php <?php //На всякий случай вывод складываем в буфер ob_start(); //В REQUEST должны содержаться логин и пароль //Проверяем, что пользователь перешел к данной странице с правильными данными логин/пароль //в $usr - указатель на результирующую таблицу, в $user - массив с данными пользователя //Сначала извлекаем данные ........ //Теперь проверяем //Если переданы неправильные данные - переадресовываем на страницу авторизации if(mysql_num_rows($usr) < 1 || $user['user_pass'] != $_REQUEST['user_pass']) { header("Location: admin_t.php"); exit(); } //Если данные переданы правильно, осуществляем дальнейшие действия //Если это первое обращение к файлу - выведем форму для редактирования if(empty($_POST)) { //Извлекаем данные из базы и выводим форму для редактирования. Обработчик формы - файл red_t.php метод передачи - POST //В форму нужно добавить скрытые поля с именами user_name и user_pass. В них поместить значения $_REQUEST['user_name'] //и $_REQUEST['user_pass'] соответственно ...... } //Если же это обращение к странице после нажатия на кнопку 'submit' формы, // то сохраним изменения в базе и переадресуем на страницу online.php else { //Сохраняем изменения в базе ........ //Переадресовываем на страницу online.php header("Location: online.php"); exit(); } ?> 3. Файл online.php <?php //Просто извлекаем данные из базы и выводим их на страницу в нужном месте и виде ..... ?> Решение на лучшее не претендует, но работать будет
  14. Да, я тоже считаю, что так лучше всего делать. Если так делать, то разницы между, mysql_real_escape_string() и mysql_escape_string() никакой нет. Я просто хотел подчеркнуть небольшое различие, которое между этими функциями все же имеется. Вот анекдотец, может быть он будет новым : - Вчера снеговик H. покончил жизнь самоубийством, прыгнув на теплотрассу. Психологи считают, что виноваты комплексы, мучавшие снеговика в связи с маленькой морковкой
  15. Вот так будет работать: <?php //Данные для соединения c базой $db_location = "localhost"; $db_user = "test"; $db_user_pass = "test"; $db_name = "test"; //Соединяемся с базой $db_connection = mysql_connect($db_location, $db_user, $db_user_pass); mysql_select_db($db_name, $db_connection); $id = mysql_real_escape_string($_GET['id']); if (isset($_GET['id'])) { //Запрос $query = "SELECT * FROM test WHERE id = $id LIMIT 1"; $tst = mysql_query($query); //вывод результатов $test = mysql_fetch_array($tst); echo $test['name']; } ?> В окне браузера: Piter А вот так не будет: <?php //Данные для соединения c базой $db_location = "localhost"; $db_user = "test"; $db_user_pass = "test"; $db_name = "test"; $id = mysql_real_escape_string($_GET['id']); if (isset($_GET['id'])) { //Соединяемся с базой $db_connection = mysql_connect($db_location, $db_user, $db_user_pass); mysql_select_db($db_name, $db_connection); //Запрос $query = "SELECT * FROM test WHERE id = $id LIMIT 1"; $tst = mysql_query($query); //вывод результатов $test = mysql_fetch_array($tst); echo $test['name']; } ?> В окне браузера: Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in Z:\home\localhost\www\test\index.php on line 11 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Z:\home\localhost\www\test\index.php on line 11 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\test\index.php on line 23
×
×
  • 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