Внимание вопрос (: влияет ли большое количество этих форм, запросов и пр. на скорость генерирования (если можно так выразится) страницы?
Спустя 21 минута, 18 секунд (13.06.2009 - 18:13) twin написал(а):
Сначала надо четко уяснить себе, что есть страница, что есть файл, а что есть скрипт.
1. Страница, это результат работы серверных приложений, выданный в поток для отображения браузером(?) информации.
2. Файл, это то, где прописаны инструкции для серверных приложений, каким именно образом формиросать страницу.
3. Скрипт(англ - сценарий) это загруженнаые в оперативную память инструкции, взятые из разных файлов для формирования страницы.
В доме, который построил Джек.
А теперь, внимание вопрос.
ВСЁ ЯСНО ИЛИ НЕТ, ЩЬЁРТ ПОБЬЕРИ?
1. Страница, это результат работы серверных приложений, выданный в поток для отображения браузером(?) информации.
2. Файл, это то, где прописаны инструкции для серверных приложений, каким именно образом формиросать страницу.
3. Скрипт(англ - сценарий) это загруженнаые в оперативную память инструкции, взятые из разных файлов для формирования страницы.
В доме, который построил Джек.
А теперь, внимание вопрос.
ВСЁ ЯСНО ИЛИ НЕТ, ЩЬЁРТ ПОБЬЕРИ?



Спустя 13 минут, 12 секунд (13.06.2009 - 18:27) freed-master написал(а):
Ясно одно: скрипт выполяется на сервере, пользователь получает готовый вариант, следовательно
Цитата |
загруженнаые в оперативную память |
надо понимать что речь идет об оперативной памяти сервера?
Выходит никак не влияет... разве что сервер слабенький...
Выходит никак не влияет... разве что сервер слабенький...
Спустя 24 минуты, 23 секунды (13.06.2009 - 18:51) twin написал(а):
В свете этого пытаемся разобрать вопрос.
Цитата |
У меня вот на одной php странице много форм и прочей ерунды; |
На странице? То есть всю эту "прочую ерунду" пользователь видит сразу?
Цитата |
так же много обращений к БД |
страница не может обратится к БД, это делает скрипт.
Цитата |
(вся страничка весит около 500Кб), |
страница или файл? То есть 500kb загружается в браузер или это то, что лежит на сервере?
Цитата |
но выводится вся эта байда не сразу а в зависимости от полученых гэтом переменных. |
Начинаем смутно догадываться, что вещи названы не своими именами.
И соответственно пишем ответ.(см выше).
Теперь прочитай еще раз и попробуй понять.
Спустя 26 минут, 53 секунды (13.06.2009 - 19:18) freed-master написал(а):
Цитата |
вещи названы не своими именами |
Согласен!
Вся ерунда в файле весом 500кб, там же скрипт с многочисленными обращениями к БД. Страница формируется из полученных переменных.
И все таки: если в файле сначала код скрипта потом еще много всего... будет ли сервер (или как назвать то что выполняет скрипт?) вначале перебирать все обращения (ведь это занимает время?), а потом смотреть что именно выводить?
P.S.
Хотя уже это не так важно (пока писал придумал как упростить код) но все же интересно...
Вся ерунда в файле весом 500кб, там же скрипт с многочисленными обращениями к БД. Страница формируется из полученных переменных.
И все таки: если в файле сначала код скрипта потом еще много всего... будет ли сервер (или как назвать то что выполняет скрипт?) вначале перебирать все обращения (ведь это занимает время?), а потом смотреть что именно выводить?
P.S.
Хотя уже это не так важно (пока писал придумал как упростить код) но все же интересно...
Спустя 42 минуты, 47 секунд (13.06.2009 - 20:01) twin написал(а):
В оперативную память сервера грузятся все файлы, задействованные в сценарии. То есть запущеные браузером (или кроном к примеру) Допустим этот файл, который 500kb плюс все подключенные инклюдом к нему. Это и будет ресурсоемкость. Плюс при обращении сценария к БД в оперативную память грузятся результаты действия запросов. Причем, в память PHP грузятся конечные результаты, то есть то, что он получил от сервера MуSQL. По этому и нужно стараться оптимизировать запросы. Самый яркий пример. Подсчет количества строк. Вот такое действие:
PHP |
$res = mysql_query("SELECT * FROM table"); |
выведет количество строк, но при этом в память препроцессора будет загружена вся таблица table. И если она большая, то капец.
Обращаться к MуSQL PHP будет тогда, когда это предписано скриптом. Если стоит условие
PHP |
if(то-сё) |
то если этого то-сё не будет, не будет и запроса. По этому изначальный вопрос носит характер риторического. Все зависит от оптимальности кода. Как он написан, так и будет работать.
Спустя 14 минут, 46 секунд (13.06.2009 - 20:15) freed-master написал(а):
Спасибочки, twin, прояснил ситуацию, а по поводу:
Цитата |
выведет количество строк, но при этом в память препроцессора будет загружена вся таблица table |
т.е. желательно делать так:
PHP |
$res = mysql_query("SELECT id FROM table"); |
конкретно указывать, например id
Спустя 2 минуты, 45 секунд (13.06.2009 - 20:18) twin написал(а):
Желательно делать так:
PHP |
$res = mysql_query("SELECT COUNT(*) AS cnt FROM table"); |
Спустя 1 час, 18 минут, 13 секунд (13.06.2009 - 21:36) freed-master написал(а):
Хорошо, а если это не счетчик, при таком запросе:
SQL |
SELECT id FROM table |
всеравно будет вся база в память грузится?
Спустя 12 минут, 55 секунд (13.06.2009 - 21:49) twin написал(а):
Не вся и не база. Только поле id Но все какие есть в таблице. А если использовать count, то посчет идет на стороне мускула, а в php передается одно единственное значение. А именно количество строк.
Спустя 13 минут, 27 секунд (13.06.2009 - 22:03) freed-master написал(а):
Понятно.
Вопрос такого рода: велика ли разница между файлами с расширением .inc и .php если использовать эти файлы для вставкив скрипт?
Вопрос такого рода: велика ли разница между файлами с расширением .inc и .php если использовать эти файлы для вставкив скрипт?
Спустя 15 минут, 58 секунд (13.06.2009 - 22:19) twin написал(а):
Никакой. Можешь дать ему расширение .freed Другое дело, что он не будет исполняться самостоятельно, только в составе исполняемого файла. То есть с расширением .php
Спустя 18 часов, 34 минуты, 30 секунд (14.06.2009 - 16:53) freed-master написал(а):
Цитата (twin @ 13.06.2009 - 21:18) | ||
|
А как в таком случае выводить результат?
Я делал счетчики таким образом:
PHP |
$query_online = mysql_query("SELECT COUNT(*) FROM session WHERE line=on"); |
Выводил так:
PHP |
echo $online[0]; |
Спустя 2 часа, 13 минут, 22 секунды (14.06.2009 - 19:07) twin написал(а):
Точно так же.
PHP |
echo $num; |
Спустя 27 минут, 36 секунд (14.06.2009 - 19:34) freed-master написал(а):
PHP |
$query_online = mysql_query("SELECT COUNT(*) FROM counters WHERE line=on"); |
Не хочет пишет: supplied argument is not a valid (во 2 строке)
Спустя 46 минут, 3 секунды (14.06.2009 - 20:20) freed-master написал(а):
Все разобрался. Но странно такой запрос не работал:
SQL |
SELECT COUNT(*) FROM counters WHERE line=off |
А такой работает:
SQL |
SELECT COUNT(*) FROM counters WHERE line='off' |
Как знать когда и какие кавычки ставить а когда не ставить в sql запросе?
Спустя 12 часов, 25 минут, 48 секунд (15.06.2009 - 08:46) glock18 написал(а):
Кавычки не нужны только тогда, когда ты хочешь вставить инструкцию/константу Mysql - такие, например, COUNT, WHERE, SELECT и т.п.
Еще без кавычек можно писать названия таблиц/полей, но только в том случае, если название таблицы не совпадает с именем какого-то ключевого слова в mysql (их много, так что лучше всегда имена таблиц/полей ставить в ` - обратные кавычки).
Все строковые значения (сюда так же относятся даты) для переменных (+ вставляемые в условиях, запроса Insert, Update и т.д.) должны браться в ' кавычки. Числовые значения могут не браться.
Еще без кавычек можно писать названия таблиц/полей, но только в том случае, если название таблицы не совпадает с именем какого-то ключевого слова в mysql (их много, так что лучше всегда имена таблиц/полей ставить в ` - обратные кавычки).
Все строковые значения (сюда так же относятся даты) для переменных (+ вставляемые в условиях, запроса Insert, Update и т.д.) должны браться в ' кавычки. Числовые значения могут не браться.
Спустя 53 минуты, 26 секунд (15.06.2009 - 09:39) freed-master написал(а):
Определяю браузер посетителя через $_SERVER['HTTP_USER_AGENT'].
IE7 видит так вот:
IE7 видит так вот:
Цитата |
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) |
Как это понимать, почему мозила и что вообще это за куча надписей?
Спустя 2 часа, 9 минут, 43 секунды (15.06.2009 - 11:49) glock18 написал(а):
Цитата (freed-master @ 15.06.2009 - 06:39) | ||
IE7 видит так вот:
Как это понимать, почему мозила и что вообще это за куча надписей? |
Забей

