[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Мелкие вопросы
freed-master
У меня вот на одной php странице много форм и прочей ерунды; так же много обращений к БД (вся страничка весит около 500Кб), но выводится вся эта байда не сразу а в зависимости от полученых гэтом переменных.

Внимание вопрос (: влияет ли большое количество этих форм, запросов и пр. на скорость генерирования (если можно так выразится) страницы?



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

Спустя 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.
Хотя уже это не так важно (пока писал придумал как упростить код) но все же интересно...

Спустя 42 минуты, 47 секунд (13.06.2009 - 20:01) twin написал(а):
В оперативную память сервера грузятся все файлы, задействованные в сценарии. То есть запущеные браузером (или кроном к примеру) Допустим этот файл, который 500kb плюс все подключенные инклюдом к нему. Это и будет ресурсоемкость. Плюс при обращении сценария к БД в оперативную память грузятся результаты действия запросов. Причем, в память PHP грузятся конечные результаты, то есть то, что он получил от сервера MуSQL. По этому и нужно стараться оптимизировать запросы. Самый яркий пример. Подсчет количества строк. Вот такое действие:
PHP
$res = mysql_query("SELECT * FROM table");
$num = mysql_num_rows($res);

выведет количество строк, но при этом в память препроцессора будет загружена вся таблица 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");
$num = mysql_result($res,0);

Спустя 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 если использовать эти файлы для вставкив скрипт?

Спустя 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
$res = mysql_query("SELECT COUNT(*) AS cnt FROM table");
$num = mysql_result($res,0);

А как в таком случае выводить результат?

Я делал счетчики таким образом:
PHP
$query_online mysql_query("SELECT COUNT(*) FROM session WHERE line=on");
$online mysql_fetch_row($query_online);
Выводил так:
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");
$online mysql_result($query_online,0);
echo 
$online;
Не хочет пишет: 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 и т.д.) должны браться в ' кавычки. Числовые значения могут не браться.

Спустя 53 минуты, 26 секунд (15.06.2009 - 09:39) freed-master написал(а):
Определяю браузер посетителя через $_SERVER['HTTP_USER_AGENT'].

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 видит так вот:
Цитата
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)

Как это понимать, почему мозила и что вообще это за куча надписей?

Забей smile.gif На самом деле, у многих браузеров будет Mozilla фигурировать. Зато у mozilla не будет фигурировать:
Цитата
MSIE 7.0

smile.gif Вот по нему и будет логичнее определять IE7 и прочие браузеры. Mozilla тоже можно будет отделить

Спустя 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-страницы вставляю код:
PHP
header("Content-Type: text/html; charset=utf-8");
Все в порядке.

Как только создаю соединение с БД (средствами Дримвевера) русские буквы, написанные непосредственно на странице, отображаются нормально, а русские буквы, вставленные из БД отображаться как чертишо.

Если в Дриме поставить галочку в настройках возле "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-файла с соединением к БД, созданным Дримом:
Свернутый текст

PHP
<?php
 
require_once('Connections/conect.php'); 

PHP
<?php

if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

mysql_select_db($database_conect$conect);
$query_Recordset1 "SELECT * FROM proba";
$Recordset1 mysql_query($query_Recordset1$conect) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);

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'); 
mysql_query
('SET NAMES UTF8', $conect);
session_start();
Где-то вычитал:
Цитата
Если вы используете 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();
header("Content-Type: text/html; charset=utf-8");
require_once(
'Connections/conect.php'); 
mysql_query('SET NAMES UTF8'$conect);
Все отлично!

Спустя 49 минут, 1 секунда (16.06.2009 - 21:42) kirik написал(а):
Цитата (Alchemist @ 16.06.2009 - 12:21)
небольшое уточнение: не до вывода заголовков, а до вывода текста. header() вполне может стоять перед session_start().

Да, сорри smile.gif

Спустя 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 с одной лишь целью - передать гэтом переменную.

Можно ли как то обойтись без переадрисации?

Спустя 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 написал(а):
Цитата
Вообще, странный подход... А что, при отсутствии переменных в ГЕТе, нельзя сделать величину "по умолчанию"???


Хотел тоже написать об этом, но одумался, представив сколько сразу придется объяснять smile.gif Дело в том, что параметр то передается уже не index.php. Что за странная структура, я ума не приложу, но она явно является не слишком то логичной.

