Jump to content

CoDy

User
  • Posts

    381
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by CoDy

  1. Хотел поинтересоваться практикуется ли в верстке подход, когда при помощи css медиа запросов скрываются некоторые элементы, чтобы улучшить воспроизведение страницы на устройствах с малым экраном? Например, есть страница со слайдером, логотипом, контактами в шапке. На экранах ноутбуков и дэсктопов с большим разрешением все красиво и удобно. Но на планшете и смартфоне все это выглядит довольно громоздко и довольно не удобно(для того, чтобы добраться до контента или меню нужно скролить страничку, да и тяжелые фотки со слайдера могут долго грузиться при узком канале инета). Стоит ли пользуясь медиа запросами просто скрывать все "лишнее" на устройствах с малым экраном для более "удобной" работы с сайтом?
  2. Лучше приведите код страниц вместо принскринов, а еще лучше - ссылки на эти страницы.
  3. Сервак, который пингуется на скрине находится в подсети провайдера. Пробовал делать трассировку маршрута до сервера, когда он в оффе? Возможно, это натолкнет на какие-то мысли. Если трассировка оборвется выше 188.93.16.73 - это 100% проблемы провайдера. Если на 188.93.16.73 возможно на твоем серваке сеть отваливается по вине ОС или среды виртуализации если это VDS. Можно еще попробовать запустиь пинг или трассировку хоста из подсети провайдера на самом сервере с логированием результатов. Потом посмотреть логи за период, когда сервер отваливается от мира.
  4. А такое не прокатит: http://jsfiddle.net/m6e62/4/?
  5. В таких случаях оч помогает лог медленных запросов: [mysqld].......log-slow-querieslog-slow-queries="mysql-slow-queries.log"long-query-time = 1 log-queries-not-using-indexes# если версия >= 5.1.6log-output = TABLE
  6. Да. Любые дополнительные действия в запросе увеличивают его ресурсоемкость. В контексте выполнения задачи приведенной в первом посте - это скорее излишество, особенно если на бд идет оч большая нагрузка и нужно экономить на всем. Но в тоже время, применяя такие методы можно делать довольно полезные(там где это действительно нужно, и особенно если такие действия нужно выполнить на стороне бд, например, в хранимых процедурах/функциях, триггерах, представлениях) запросы: -- Запрос для определения нарушения инкрементной последовательности.SET @i := 0;SELECT @i, tmp.`index`FROM ( SELECT 1 AS `index` UNION SELECT 2 UNION SELECT 3 UNION SELECT 5 UNION SELECT 6 ) AS tmpWHERE ABS(@i := @i + 1) AND @i <> tmp.`index` LIMIT 1;-- Запрос с генерацией инкрементного поля.SELECT (@index := @index + 1) AS `index` FROM information_schema.TABLES AS t, (SELECT @index := 0) AS tmp;-- илиSET @index := 0;SELECT (@index := @index + 1) AS `index` FROM information_schema.TABLES AS t;
  7. Если таблица innodb, тогда нужно увеличивать значение параметра innodb_buffer_pool_size. Он отвечает за объем выделяемой памяти для данных и индексов innodb таблиц. Если myisam - key_buffer_size. В манах для бд серверов рекомендуют выставлять по возможности это значение до 75% от доступной памяти. Еще есть один тараметр thread_cache_size - определяет количество постоянно существующих потоков, которые обрабатывают запросы к бд. При поступлении запроса к бд, для его обработки должен быть создан поток, который его будет обрабатывать. Создание и завершение таких потоков - это расход ресурсов CPU. Параметр thread_cache_size определяет количество "дежурящих" потоков. Если нет дефицита памяти стоит увеличить этот параметр до значения среднего количества одновременных соединений к бд. Смотри значение SHOW GLOBAL STATUS LIKE 'Threads_created' если оно измеряется сотнями/тысячами, то это не есть хорошо.
  8. Тут смотрели: cat /etc/apache2/sites-enabled/*Вот последняя команда моего главного конфиг файла(/etc/apache2/apache2.conf) апача на убунту сервер 10.04.2 LTS, которая подключает файл-конфиги виртуальных хостов: # Include the virtual host configurations:Include /etc/apache2/sites-enabled/Ищите в своем конфиге подобное подключение конфигов виртуальных зостов, если они конечно настроены. Возможен вариант, что виртуальные хосты просто не подключены/настроены. По какому урлу запускаете скрипт на исполнение?
  9. Попробуйте \r\n заменить на \n
  10. Вот еще можно так сделать: <?php mysql_connect("mysql.hostinger.ru", "u556399916_2", 123456); mysql_select_db("u556399916_2"); $result = mysql_query("SELECT family, (family = 'Иван') AS is_ivan FROM mybd"); while ($row = mysql_fetch_array($result)) { echo $row[name] . ($row['is_ivan'] ? 'true' : ''); mysql_free_result($result); ?>
  11. Есть замечательный фри инструмент для работы с БД: DevArt DBForge studio for MySQL. Там можно делать ОЧЕНЬ многое, для меня стал крайне незаменимым инструментом. Если дадите схему БД - напишу вам триггер(даже 2, нужно вешать триггер на UPDATE и на INSERT). Но прежде убедитесь, что вам хостер разрешает пользовать триггеры(бывали ситуации, когда хостер не давал пользовать триггеры) Вот вам шаблон(это шаблон, а не готовые триггеры, без правок он работать он не будет ): таблица - замените на имя таблицы для которой создается, подправить имена полей и добавить запросы ко всем нужным таблицам. DELIMITER $$DROP TRIGGER IF EXISTS trg_BI_таблица$$CREATETRIGGER trg_BI_таблицаBEFORE INSERTON таблицаFOR EACH ROWBEGINDECLARE sum1,sum2,sum3 integer UNSIGNED DEFAULT 0;-- Выборка значения из интересующей таблицы в переменную.SELECT поле INTO sum1 FROM таблица WHERE улюч_таблицы = NEW.ключ LIMIT 1;-- Через NEW.имя_поля доступны все значения, которые будут записаны, их можно переопределить.SET NEW.поле := sum1 + sum2 + sum3;END$$DROP TRIGGER IF EXISTS trg_BU_rooms$$CREATETRIGGER trg_BU_roomsBEFORE UPDATEON roomsFOR EACH ROWBEGINDECLARE sum1,sum2,sum3 integer UNSIGNED DEFAULT 0;-- Выборка значения из интересующей таблицы в переменную.SELECT поле INTO sum1 FROM таблица WHERE улюч_таблицы = NEW.ключ LIMIT 1;-- Через NEW.имя_поля доступны все значения, которые будут записаны, их можно переопределить.SET NEW.поле := sum1 + sum2 + sum3;END$$DELIMITER ;
  12. Вот так попробуйте: SELECT rm.room, rm.places, rm.places - COUNT(rs.id) FROM rooms AS rmLEFT JOIN reserved_places AS rsUSING (room)GROUP BY rm.roomНо прежде, проверьте правильность исходных данных в таблицах и результатом, который вы хотите получить. Мои результаты по вашим данным отличаются: номер 101 мест 6 свободно 3 номер103 мест 2 свободно 2 номер105 мест 6 свободно 3 номер108 мест 8 свободно 8 Либо вы просчитались, либо я не понял замысел вашей схемы базы данных.
  13. http://javascript.ru/RegExp (g, i, m), http://ru.wikipedia.org/wiki/Регулярные_выражения (общая информация)
  14. Похоже, это регулярка для поиска комментариев(находить текст формата /*апвапвапвап*/). Ошибки выдает ибо модификатора g, на сколько мне известно, нету.
  15. При преобразовании в boolean строка считается false если только она пустая('', strlen = 0 ). Во всех остальных случаях строка будет - true. echo (int)((boolean)'asd'),'';echo (int)((boolean)''),'';echo (int)((boolean)"\n"),'';echo (int)((boolean)"\t"),'';echo (int)((boolean)"\x0D\x0A"),' // wix перенос строки';echo (int)((boolean)"\x0D"),'';echo (int)((boolean)"\x0A"),' // *nix перенос строки';echo strlen("\x0D\x0A"),'';echo strlen("\x0D"),'';echo strlen("\x0A"),'';
  16. Немного раскрою ответ stars по поводу "двойных" и 'одинарных' кавычек. Если нужно просто присвоить переменной строку и в ней нет спец-символов типа \n, \t.... - пользуйте ВСЕГДА 'одинарные кавычки': $string = 'простая строка без подстановок и спец-символов';Что касается "двойных кавычек", я их практически не использую(исключение если нужна строка с спец-символами). При обработке строк, заключенных двойными кавычками пхп интерпритатор пытается найти в ней подстановочные переменные и спец-символы, что занимает некоторые ресурсы. Это конечно мелочи, но.... // Лишние расходы ресурсов на поиск подстановочных переменных и спец-символов.$string = "простая строка без подстановок и спец-символов"; /** * $string1 и $string2 будут идентичны по значению, но нициализация $string2 * более эффективна в плане быстродействия, хотя менее удобна в "кодировании". */$string1 = "строка с подстановками $simpleVar1, {$simpleVar2}, {$arrayValue[0]}, {$object->param}";$string2 = 'строка с подстановками '. $simpleVar1 .', '. $simpleVar2 .', '. $arrayValue[0] .', '. $object->param;
  17. Стрелку на кнопке тоже css-ом планируете рисовать?
  18. Если ну ОЧЕНЬ нужно, то можно средствами JS на клиенте выставлять куки и передавать данные в куках. А чем интересно вызвана нелюбовь к параметрам в адресной строке? По поводу GET и POST методов передачи данных на сервер, читал интересный материал, в котором была рекомендация по возможности придерживаться: post метод, преимущественно, применять для запросов, результат выполнения которых будет модификация системы(запись в бд, например) get метод пользовать для запросов, которые делают выборку имеющихся в системе данных.
  19. Я бы сказал самый удобный, но foreach ($arr as $key => $value) { ........}в теле цикла переменная $value - это копия элемента массива. Если элементы массива оч. "большие", то это затратно по памяти.
  20. CoDy

    Как обойти while

    В таком случае, похоже, что дата в таблице employ хранится как строка, что может в дальнейшем вылезти боком. Например, встанет требование показать все занятые времена за период. В случае хранения даты как строки это будет затруднительно сделать.
  21. $(document).ready(function(){ // Действия, которые нужно сделать после ПОЛНОЙ загрузки документа. alert('Документ полностью подгрузился: построена объектная модель документа, подгружены все скрипты');});Так иногда прописывают JS-скрипты, которые нужно запустить после загрузке документа.
  22. CoDy

    Как обойти while

    Ваш вариант с правками: $ttime = mysql_query("SELECT * FROM time"); // Это выборка по всему времени, то есть оно генерирует все варианты времени предложенные пользователю из таблицы time (12:00, 13:00)$dmy = $year .''. $month .''. $days;$etime = mysql_query("SELECT * FROM employ WHERE date='$dmy'"); //Запрос который выводит из таблицы employ (занятое время) варианты уже забронированного времени на конкретную дату на которую кликнул пользователь// Ваш вариант просто берет одно единственное значение из полученной выборки, а нужно их получить все.// $eetime = mysql_fetch_array($etime); // Ну это думаю понятно // Формируем массив идентификаторов времен, которые уже заняты.$bookedTime = array ();while ( $tmp = mysql_fetch_array($etime) ) { $bookedTime[] = $tmp['time'];}while($ttimes = mysql_fetch_array($ttime)) // Этот цикл создает выборку из базы всего времени которое вбито (т.е 12:00, 13:00 и т.д){if( array_search($ttimes['id'], $bookedTime) === false ) // Условие которое при совпадении id времени на конкретную дату с вариантами предложенного общего времени из таблицы time, т.е если на число $dmy в таблице employ id времени из общей таблицы time будет занято то предложенное время из таблицы time не выводится{echo '<input type="checkbox" id="check1" name="time" value="'.$ttimes['time'].'"> <label for="check1">'.$ttimes['time'].'</label><br>'; // Это вывод всего времени из таблицы time}}Если в таблице дата хранится как тип DATE, тогда дату нужно передавать в формате 'год.месяц.день', закавычивать ЖЕЛАТЕЛЬНО, разделитель частей даты: точка, тире или можно без разделителя. Мой вариант: $dmy = $year .''. $month .''. $days;$sql = 'SELECT tm.time AS timeFROM `time` AS tmLEFT JOIN `employ` AS epON tm.id = ep.time AND ep.date = \''. $dmy .'\'WHERE ep.time IS NULL';$result = mysql_query($sql);while ( $tmp = mysql_fetch_assoc($result) ) { echo '<input type="checkbox" id="check1" name="time" value="'. $tmp['time'] .'"> <br>';}Немного напортачил с запросом в первом посте.
  23. CoDy

    Как обойти while

    Для этого мне нужно знать структуру данных. Вышли результат работы запросов: SHOW CREATE TABLE `time`;SHOW CREATE TABLE `employ`; Это псевдоним для таблицы, которая используется в запросе. Если есть запрос с объединением нескольких таблиц, то для конкретизации какой столбик какой именно таблицы нужно(не всегда) указать имя_таблицы.имя_столбца. Имя таблицы может в дальнейшем изменится и его придется править во всем запросе; или имя таблицы может быть ОЧ. длинным и текст запроса сильно вырастет. Поэтом я, обычно, в мультитабличных запросах таблицам даю псевдонимы и при указании на колонку пользую псевдоним таблицы а не ее имя. Вот так примерно должно это выглядеть в итоге <?php/** * */ $date = date('Y.m.d');$sql = 'SELECT tm.time AS timeFROM `time` AS tmLEFT JOIN `employ` AS epON tm.id = ep.timeWHERE ep.date = \''. $date .'\' AND ep.time IS NULL';$result = mysql_query($sql);while ( $tmp = mysql_fetch_assoc($result) ) { echo '<input type="checkbox" id="check1" name="time" value="'. $tmp['time'] .'"> <br>';}
  24. Пароли не принято хранить в "открытом" виде. Минимум делайте md5(), а также можно их еще "шумом" разбавить перед записью в бд. При таком подходе не нужно пароль "чистить" функциями stripslashes и htmlspecialchars. $pass = md5($pass . $noise)При записи логина и почты не стоит их чистить htmlspecialchars, достаточно stripslashes. htmlspecialchars нужна при выводе этих данных на страницу, чтоб html не поламался.
  25. CoDy

    Как обойти while

    Совет: старайтесь не делать запросы к sql-бд в цикле. Лучше немного продумать и усложнить sql-запрос, чем в цикле опрашивать бд. На то она и бд, чтоб быстро ворочать массивами данных. Если есть таблица с шаблонными временами приемов(time, c колонками id, time) и таблица(employ, c колонками date,time - ссылается на колонку id таблицы time), где на конкретную дату отмечается запись на прием на конкретное время. Тогда лудше написать запрос сразу на получение не занятых часов приемов на указанную дату. SELECT tm.timeFROM `time` AS tmLEFT JOIN `employ` AS epON tm.id = ep.timeWHERE ep.date = 'дата' -- отсекаем все даты записей кроме нас интересующей AND ep.time IS NULL -- отсекаем все часы приема уже заняятые
×
×
  • 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