Цитата |
MSIE 7.0 |

Спустя 22 часа, 22 минуты, 43 секунды (16.06.2009 - 10:12) freed-master написал(а):
как можно проверить наличие файла на компьютере посетителя?
Спустя 19 минут, 26 секунд (16.06.2009 - 10:31) glock18 написал(а):
freed-master, вероятно, никак. "Честным" способом, по крайней мере. Это слишком конфиденциальная информация, чтобы ее отправлять серверу.
Спустя 4 часа, 22 минуты, 24 секунды (16.06.2009 - 14:54) freed-master написал(а):
А вот какая разница при создании БД между кодировками: utf8_general_ci и utf8_unicode_ci?
Спустя 1 час, 25 минут (16.06.2009 - 16:19) freed-master написал(а):
Я собственно чего про кодировки заговорил.
Работаю с дримвевером.
БД кодируется в utf8_general_ci
В Дриме кодировка страниц установлена как "Юникод (UTF-8)"
В начало каждой php-страницы вставляю код:
Работаю с дримвевером.
БД кодируется в utf8_general_ci
В Дриме кодировка страниц установлена как "Юникод (UTF-8)"
В начало каждой php-страницы вставляю код:
PHP |
header("Content-Type: text/html; charset=utf-8"); |
Все в порядке.
Как только создаю соединение с БД (средствами Дримвевера) русские буквы, написанные непосредственно на странице, отображаются нормально, а русские буквы, вставленные из БД отображаться как чертишо.
Если в Дриме поставить галочку в настройках возле "Include Unicode Signatire (BOM)" то на страницу ничего не добавляется, а результат тот же, но нужно убрать со страницы
Как только создаю соединение с БД (средствами Дримвевера) русские буквы, написанные непосредственно на странице, отображаются нормально, а русские буквы, вставленные из БД отображаться как чертишо.
Если в Дриме поставить галочку в настройках возле "Include Unicode Signatire (BOM)" то на страницу ничего не добавляется, а результат тот же, но нужно убрать со страницы
PHP |
header("Content-Type: text/html; charset=utf-8"); |
иначе выдаст ошибку.
Так же в настройках Дрима есть опция: "Unicode Normalization Form" с выбором четырех позиций:
1) C (Canonical Decomposition, followed by Canonical Decomposition)
2) D (Canonical Decomposition)
3) KC (Compatybility Decomposition, followed by Canonical Decomposition)
4) KD (Compatybility Decomposition)
Выбирая любую из этих позиций результат меняется: русские буквы на странице - отображаются не корректно, а буквы из БД - нормально
Никак не пойму в чем дело.
Код php-файла с соединением к БД, созданным Дримом:
Так же в настройках Дрима есть опция: "Unicode Normalization Form" с выбором четырех позиций:
1) C (Canonical Decomposition, followed by Canonical Decomposition)
2) D (Canonical Decomposition)
3) KC (Compatybility Decomposition, followed by Canonical Decomposition)
4) KD (Compatybility Decomposition)
Выбирая любую из этих позиций результат меняется: русские буквы на странице - отображаются не корректно, а буквы из БД - нормально
Никак не пойму в чем дело.
Код php-файла с соединением к БД, созданным Дримом:
Свернутый текст
PHP |
<?php |
PHP |
<?php |
HTML |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled</title> </head> <body> Текст на странице<br /> <?php echo $row_Recordset1['text']; ?> </body> </html> <?php mysql_free_result($Recordset1); ?> |
Спустя 1 час, 8 минут, 56 секунд (16.06.2009 - 17:28) kirik написал(а):
Цитата (freed-master @ 16.06.2009 - 08:19) |
Я собственно чего про кодировки заговорил. |
Кодировка страницы и кодировка БД - мало. Нужно еще установить кодировку соединения страницы с БД. Сделать это можно (и нужно) после установки соединения с БД (вызов mysql_select_db) двумя способами:
1. Если ты уверен, что будешь использовать этот скрипт только на php >= 5.2.3 (в старших версиях этой функции нет), то используешь: mysql_set_charset('utf8', $conect);
2. Во всех остальных случаях используешь: mysql_query('SET NAMES UTF8', $conect);
ЗЫ. еще будет довольно много загвоздок с юникодом, чтобы было меньше советую почитать этот пост.
Спустя 1 час, 48 минут, 49 секунд (16.06.2009 - 19:16) freed-master написал(а):
Все чудненько, спасибо.
Но вот теперь другой трабл:
Но вот теперь другой трабл:
Цитата |
session_start() [function.session-start]: Cannot send session cache limiter - headers already sent... |
Последовательность в коде таова:
PHP |
require_once('Connections/conect.php'); |
Где-то вычитал:
Цитата |
Если вы используете UTF-8 (при сохранении в ЮТФ впереди файла добавляется идентификатор ЮТФ, который не видно, нопример, в Блокноте), некоторые интерпритаторы в ПХП не понимают этот идентификатор и воспринимают его как символ и выводят в окно броузера до самого первого символа в вашем файле :-) !!!!! Это вам я скажу даже не потеряный пробел в начале файла :-))). Что делать?: Переставить на сервере ПХП, чтобы читал идентификатор ЮТФ. Если нет такой возможности, просто удалите идентификатор ЮТФ руками, правда это муторно. |
Вопрос: где на сервере "переставить чтобы читал идентификатор" или как лучше с этим бороться?
Спустя 52 минуты, 3 секунды (16.06.2009 - 20:08) kirik написал(а):
Цитата (freed-master @ 16.06.2009 - 11:16) |
Но вот теперь другой трабл |
Все верно, скорее всего проблема заключается как раз в BOM подписи utf документа (Include Unicode Signatire (BOM)) которою ты видел в настройках дримвивера. Нужно отключить. И session_start(); нужно вызывать до вывода каких-либо заголовков.
Спустя 13 минут (16.06.2009 - 20:21) Alchemist написал(а):
Цитата (kirik @ 16.06.2009 - 19:08) |
И session_start(); нужно вызывать до вывода каких-либо заголовков. |
небольшое уточнение: не до вывода заголовков, а до вывода текста. header() вполне может стоять перед session_start().
Спустя 31 минута, 5 секунд (16.06.2009 - 20:53) freed-master написал(а):
Да действительно. Убрал дом, поставил обратно хедер с кодировкой:
PHP |
session_start(); |
Все отлично!
Спустя 49 минут, 1 секунда (16.06.2009 - 21:42) kirik написал(а):
Цитата (Alchemist @ 16.06.2009 - 12:21) |
небольшое уточнение: не до вывода заголовков, а до вывода текста. header() вполне может стоять перед session_start(). |
Да, сорри