Спустя 1 час, 50 минут, 20 секунд (17.06.2009 - 15:41) freed-master написал(а):
У меня многоуровненое меню: 5 разделов, в каждом по 6 подразделов, которые в свою очередь могут содержать N пунктов.

Главная страница находится в 1ом подразделе 1го раздела. Т.е. для ее отображения надо передать гэтом mm_id=1 (id главного раздела) и sm_id=11 (id подраздела)

Спустя 4 минуты, 7 секунд (17.06.2009 - 15:45) glock18 написал(а):
dry.gif
читай внимательно то, что написал 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)
Я сейчас об стенку убьюсь...

Тебе стенку какую: пожёстче или помягче? rolleyes.gif

Цитата (freed-master @ 17.06.2009 - 16:59)
а если делать как порекомендовал sergeiss, то в гэте ничего нет - соответственно подменю тоже нет!

А если в гете ничего нету, то включаем логику (свою) и выводим начальное подменю.
И еще.
1. Лучше сделать вызов меню и подменю через одну переменную. Например, B5 говорит о том, что надо вызвать 2-е меню, 5-е подменю. Анализировать такую фигню несложно будет smile.gif
2. Один чёрт надо контролировать, что там было передано в гете. Потому что юзер может (случайно или специально) ввести неправильные цифры. И в этом случае надо не пустое окно выдавать, а какое-то меню "по умолчанию".

И трудностей это всё никаких не вызывает, если делать всё правильно smile.gif Ты лучше код свой покажи. У меня есть подозрение, что там просто что-то не так сделано, и поэтому "трудности".

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

$mm_id = isset($_GET['mm_id'])?$_GET['mm_id']:null;
$sm_id = isset($_GET['sm_id'])?$_GET['sm_id']:null;
$lm_id = isset($_GET['lm_id'])?$_GET['lm_id']:null;

mysql_select_db($database_conect$conect);
$query_mm "SELECT * FROM mm WHERE `zone`='s'";
$mm mysql_query($query_mm$conect) or die(mysql_error());
$row_mm mysql_fetch_assoc($mm);
$totalRows_mm mysql_num_rows($mm);

$colname_sm "-1";
if (isset(
$_GET['mm_id'])) {
  
$colname_sm $_GET['mm_id'];
}
mysql_select_db($database_conect$conect);
$query_sm sprintf("SELECT * FROM sm WHERE mm_id = %s AND `sm_name`!='' AND `zone`='s'"GetSQLValueString($colname_sm"int"));
$sm mysql_query($query_sm$conect) or die(mysql_error());
$row_sm mysql_fetch_assoc($sm);
$totalRows_sm mysql_num_rows($sm);

$colname_lm "-1";
if (isset(
$_GET['sm_id'])) {
  
$colname_lm $_GET['sm_id'];
}
mysql_select_db($database_conect$conect);
$query_lm sprintf("SELECT type, mm_id, sm_id, lm_id, lm_name FROM pages_lm WHERE sm_id = %s"GetSQLValueString($colname_lm"int"));
$lm mysql_query($query_lm$conect) or die(mysql_error());
$row_lm mysql_fetch_assoc($lm);
$totalRows_lm mysql_num_rows($lm);

$colname_lm_count "-1";
if (isset(
$_GET['sm_id'])) {
  
$colname_lm_count $_GET['sm_id'];
}
mysql_select_db($database_conect$conect);
$query_lm_count sprintf("SELECT `count` FROM pages_lm WHERE `sm_id`='".$sm_id."'"GetSQLValueString($colname_lm_count"int"));
$lm_count mysql_query($query_lm_count$conect) or die(mysql_error());
$row_lm_count mysql_fetch_assoc($lm_count);
$totalRows_lm_count mysql_num_rows($lm_count);

$colname_lm_content "-1";
if (isset(
$_GET['lm_id'])) {
  
$colname_lm_content $_GET['lm_id'];
}
mysql_select_db($database_conect$conect);
$query_lm_content sprintf("SELECT lm_name, `date`, auther, content, keywords, `description` FROM pages_lm WHERE lm_id = %s"GetSQLValueString($colname_lm_content"int"));
$lm_content mysql_query($query_lm_content$conect) or die(mysql_error());
$row_lm_content mysql_fetch_assoc($lm_content);
$totalRows_lm_content mysql_num_rows($lm_content);