Спустя 14 часов, 19 минут, 10 секунд (17.06.2009 - 12:01) freed-master написал(а):
Наверняка возможно что у пользователя отключена переадресация, ведь так?
В этом случае header('locatiom: ') работать не буде?
Мне, например, нужно чтоб при открытии www.my-site.com/index.php шла переадрисация на www.my-site.com/page.php?id=1 с одной лишь целью - передать гэтом переменную.
Можно ли как то обойтись без переадрисации?
В этом случае header('locatiom: ') работать не буде?
Мне, например, нужно чтоб при открытии www.my-site.com/index.php шла переадрисация на www.my-site.com/page.php?id=1 с одной лишь целью - передать гэтом переменную.
Можно ли как то обойтись без переадрисации?
Спустя 15 минут, 44 секунды (17.06.2009 - 12:16) glock18 написал(а):
Цитата (freed-master @ 17.06.2009 - 09:01) |
Наверняка возможно что у пользователя отключена переадресация, ведь так? В этом случае header('locatiom: ') работать не буде? |
Вряд ли это возможно - отключить переадресацию. Тем более в твоем случае можно просто указывать относительный путь - тогда пользователь будет до сих пор думать, что он на index.php и редиректа как будто не было. Другое дело - зачем тебе это - переадресация только для того, чтобы get параметр появился.
Любой сайт использует переадресацию. ну почти любой.
Спустя 27 минут, 5 секунд (17.06.2009 - 12:44) freed-master написал(а):
Дело в том что у меня контент генерируется исходя из полученных гэтом переменных. Открыв просто index.php посетитель попадает на пустую страницу страницу.
Спустя 22 минуты, 32 секунды (17.06.2009 - 13:06) sergeiss написал(а):
Цитата (freed-master @ 17.06.2009 - 13:44) |
Дело в том что у меня контент генерируется исходя из полученных гэтом переменных. Открыв просто index.php посетитель попадает на пустую страницу. |
Вообще, странный подход... А что, при отсутствии переменных в ГЕТе, нельзя сделать величину "по умолчанию"???
Например,
PHP |
$id=isset( $_GET['id'] ) ? intval($_GET['id']) : 1; |
Или, говоря по-русски, если в ГЕТе передали АйДи, то присваиваем его величину переменной. А если нету ничего, то тогда пусть будет по умолчанию величина, равная 1.
Спустя 44 минуты, 15 секунд (17.06.2009 - 13:50) glock18 написал(а):
Цитата |
Вообще, странный подход... А что, при отсутствии переменных в ГЕТе, нельзя сделать величину "по умолчанию"??? |
Хотел тоже написать об этом, но одумался, представив сколько сразу придется объяснять

Спустя 1 час, 50 минут, 20 секунд (17.06.2009 - 15:41) freed-master написал(а):
У меня многоуровненое меню: 5 разделов, в каждом по 6 подразделов, которые в свою очередь могут содержать N пунктов.
Главная страница находится в 1ом подразделе 1го раздела. Т.е. для ее отображения надо передать гэтом mm_id=1 (id главного раздела) и sm_id=11 (id подраздела)
Главная страница находится в 1ом подразделе 1го раздела. Т.е. для ее отображения надо передать гэтом mm_id=1 (id главного раздела) и sm_id=11 (id подраздела)
Спустя 4 минуты, 7 секунд (17.06.2009 - 15:45) glock18 написал(а):

читай внимательно то, что написал sergeiss
Цитата (sergeiss @ 17.06.2009 - 10:06) |
Или, говоря по-русски, если в ГЕТе передали АйДи, то присваиваем его величину переменной. А если нету ничего, то тогда пусть будет по умолчанию величина, равная 1. |
Спустя 14 минут (17.06.2009 - 15:59) freed-master написал(а):
Я так сразу и сделал, но возникает еще ряд трудностей. Одна из них - названия подменю отображается в зависимости от полученного гэтом значения, а если делать как порекомендовал sergeiss, то в гэте ничего нет - соответственно подменю тоже нет!
Проще, мне кажется сделать переодрисацию. Изначально меня это смутило т.к. не раз встречал надпись типа "если переадрисация отключена перейдите по ссылке" или "если закачка не началась нажмите сюда"...
Проще, мне кажется сделать переодрисацию. Изначально меня это смутило т.к. не раз встречал надпись типа "если переадрисация отключена перейдите по ссылке" или "если закачка не началась нажмите сюда"...
Спустя 6 минут, 26 секунд (17.06.2009 - 16:05) glock18 написал(а):
Цитата (freed-master @ 17.06.2009 - 12:59) |
Я так сразу и сделал, но возникает еще ряд трудностей. Одна из них - названия подменю отображается в зависимости от полученного гэтом значения, а если делать как порекомендовал sergeiss, то в гэте ничего нет - соответственно подменю тоже нет! |
Я сейчас об стенку убьюсь... Ну и что, что в гете нет ничего? тебе обязательно из гета брать выбранное меню? это отнюдь не обязательно, но если тебе неимётся, то сделай так:
PHP |
$_GET['page'] = isset($_GET['page']) ? $_GET['page'] : 1; |
что мешает?
Спустя 7 минут, 52 секунды (17.06.2009 - 16:13) sergeiss написал(а):
Цитата (glock18 @ 17.06.2009 - 17:05) |
Я сейчас об стенку убьюсь... |
Тебе стенку какую: пожёстче или помягче?