$colname_lm_comments "-1";
if (isset(
$_GET['lm_id'])) {
  
$colname_lm_comments $_GET['lm_id'];
}
mysql_select_db($database_conect$conect);
$query_lm_comments sprintf("SELECT * FROM comments WHERE lm_id = %s ORDER BY `date` DESC "GetSQLValueString($colname_lm_comments"int"));
$lm_comments mysql_query($query_lm_comments$conect) or die(mysql_error());
$row_lm_comments mysql_fetch_assoc($lm_comments);
$totalRows_lm_comments mysql_num_rows($lm_comments);
?>
<!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><?php
if (empty($sm_id)) echo $row_content_mm['title'];
if (empty(
$lm_id)) echo $row_content_sm['title'];
if (!empty(
$lm_id)) echo $row_content_lm['lm_name']; 
?></title>
<link rel="stylesheet" type="text/css" href="inc/style.css"/>
<meta name="description" content="<?php
if (empty($sm_id)) echo $row_content_mm['description'];
if (empty(
$lm_id)) echo $row_content_sm['description'];
if (!empty(
$lm_id)) echo $row_content_lm['description']; 
?>" />
<meta name="keywords" content="<?php
if (empty($sm_id)) echo $row_content_mm['keywords'];
if (empty(
$lm_id)) echo $row_content_sm['keywords'];
if (!empty(
$lm_id)) echo $row_content_lm['keywords']; 
?>" />
<?php if (isset($_GET['type'])=='article') { ?>
<script type='text/javascript' src='../inc/tinymce/tiny_mce.js'></script>
<script type='text/javascript' src='../inc/tinymce/coment.js'></script>
<?php ?>
</head>

<body>
<table id="str" cellpadding="0" cellspacing="0">
<tr class="BookAntiqua">
<td rowspan="2" id="d_left_t">&nbsp;</td>
<?php do { ?>
<td class="<?php if ($mm_id == $row_mm['mm_id']) { echo "menu_on"; } else {echo "menu";} ?>">
<div>  
<a href="page.php?mm_id=<?php echo $row_mm['mm_id']; ?>"><?php echo $row_mm['mm_name']; ?></a>
</div>
</td>
<?php } while ($row_mm mysql_fetch_assoc($mm)); ?>
<td colspan="2" class="search">
<form method="post" action="inc/search.php">
<input type="text" name="query" id="search" />
<input type="submit" value="Найти" />
</form>
</td>
<td rowspan="2" id="d_right_t">&nbsp;</td></tr>
<tr id="d_submenu" class="BookAntiqua">
<td colspan="7">
<?php do { ?>
<div class="<?php if ($sm_id == $row_sm['sm_id']) { echo "sm_on"; } else {echo "sm";} ?>">
<a href="page.php?mm_id=<?php echo $row_sm['mm_id']; ?>&amp;sm_id=<?php echo $row_sm['sm_id']; ?>"><?php echo $row_sm['sm_name']; ?></a>
</div>
<?php } while ($row_sm mysql_fetch_assoc($sm)); ?>
</td></tr>
<tr>
<td rowspan="2" id="d_left">&nbsp;</td>
<td colspan="7" class="Verdana">
<?php if (isset($row_lm['type'])) { ?>
<div class="lm_link">
<ol>
<?php do { ?>
<li>
<a href="page.php?mm_id=<?php echo $row_lm['mm_id']; ?>&amp;sm_id=<?php echo $row_lm['sm_id']; ?>&amp;lm_id=<?php echo $row_lm['lm_id']; ?>&type=<?php echo $row_lm['type']; ?>"><?php echo $row_lm['lm_name']; ?></a>
</li>
<?php } while ($row_lm mysql_fetch_assoc($lm)); ?>
</ol>
</div>
<div class="lm_link">
<?php do { ?>
Прочитано <?php echo $row_lm_count['count']; ?> раз(а)<br />
<?php } while ($row_lm_count mysql_fetch_assoc($lm_count)); ?>
</div>
<?php ?>
</td>
<td rowspan="2" id="d_right">&nbsp;</td>
</tr>
<tr><td colspan="7" id="content" class="BookAntiqua">
<?php if ($err == "err") { ?>
<center>
<div id="err">
<p><?php if ($err1 == "err") { echo "err1"; } if ($err2 == "err") { echo "err2"; } if (isset($err3)) { echo "err3"; } ?></p>
</div>
</center>
<?php ?>
<h1>
<?php echo $row_lm_content['lm_name']; ?>
</h1>
<span id="font">
<?php echo $row_lm_content['content']; ?>
</span>
<?php if (isset($_GET['type'])=='article') { ?>
<p class="Verdana" id="ps">Автор: <?php echo $row_lm_content['auther']."<br />".$row_lm_content['date']; ?></p><br />
<center>
<?php if ($row_lm_comments['lm_id'] == $lm_id) { ?>
<p><a name="comments">Комментарии читателей:</a></p>
<?php do { ?>
<div id="pps" class="Verdana">
<p><?php echo $row_lm_comments['text']; ?></p>
<p id="ps">Автор: <?php echo $row_lm_comments['name']."<br />".$row_lm_comments['date']; ?></p>
</div>
<?php } while ($row_lm_comments mysql_fetch_assoc($lm_comments)); } ?>
<form id="comment" class="Verdana" name="add_comment" method="POST" action="">
<p>Имя (Прозвище): <input name="name" type="text" size="38" maxlength="16" /></p><br />
<textarea name="text" cols="45" rows="5"></textarea>
<img src="inc/captcha/index.php?<?php echo session_name()?>=<?php echo session_id()?>"><br />
<input type="text" name="keystring"><br /><br />
<input type="hidden" name="lm_id" value="" />
<input type="hidden" name="date" value="" />
<input type="submit" name="button" value="Оставить комментарий" />
<input type="hidden" name="MM_insert" value="add_comment" />
</form>
</center>
<?php ?>
</td></tr>
<tr>
<td id="d_coner_l">&nbsp;</td>
<td colspan="7" id="d_bottom"><p class="Verdana">www.justit.com | 2009 © Черненков Василий</p></td><td id="d_coner_r">&nbsp;</td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result
($mm);
mysql_free_result($sm);
mysql_free_result($lm);
mysql_free_result($lm_count);
mysql_free_result($lm_content);
mysql_free_result($lm_comments);
mysql_free_result($sm);

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

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

Такую, чтобы недолго мучиться smile.gif

Цитата (freed-master @ 17.06.2009 - 13:21)
Ну сами напросились wink.gif

Да, действительно напросились smile.gif

Спустя 3 минуты, 46 секунд (17.06.2009 - 16:36) sergeiss написал(а):
Цитата (glock18 @ 17.06.2009 - 17:32)
Все вернул пока обратно.

Ничего не разъехалось, потому что я ПРАВИЛЬНО отформатировал wink.gif


Спустя 2 минуты, 20 секунд (17.06.2009 - 16:39) sergeiss написал(а):
freed-master
Вот даже не вникая в суть кода. В самом начале стоит
PHP
$mm_id = isset($_GET['mm_id'])?$_GET['mm_id']:null;
$sm_id = isset($_GET['sm_id'])?$_GET['sm_id']:null;
$lm_id = isset($_GET['lm_id'])?$_GET['lm_id']:null;

Во-первых, почему null, а не числа типа единицы?
А во-вторых, ЗАЧЕМ потом многократные проверки типа
PHP
if (isset($_GET['sm_id']))
if (empty(
$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)
Есть ли разница между:
PHP
if (isset($sid))
и
PHP
if ($sid)
, где переменная
PHP
$sid = session_id();


Есть. Принципиальная.

Чтобы это понять, ответь сам же на вопрос: что будет получено в случае обоих проверок в ИФах, если
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), влияет ли это скорость работы или еще на что?

Спустя 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) явно будет работать быстрее, потому что будет знать размер поля. это ему помогает выбрать правильную стратегию при выборки, к примеру: использовать или нет временную таблицу.

Спустя 4 минуты, 57 секунд (18.06.2009 - 21:29) Mizka написал(а):
Цитата

varchar(6).
Да, повлияет.

а можно подробнее? интересно просто smile.gif

Спустя 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, спасибо smile.gif

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

Тоесть как это не сохраняет? Он не считает \n символом? smile.gif

Спустя 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');
mysql_query("INSERT INTO `test` (`text`) VALUES ('test 1\ntest 2\ntest 3')");
$id mysql_insert_id();
$query mysql_query("SELECT `text` FROM `test` WHERE `id` = {$id}");
echo 
mysql_result($query0);


Что я делаю не так?

Спустя 4 минуты, 5 секунд (18.06.2009 - 22:13) sergeiss написал(а):
Позвольте вклиниться... Насколько я понимаю (но не буду утверждать однозначно smile.gif), тип varchar() хранится внутри основной таблицы, т.к. заведомо известно, сколько байт для него требуется, а тип text хранится во вспомогательной таблице; при этом в основной таблице хранится только некая ссылка на текст.
Это дает возможность более оптимально работать с данными и более оптимально использовать дисковое пространство, т.к. при изменении длины текстовой переменной (увеличении) изменения не касаются основной таблицы.
Работа с text более ёмкая по времени, но зато нет ограничений на длину текста.

Вот где-то так примерно.

twin, извини, ты не прав smile.gif Этот символ не вылезет в том случае, если ты из varchar() выведешь в textarea. Точно также, как и из text в textarea. А вот если будешь выводить text в input type="text" (афигеть, навороты словестные какие smile.gif), то эти переносы также будут видны как текст.

Спустя 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... Скоро я буду на него реагировать, как на "циклы Попова" wink.gif

Вы тут не подумайте, что я фанат Постгре... Хотя это, на самом деле, уже близко к истине smile.gif Но вот описалово из хэлпа Постгре:
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
require_once('inc/config.php');
$path_m = isset($_GET['page'])?$_GET['page']:"A1";
$path $path_m{0};
$id = isset($_GET['id'])?$_GET['id']:null;
$type = isset($_GET['type'])?$_GET['type']:null;
$menu_m mysql_query("SELECT `id`, `name` FROM `menu` WHERE `type`='m' AND `name`!='' AND `zone`='site'") or die (mysql_error());
$menu_s mysql_query("SELECT `id`, `name` FROM `menu` WHERE `id` LIKE '".$path."%' AND `type`='s' AND `name`!='' AND `zone`='site'") or die (mysql_error());
$menu_l mysql_query("SELECT `id`, `title`, `type` FROM `content` WHERE `path`='".$path_m."' AND `type`='article'") or die (mysql_error());
$query_meta mysql_query("SELECT `title`, `description`, `keywords` FROM `content` WHERE `path`='".$path_m."' AND `type`!='article'") or die (mysql_error());
$meta mysql_fetch_assoc($query_meta);
?>
<!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><?php echo $meta['title']; ?></title>
<link rel="stylesheet" type="text/css" href="inc/style.css"/>
<meta name="description" content="<?php echo $meta['description']; ?>" />
<meta name="keywords" content="<?php echo $meta['keywords']; ?>" />
</head>

<body>
<table cellpadding="0" cellspacing="0">
<tr class="BookAntiqua">
<td rowspan="2" id="d_left_t">&nbsp;</td><td><div class="mm">
<?php while($row mysql_fetch_assoc($menu_m)) { ?>
<div class="<?php if ($path == $row['id']) { echo "mm_on"; } else {echo "mm_off";} ?>"><a href="index.php?page=<?php echo $row['id']; ?>"><?php echo $row['name']; ?></a></div>
<?php ?>
</div></td><td colspan="2" class="search">
<form method="post" action="inc/search.php">
<input type="text" name="query" id="search" />
<input type="submit" value="Найти" />
</form>
</td>
<td rowspan="2" id="d_right_t">&nbsp;</td></tr>
<tr id="d_submenu" class="BookAntiqua">
<td colspan="3">
<?php while($row mysql_fetch_assoc($menu_s)) { ?>
<div class="<?php if ($path_m == $row['id']) { echo "sm_on"; } else {echo "sm_off";} ?>"><a href="index.php?page=<?php echo $row['id']; ?>"><?php echo $row['name']; ?></a></div>
<?php ?>
</td></tr>
<tr>
<td rowspan="2" id="d_left">&nbsp;</td>
<td colspan="3" class="Verdana">
<div class="lm_link"><ol>
<?php  while($row mysql_fetch_assoc($menu_l)) { ?>
<li><a href="index.php?page=<?php echo $path_m?>&amp;type=<?php echo $row['type']; ?>&amp;id=<?php echo $row['id']; ?>"><?php echo $row['title']; ?></a></li>
<br />
<?php ?>
</ol></div>
</td>
<td rowspan="2" id="d_right">&nbsp;</td>
</tr>
<tr><td colspan="3" id="content" class="BookAntiqua">
</td></tr>
<tr>
<td id="d_coner_l">&nbsp;</td>
<td colspan="3" id="d_bottom"><p class="Verdana">www.justit.com | 2009 © Черненков Василий</p></td><td id="d_coner_r">&nbsp;</td>
</tr>
</tab

Все работает как надо, но может что то можно упростить или улучшить?

Спустя 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
{
$path_m "'" mysql_real_escape_string($path_m) . "'";
}
return 
$path_m;

Спустя 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`='"
.mysql_real_escape_string($path_m)."' AND
`type`='article'"
) or die (mysql_error());


Если первый вариант, то $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'])) {
$quantity = isset($_POST['quantity'])?$_POST['quantity']:null;
if (
eregi("^([0-9])$"$quantity)) {
$_SESSION['cart'][$_POST['code']] = $_POST['quantity'];
$_SESSION['article'][$_POST['code']] = $_POST['article'];
$_SESSION['ware'][$_POST['code']] = $_POST['ware'];
$_SESSION['price'][$_POST['code']] = $_POST['price'];
$_SESSION['note'][$_POST['code']] = $_POST['note']; }}

Спустя 28 минут, 13 секунд (20.06.2009 - 14:25) glock18 написал(а):
PHP
is_integer($var)

Спустя 3 часа, 15 минут, 28 секунд (20.06.2009 - 17:40) web-dev написал(а):
PHP
<?php 
print addcslashes("Привет мир""А..я");  

Кто-нибудь знает почему у меня в данной ситуации выводится строка: \357\360\350\342\345\362 \354\350\360 (что это вообще?), вместо \П\р\и\в\е\т \м\и\р
Если А..я заменить номерами ASCII символов \192..\255 то экранируется только пробелы между словами, а русские буквы по прежнему без изменений. Почему интересно.
С латинскими символами всё работает правильно.

Спустя 2 часа, 5 минут, 13 секунд (20.06.2009 - 19:46) kopoba написал(а):
Мелкий вопрос. Мне нужно по клику по картинке записать в текстовое поле имя файла.
Функция обработки клика такая:
PHP
//Обновление поля "Имя файла"
function SetPr(imgname)
document.getElementById("ffname").value=imgname; }

Вывод картинок вот такой:
PHP
<?    foreach($Photos as $n=>$Img)
    {
                if (
$Img['url']!="$ImgDir/4.jpg") {
                
?>
        <IMG SRC="<?=$Img['url']?>
                onclick="SetPr('<?=$Img['name']?>')">
                <?
             
}       
        }

Текстовое поле вот такое:
PHP
<form name="setPr">
Имя картинки: <input type="text" name="fname" id="ffname" value=""><br><br>
</
form>


В чем подвох?( Почему не выводится имя?(

Спустя 18 часов, 31 минута, 45 секунд (21.06.2009 - 14:17) kopoba написал(а):
Верхнюю проблему решил. Теперь новая...
Подскажите, как по клику на кнопке создать новое окно (вместо того, которое было с кнопкой) и запустить на обработку модуль пхп, чтобы результат вывелся в это новое окно.

PHP
<form name="setPr" action = 'dotable.php'>
...
<
input type=button name=table value="Generate"
onClick="sndProcessReq(setPr.fname.value,setPr.td_size.value,setPr.cellpac.value,setPr.cellpad.value);" style = 'width:100%'>
...
</
form>

Спустя 1 час, 48 минут, 17 секунд (21.06.2009 - 16:06) glock18 написал(а):
Ввиду того, что тема превратилась в свалку закрываем ее. Оставляем возможность прочтения уже существующих сообщений. Новые в соответствующие темы.

Просьба не создавать больше неинформативных тем.

Одна тема - один вопрос.


_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.