Цитата (freed-master @ 17.06.2009 - 16:59) |
а если делать как порекомендовал sergeiss, то в гэте ничего нет - соответственно подменю тоже нет! |
А если в гете ничего нету, то включаем логику (свою) и выводим начальное подменю.
И еще.
1. Лучше сделать вызов меню и подменю через одну переменную. Например, B5 говорит о том, что надо вызвать 2-е меню, 5-е подменю. Анализировать такую фигню несложно будет

2. Один чёрт надо контролировать, что там было передано в гете. Потому что юзер может (случайно или специально) ввести неправильные цифры. И в этом случае надо не пустое окно выдавать, а какое-то меню "по умолчанию".
И трудностей это всё никаких не вызывает, если делать всё правильно

Спустя 7 минут, 42 секунды (17.06.2009 - 16:21) freed-master написал(а):
glock18, не надо об стенку!
Цитата |
Лучше сделать вызов меню и подменю через одну переменную |
Попробую, но у меня с этим связано не только подменю, но и контент и еще что-то, но все равно попробую переделать, потому как мне тоже это все не нравиться...
Цитата |
Ты лучше код свой покажи |
Ну сами напросились
вот страничка одна и единственная на которую в зависимости от полученных переменных всавляются подменю, контент, комментарии и пр...

Свернутый текст
PHP |
require_once('Connections/conect.php'); |
Спустя 11 минут, 40 секунд (17.06.2009 - 16:32) glock18 написал(а):
эх, первый раз сообщение отредактировал, добавив ограничители php, а из-за этого все разъехалось
Все вернул пока обратно.

Цитата (sergeiss @ 17.06.2009 - 13:13) |
Тебе стенку какую: пожёстче или помягче? rolleyes.gif |
Такую, чтобы недолго мучиться

Цитата (freed-master @ 17.06.2009 - 13:21) |
Ну сами напросились wink.gif |
Да, действительно напросились

Спустя 3 минуты, 46 секунд (17.06.2009 - 16:36) sergeiss написал(а):
Цитата (glock18 @ 17.06.2009 - 17:32) |
Все вернул пока обратно. |
Ничего не разъехалось, потому что я ПРАВИЛЬНО отформатировал

Спустя 2 минуты, 20 секунд (17.06.2009 - 16:39) sergeiss написал(а):
freed-master
Вот даже не вникая в суть кода. В самом начале стоит
Вот даже не вникая в суть кода. В самом начале стоит
PHP |
$mm_id = isset($_GET['mm_id'])?$_GET['mm_id']:null; |
Во-первых, почему null, а не числа типа единицы?
А во-вторых, ЗАЧЕМ потом многократные проверки типа
PHP |
if (isset($_GET['sm_id'])) |
Спустя 15 минут, 46 секунд (17.06.2009 - 16:54) freed-master написал(а):
Ладно, это уже далеко не мелкий вопрос...
Буду переделывать...
Буду переделывать...
Спустя 22 часа, 55 минут, 34 секунды (18.06.2009 - 15:50) freed-master написал(а):
Есть ли разница между:
PHP |
if (isset($sid)) |
и
PHP |
if ($sid) |
, где переменная
PHP |
$sid = session_id(); |
Спустя 15 минут, 46 секунд (18.06.2009 - 16:06) sergeiss написал(а):
Цитата (freed-master @ 18.06.2009 - 16:50) | ||||||
Есть ли разница между:
и
, где переменная
|
Есть. Принципиальная.
Чтобы это понять, ответь сам же на вопрос: что будет получено в случае обоих проверок в ИФах, если
1. $sid содержит число
a) $sid == 0
б) $sid > 0
2. $sid - пустая величина (null )
3. $sid не была инициализирована (например, ты закомментировал строку с назначением $sid и забыл об этом).
Спустя 11 минут, 38 секунд (18.06.2009 - 16:17) freed-master написал(а):
Правильно ли я прокомментировал:
PHP |
if (isset($sid)) // если получено значение переменной |
PHP |
if ($sid) // если обозначена переменная |
Спустя 39 минут, 3 секунды (18.06.2009 - 16:56) glock18 написал(а):
Цитата (freed-master @ 18.06.2009 - 13:17) |
Правильно ли я прокомментировал: |
неправильно. абсолютно неправильно.
1. isset переводится дословно "установлена". проверка: если переменная установлена (определена ранее или имеет какое-то значение отличное от null).
2. если $sid == true. обычно такая запись делается, если допустимо неявное приведение типа. почитай про то, какие значения приводятся к false. остальные - true.
Спустя 4 часа, 6 минут, 11 секунд (18.06.2009 - 21:03) freed-master написал(а):
А вот такой вопросик: допустим в бд есть поле, записи в котором будут содержат буквы, например до 6 символов.
Какой тип поля лучше выбрать text или varchar(6), влияет ли это скорость работы или еще на что?
Какой тип поля лучше выбрать text или varchar(6), влияет ли это скорость работы или еще на что?
Спустя 18 минут, 26 секунд (18.06.2009 - 21:21) waldicom написал(а):
Цитата (freed-master @ 18.06.2009 - 20:03) |
А вот такой вопросик: допустим в бд есть поле, записи в котором будут содержат буквы, например до 6 символов. Какой тип поля лучше выбрать text или varchar(6), влияет ли это скорость работы или еще на что? |
varchar(6).
Да, повлияет.
Спустя 2 минуты, 5 секунд (18.06.2009 - 21:23) twin написал(а):
Сделай таблицу с полями всех возможных типов. Потом в пыхадмине нажми вкладку "Вставка" И смотри что получилось. Какие поля для чего.
Спустя 33 секунды (18.06.2009 - 21:24) glock18 написал(а):
конечно, варчар лучше для этого.
text использовать я бы посоветовал только для "безпредельных" полей. и выборку оных очень редко посоветовал бы делать.
конечно, не знаю как text будет работать с маленькими полями, но с varchar(6) явно будет работать быстрее, потому что будет знать размер поля. это ему помогает выбрать правильную стратегию при выборки, к примеру: использовать или нет временную таблицу.
text использовать я бы посоветовал только для "безпредельных" полей. и выборку оных очень редко посоветовал бы делать.
конечно, не знаю как text будет работать с маленькими полями, но с varchar(6) явно будет работать быстрее, потому что будет знать размер поля. это ему помогает выбрать правильную стратегию при выборки, к примеру: использовать или нет временную таблицу.
Спустя 4 минуты, 57 секунд (18.06.2009 - 21:29) Mizka написал(а):
Цитата |
varchar(6). Да, повлияет. |
а можно подробнее? интересно просто

Спустя 5 минут (18.06.2009 - 21:34) freed-master написал(а):
Mizka
Цитата |
varchar(6) явно будет работать быстрее, потому что будет знать размер поля |
Спустя 17 минут, 18 секунд (18.06.2009 - 21:51) twin написал(а):
Это разные типы вообще и для разных целей. Тип varchar не сохраняет переносы, это поле сродни инпуту. А text сродни текстарее. Тут в этом соль основная. По этому для хранения простых данных нужно varchar, это поле с переменной длинной. А для хранения текстовой информации text, по этому так и называется.
Спустя 2 минуты, 17 секунд (18.06.2009 - 21:53) Mizka написал(а):
twin, спасибо

Спустя 4 минуты, 16 секунд (18.06.2009 - 21:57) kirik написал(а):
Цитата (twin @ 18.06.2009 - 13:51) |
Тип varchar не сохраняет переносы |
Тоесть как это не сохраняет? Он не считает \n символом?

Спустя 6 минут, 3 секунды (18.06.2009 - 22:03) twin написал(а):
Именно символом. Вернее двумя. А не спецсимволом. И на экран так и вылезет Хочу\nперенос.
Спустя 5 минут, 57 секунд (18.06.2009 - 22:09) kirik написал(а):
SQL |
CREATE TABLE IF NOT EXISTS `test` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `text` varchar(255) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) |
PHP |
header('Content-Type: text/plain; charset=utf-8'); |
Что я делаю не так?
Спустя 4 минуты, 5 секунд (18.06.2009 - 22:13) sergeiss написал(а):
Позвольте вклиниться... Насколько я понимаю (но не буду утверждать однозначно
), тип varchar() хранится внутри основной таблицы, т.к. заведомо известно, сколько байт для него требуется, а тип text хранится во вспомогательной таблице; при этом в основной таблице хранится только некая ссылка на текст.
Это дает возможность более оптимально работать с данными и более оптимально использовать дисковое пространство, т.к. при изменении длины текстовой переменной (увеличении) изменения не касаются основной таблицы.
Работа с text более ёмкая по времени, но зато нет ограничений на длину текста.
Вот где-то так примерно.
twin, извини, ты не прав
Этот символ не вылезет в том случае, если ты из varchar() выведешь в textarea. Точно также, как и из text в textarea. А вот если будешь выводить text в input type="text" (афигеть, навороты словестные какие
), то эти переносы также будут видны как текст.

Это дает возможность более оптимально работать с данными и более оптимально использовать дисковое пространство, т.к. при изменении длины текстовой переменной (увеличении) изменения не касаются основной таблицы.
Работа с text более ёмкая по времени, но зато нет ограничений на длину текста.
Вот где-то так примерно.
twin, извини, ты не прав


Спустя 13 минут, 43 секунды (18.06.2009 - 22:27) kirik написал(а):
Цитата (sergeiss @ 18.06.2009 - 14:13) |
Работа с text более ёмкая по времени, но зато нет ограничений на длину текста. |
Немного поправлю - тип text может хранить до 64 кб информации (инфо). Там же говорится, что и varchar может хранить столько же информации сколько и text. Единственное отличие - в varchar можно указать максимальную длину строки.
ЗЫ. Походу форум режет слово require, поэтому вот ссылка:
_http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
Спустя 10 минут, 29 секунд (18.06.2009 - 22:38) sergeiss написал(а):
Цитата (kirik @ 18.06.2009 - 23:27) |
Немного поправлю - тип text может хранить до 64 кб информации |
Вот, блин, опять MySQL... Скоро я буду на него реагировать, как на "циклы Попова"

Вы тут не подумайте, что я фанат Постгре... Хотя это, на самом деле, уже близко к истине

Name | Description
character varying(n), varchar(n) | variable-length with limit
character(n), char(n) | fixed-length, blank padded
text | variable unlimited length
"In addition, PostgreSQL provides the text type, which stores strings of any length. Although the type text is not in the SQL standard, several other SQL database management systems have it as well."
То есть, в Постгре у текста нету ограничений размера...
Спустя 19 минут, 33 секунды (18.06.2009 - 22:57) Alchemist написал(а):
в мускуле есть LONGTEXT который позволяет хранить 4 Гб. И если уж кто-то такой идьет, что захотел засунуть в одно поле больше - так ему и надо.
Спустя 15 часов, 6 минут, 1 секунда (19.06.2009 - 14:03) freed-master написал(а):
Гляньте пожалуйста на этот код:
Все работает как надо, но может что то можно упростить или улучшить?
Свернутый текст
PHP |
<?php |
Все работает как надо, но может что то можно упростить или улучшить?
Спустя 2 часа, 17 минут, 34 секунды (19.06.2009 - 16:21) kirik написал(а):
А это не попахивает-ли sql инъекцией (всмысле что эта переменная участвует в запросах)?
PHP |
$path_m = isset($_GET['page'])?$_GET['page']:"A1"; |
Спустя 42 минуты, 36 секунд (19.06.2009 - 17:03) freed-master написал(а):
Т.е. перед запросом нужно сделать что-то типа:
PHP |
if (strlen($path_m)<=2) |
Спустя 5 минут, 52 секунды (19.06.2009 - 17:09) kirik написал(а):
Не.. что-то типа mysql_real_escape_string()
Спустя 15 минут, 22 секунды (19.06.2009 - 17:25) freed-master написал(а):
?
PHP |
if (strlen($path_m)>2) |
Спустя 14 минут, 45 секунд (19.06.2009 - 17:39) kirik написал(а):
Не..
Например так:
Например так:
PHP |
$path_m = isset($_GET['page'])?mysql_real_escape_string($_GET['page']):"A1"; |
Или так:
PHP |
$menu_l = mysql_query("SELECT `id`, `title`, `type` FROM `content` WHERE |
Если первый вариант, то $path тоже нужно будет экранировать
Спустя 8 минут, 53 секунды (19.06.2009 - 17:48) freed-master написал(а):
Во блин... спасибо!
Попробовал первый вариант, но теперь пишет
Попробовал первый вариант, но теперь пишет
Цитата |
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource |
в строке:
PHP |
<?php while($row = mysql_fetch_assoc($menu_l)) {< |
А второй вариант работоет хорошо!
Спустя 20 часов, 8 минут, 24 секунды (20.06.2009 - 13:57) freed-master написал(а):
Нужно проверить введенное пользователем значение, если это число (причем целое) - записать в сессию, если нет - то нет.
Так будет правильно:
Так будет правильно:
PHP |
if (isset($_POST['quantity'])) { |
Спустя 28 минут, 13 секунд (20.06.2009 - 14:25) glock18 написал(а):
PHP |
is_integer($var) |
Спустя 3 часа, 15 минут, 28 секунд (20.06.2009 - 17:40) web-dev написал(а):
PHP |
<?php |
Кто-нибудь знает почему у меня в данной ситуации выводится строка: \357\360\350\342\345\362 \354\350\360 (что это вообще?), вместо \П\р\и\в\е\т \м\и\р
Если А..я заменить номерами ASCII символов \192..\255 то экранируется только пробелы между словами, а русские буквы по прежнему без изменений. Почему интересно.
С латинскими символами всё работает правильно.
Спустя 2 часа, 5 минут, 13 секунд (20.06.2009 - 19:46) kopoba написал(а):
Мелкий вопрос. Мне нужно по клику по картинке записать в текстовое поле имя файла.
Функция обработки клика такая:
Функция обработки клика такая:
PHP |
//Обновление поля "Имя файла" |
Вывод картинок вот такой:
PHP |
<? foreach($Photos as $n=>$Img) |
Текстовое поле вот такое:
PHP |
<form name="setPr"> |
В чем подвох?( Почему не выводится имя?(
Спустя 18 часов, 31 минута, 45 секунд (21.06.2009 - 14:17) kopoba написал(а):
Верхнюю проблему решил. Теперь новая...
Подскажите, как по клику на кнопке создать новое окно (вместо того, которое было с кнопкой) и запустить на обработку модуль пхп, чтобы результат вывелся в это новое окно.
Подскажите, как по клику на кнопке создать новое окно (вместо того, которое было с кнопкой) и запустить на обработку модуль пхп, чтобы результат вывелся в это новое окно.
PHP |
<form name="setPr" action = 'dotable.php'> |
Спустя 1 час, 48 минут, 17 секунд (21.06.2009 - 16:06) glock18 написал(а):
Ввиду того, что тема превратилась в свалку закрываем ее. Оставляем возможность прочтения уже существующих сообщений. Новые в соответствующие темы.
Просьба не создавать больше неинформативных тем.
Одна тема - один вопрос.
Просьба не создавать больше неинформативных тем.
Одна тема - один вопрос.
_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru