Admin » 2007.11.03 03:15

Постараюсь помочь в данном направлении =)

qwetek » 2007.12.03 16:47

Admin написал:

Постараюсь помочь в данном направлении =)

Я хочу в чате в анкете сделать вывод постов сказанных за сутки. Допустим Постов:1089(34) в скобках посты за последние сутки. Как это исполнить? Нужно писать таблицу, а я в этом не очень =).

Gemor » 2007.12.03 17:23

приведи пример таблицы, в которой сообщения хранятся.
тут просто надо сделать запрос с условием чтобы время добавления сообщения не было старше заданного времени
что-то вроде такого

Код:

1
mysql_query('SELECT COUNT(*) FROM `messages` WHERE `time` > '.time()-86400);

Это если время и сообщения хранятся в одной таблице, если в разных, то так

Код:

1
mysql_query('SELECT COUNT(*) FROM `messages`, `times` WHERE times.post > '.time()-86400);
Серый » 2008.01.14 18:22

Gemorroj, а как закрыть страницу паролем, как в твоих скриптах новостей? Очень надо, а как не пойму:( помоги пожалуйста.

Gemorroj » 2008.01.14 21:12

Код:

1
span style="color: #0000BB"><?phpif(!@$_SERVER['PHP_AUTH_PW'] || !@$_SERVER['PHP_AUTH_USER']){header('WWW-Authenticate: Basic realm="Authentification"');header('HTTP/1.0 401 Unauthorized');header('Content-type: text/html; charset=utf-8');exit('<html><head><title>Error</title></head><body><p style="color:red;font-size:24pt;text-align:center">Ошибка авторизации</p></body></html>');}$pass = 'пароль';$login = 'логин';// Проверяем пароль и логинif((trim($_SERVER['PHP_AUTH_PW']) == $pass) && (trim($_SERVER['PHP_AUTH_USER']) == $login)){// авторизация пройдена}else{// авторизация не пройдена}?>

это называется BASIC авторизация
довольно хорошая и надежная вещь.

Серый » 2008.01.15 08:02

Gemorroj, я создаю страницу pass.php, вставляю в неё этот код, обновляю, а проверки пароля нет, сразу ошибка авторизации. Почему?

Gemorroj » 2008.01.16 11:21

Без понятия. Код 100% рабочий. Перезапусти браузер, очисти кэш и еще раз обнови.

Серый » 2008.01.16 11:21

Код:

1
span style="color: #0000BB"><?phpif(!@$_SERVER['PHP_AUTH_PW'] || !@$_SERVER['PHP_AUTH_USER']){header('WWW-Authenticate: Basic realm="Authentification"');header('HTTP/1.0 401 Unauthorized');header('Content-type: text/html; charset=utf-8');exit('<html><head><title>Error</title></head><body><p style="color:red;font-size:24pt;text-align:center">Ошибка авторизации</p></body></html>');}$pass = '1234';$login = 'Admin';if((trim($_SERVER['PHP_AUTH_PW']) == $pass) && (trim($_SERVER['PHP_AUTH_USER']) == $login)){exit('<html><head><title>OK</title></head><body>Авторизация пройдена</body></html>');}else{header('Location: /');exit;}?>

И сразу ошибка авторизации, без проверки пароля.

Серый » 2008.01.16 11:35

Очистил кэш, обновил - то же самое. Пробовал в Опере и IE всё одно и то же:(

Gemorroj » 2008.01.18 14:13

я не знаю... версия оперы? только что скопировал это, запустил в опере 9.50 - запросило авторизацию...

Код:

1
WWW-Authenticate: Basic realm="Authentification"

- это запрос авторизации.
http://ru2.php.net/manual/ru/features.http-auth.php вот мануал на русском по поводу Basic авторизации
попробуй оттуда код

Код:

1
span style="color: #0000BB"><?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'Текст, отправляемый в том случае, если пользователь нажал кнопку Cancel'; exit; } else { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>Вы ввели пароль {$_SERVER['PHP_AUTH_PW']}.</p>"; }?>
Серый » 2008.01.19 08:14

Опера 8.01 тот код тоже не робит. В скрипте  news2 авторизация работает. Копирую эту страницу в другую папку - работает, что-то изменяю или переименовываю страницу - перестаёт.

Gemorroj » 2008.01.19 10:57

пользуйся девятой оперой =) код рабочий, проблема в браузере.

Серый » 2008.01.22 08:06

ГГ, хорошо, как разживусь 9 оперой - отпишусь, но твои новости и на этой работают. Есть ещё один вопрос: может помнишь, я писал про форум PunBB, у меня был глюк с авторизацией, побродил по punbb.ru, но без толку. Не подскажешь, что можно сделать?

Gemorroj » 2008.01.22 10:30

нет, как вариант, подождать когда я выложу то что у меня стоит =) тут переписано побольше кода и проблем таких не возникало. выложу постараюсь на следующей неделе.

Серый » 2008.01.22 11:11

Такая проблема и с твоей версией, и с punbb.ru может глюк из-за хостинга? т.к. на h2m и на денвере всё нормально работает. А в какой проге переписывать PHP+WML? А то после блокнота WML не робит.

Casper » 2008.01.22 12:15

В блокноте нельзя. Я использую Notepad++, хотя, говорят почему то им тоже нельзя. Есть ещё PHP Expert Editor Хорошая прога, но не руссифицированная=)

Gemorroj » 2008.01.22 13:04

Про редакторы есть отдельная тема. Там я написал чем пользуюсь. PHP Expert Editor вобщет русифицирован, и вообще это отечественная разработка =) А блокнотом ни в коем случае не пользуйся, это же мазохизм =)

Добавлено спустя   1 минуту  49 секунд:
а в чем именно проблема с авторизацией? у меня что-то никаких проблем не возникало

Casper » 2008.01.22 13:50

А как называется эта тема? Что то я не нашел. Есть у тебя PHP Expert Editor на русском?

Gemorroj » 2008.01.22 14:37

http://wapinet.ru/forum/wap/viewtopic.php?id=7 там русский встроен по умолчанию, просто в настройках выбрать надо.

Серый » 2008.01.22 16:14

PHP Expert Editor!!! Точно!!! А я и забыл, что у меня такая прога есть (месяц назад систему переустанавливал - теперь бардак жуткий, до сих пор порядка нет), теперь всё получается. А с форумом такое: вводишь логин и пароль, нажимаешь войти - "Успешный вход. Переадресация." потом попадаешь на главную, а там написано "Вы не зашли" после регистрации нового пользователя - тоже самое. Куки включены, реферер передаётся, на денвере робит, на h2m тоже, а на новом хосте - нет, хотя везде форум из одного архива.

Helqg » 2008.01.25 11:20

Ээ... Такое дело. Библиотека. Как сделать чтобы слова не делились по страницам. fread(файл, 5000 и еще до ближайшего провела); ???

Добавлено спустя   4 минуты  29 секунд:
А соответственно на следующей что бы fseek(файл, указанное количество+до ближайшего пробела, от начала файла);

Gemorroj » 2008.01.25 11:47

Код:

1
span style="color: #0000BB"><?php$sz = 5000; // кол-во символов$pg = intval($_GET['pg']); // Это номер страиницыif($pg > 0){$sss = ($sz*$pg)-1;}else{$sss = $sz*$pg;}$f = fopen('file.txt', 'r');fseek($f, $sss, SEEK_SET);$str = fread($f, $sz+16);fclose($f);$str2 = mb_substr($str,0,strrpos($str,' '));$str3 = mb_substr($str,0,strrpos($str,'.')+1);$wp = ceil(filesize('file.txt')/$sz); // всего страницif(strlen($str3) > strlen($str2)){$str = $str3;}elseif($pg == $wp){$str = $str;}else{$str = $str2;}print $str;?>

вот такая абракадабра

Helqg » 2008.01.25 17:05

Шо за mb_substr? Описание к ней бы где-нибудь. Справочник на php.Net н

Helqg » 2008.01.25 17:18

Все. Нашел. Теперь думать. // твой справочник функций че то неправильно работает. Так сказать не там ищет.

Helqg » 2008.01.25 17:44

Ыыы. Просто. Только зачем нам один символ? ($sz*pg)-1
и так вроде 16 берем...

Gemorroj » 2008.01.25 19:31

да, это можешь убрать =) я это из своей библиотеки выдрал, там вобщем свои заморочки =) не до конца код почистил

Helqg » 2008.01.25 21:47

Какая то муть выходит. Гг. Плохо. Может лучше передавать указатель... Тогда количество страниц не посчитаешь. Гм.

Добавлено спустя   5 минут  14 секунд:
Ща надо глянуть, как дионисий читалку продумал.

Gemorroj » 2008.01.26 20:57

кстати если что-то интересное нароешь, сюда напиши. мне и самому интересно.

Helqg » 2008.01.26 23:04

Сильно пока не смотрел. Это довольно сложно назвать библиотекой, именно читалка. Потому как в админке надо вводить текст статьи. В этой статье \r\n меняются на [br] и по ним при чтении создается массив. Пока не смотрел как он считает страницы и переносит слова.

Gemorroj » 2008.01.26 23:59

хм... точно... надо думать в сторону массива =DDD

Helqg » 2008.01.27 12:53

А нет. Там полный писец :) // По [br] только делится статья и заголовок. Затем скрипт берет всю статью и начинает с ней работать.

Добавлено спустя   1 минуту  2 секунды:
А если она будет весить 100 килов... Тормозить не будет? Хм

Helqg » 2008.01.27 13:06

$strrpos=strrpos($ar_text[1], " ");
$pages=1;
$t_si=0;
while($t_si<$strrpos){
$string = substr($ar_text[1], $t_si, $simvol);
$t_ki=strrpos($string, " ");
$m_sim=$t_ki;
$strings[$pages] = substr($string, 0, $m_sim);
$t_si=$t_ki+$t_si;
if($pa==$pages){$page_text=$strings[$pages];}
if($strings[$pages]==""){$t_si=$strrpos++;}
else{$pages++;}

Добавлено спустя   2 минуты  7 секунд:
Это наверно может по

Gemorroj » 2008.01.27 13:22

ужс =)

Helqg » 2008.01.27 15:30

Ща скрипт нашел :) на
tegos.ru // я конечно ниче не понимаю в напряге сервер, но мне кажется что то не то. Собирается из файла строка и с нужного символа по нужный работой скрипта читаем по 1! Символу. Так сделано что бы узнать что наступил конец файла. А если мне надо по 10000 символов выводить? :)

mssk » 2008.01.28 14:20

Народ такая проблемка, мне нужно из базы вывевести все данные у которых  $id_user =$ id
делаю запрос
$sql = mysql_query("SELECT * FROM `users_project` WHERE `id_user` = '$id'");
$data = mysql_fetch_array($sql);
$url = $data['url'];
$pref = $data['pref'];
$name = $data['name'];
$wm = $data['wm'];
$email = $data['email'];
$status = $data['status'];
вывожу все данные на страницу данные выводяться но не все, у меня в бд две записи у которых id_project=2 и 3 выводиться только та у котрой $id_project=2
вот структура бд
CREATE TABLE `users_project` (
  `id_project` int(10) unsigned NOT NULL auto_increment,
  `id_user` int(10) unsigned NOT NULL default '0',
  `pref` varchar(255) character set cp1251 NOT NULL default '',
  `url` varchar(50) character set cp1251 NOT NULL default '',
  `name` varchar(150) character set cp1251 NOT NULL default '',
  `md5key` varchar(250) character set cp1251 NOT NULL default '',
  `email` varchar(30) character set cp1251 NOT NULL default '',
  `wm` varchar(13) character set cp1251 NOT NULL default '',
  `status` char(1) character set cp1251 NOT NULL default '',
  PRIMARY KEY  (`id_project`),
  KEY `word` (`pref`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 PACK_KEYS=0 AUTO_INCREMENT=9 ;

Gemorroj » 2008.01.28 14:35

Код:

1
span style="color: #0000BB"><?php$sql = mysql_query('SELECT * FROM `users_project` WHERE `id_user` = '.$id);while($data = mysql_fetch_assoc($sql)){$url = $data['url'];$pref = $data['pref'];$name = $data['name'];$wm = $data['wm'];$email = $data['email'];$status = $data['status'];// делаем что-то с этими переменными}?>

Вроде так =)

mssk » 2008.01.28 14:47

Работает:D Сенкс ))

Helqg » 2008.01.28 20:19

$open=fopen($file,'r');
fseek($open,$page*$length,SEEK_SET);
$textfull=fread($open,1020);
$last=strrpos($textfull,' ');
$textnotend=substr($textfull,0,$last);
if($page!=0)
{
$start=strpos($textnotend,' ');
;
$text=substr($textnotend,$start);
echo $text;} else echo $textnotend;

Добавлено спустя   2 минуты  1 секунду:
Во так решил оставить. Вроде ниче так :) осталось сделать красиво, коротко и защищенно.

Добавлено спустя   3 минуты  52 секунды:
Вообщем остальное мелочи... Выбор папки и так далее... Решена главная проблема: при делении слов у меня браузер никак не хотел читать. А опера заходила

Gemorroj » 2008.01.28 21:03

Код:

1
span style="color: #0000BB"><?php$length = 5000; // Кол-во символов$page = intval($_REQUEST['page']); // Номер страницы$file = 'file.txt'; // Текст$open = fopen($file,'r');fseek($open,$page*$length,SEEK_SET);$textfull = fread($open,$length);$last = strrpos($textfull,' ');$textnotend = substr($textfull,0,$last);if($page){print substr($textnotend,strpos($textnotend,' '));}else{print $textnotend;}?>

Насколько я понял это должно выглядеть так?

Добавлено спустя   1 минуту  15 секунд:
Пользуйтесь BB кодами!! код выделяется с помощью кода [cоde]код[/cоde]

Helqg » 2008.01.28 21:24

Ага. Ты правильно понял. Но думаю все таки во

Код:

1
fread();

надо добавлять пару символов. Ща надо глянуть что за request.

Gemorroj » 2008.01.28 22:48

насчет fread(); я что-то не понял. а $_REQUEST - это массив в котором и GET и POST и COOKIES.

Helqg » 2008.01.29 06:22

Там $length+20. Если же кому то нужен перенос слово в слово. То на следующей странице надо сделать строку из первых 20 символов, найти последний провел и использовать его. // а зачем использовать request, :) понял. Если создавать выбор количества символов. Почему ты пишешь print? Есть разница с echo?

Helqg » 2008.01.30 20:47

Проблемко. Ставлю тысячу символов-все нормально. Работает. Ставлю 2000 и более уже все плохо. Слова исчезают, начинает их делить. :( это плохо. Мысли есть?

Gemorroj » 2008.01.30 21:14

мысль стандартна - UTF-8, 2 байта, следовательно функции должны быть именно для этой кодировки. т.е. не скажем strlen а mb_strlen.
Разница между print и echo есть какая-то, я сам толком не знаю. Но на практике различий в я не замечал. Использование зависит скорее просто от привычки =)

Helqg » 2008.01.31 11:23

А как писать? mb_strlen(строка, кодировка); и как мне указать в кодировке utf-8?

Helqg » 2008.01.31 12:12

вот че гугл говорит. Мнение?

Gemorroj » 2008.01.31 12:38

да да, очень хороший материал =)
вот могу привести кусок из своего главного .htaccess

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Магические кавычки
php_flag magic_quotes_gpc Off
php_flag mаgiс_quоtes_runtime Off
php_flag mаgiс_quоtes_sybаse Off
 
# Не создаются переменные argc и argv
php_flag register_argc_argv Off
 
# Глобальные переменные!
php_flag register_globals Off
 
#Отладка
php_flag display_errors Off
php_flag error_reporting 0
php_flag log_error Off
 
# Автоматическое подставление идентификатора сессии к ссылкам
php_flag session.use_trans_sid On
 
Options -Indexes
AddDefaultCharset UTF-8
php_value default_charset UTF-8
 
# Макс размер
php_value upload_max_filesize 2M
php_value post_max_size 2M
 
# Время
php_value date.timezone "Europe/Moscow"
 
# mbstring
# Автозамена на мультибайтную кодировку!
php_value mbstring.func_overload 6

считаю что то же самое должно быть на всех сайтах =)
Как видишь php_value mbstring.func_overload 6. т.е. стоит автопреобразование. Хотя все равно всегда стараюсь писать с mb_.
Использовать какие-либо самописные функции для работы с UTF-8 считаю в корне не правильным.
1) Это сильно снизит, так сказать, юзабельность кода, т.е. посторонним людям будет с ним сложнее работать, да и самому.
2) Как говорилось по ссылке, в PHP6 работа с юникодом нормализуется, так что ждем, хотя еще очень долго ждать придется =)
В PHP6 будут вообще устранены EREG функции, для лучшей совместимости, на будущее, сразу привыкаем к PERL регуляркам.

Helqg » 2008.01.31 16:50

Ага. Обьяснил вполне нормально :) только на h2m.ru htaccess не дают трогать. // ща попробуемс с mb_*

Helqg » 2008.01.31 19:21

Не. Может че хостинг или браузер... Мдя // вопросик: если к mb_ereg передать не в utf8 она нормально проверит? Надо что бы нет.

Добавлено спустя   3 минуты  30 секунд:
А точнее что бы выдал false.

Gemorroj » 2008.01.31 20:28

что-то я не понял, нужно специально чтобы не правильно проверяло? =) по умолчанию кодировка для mbstring обычно ставится windows-1251, так что с UTF-8 работать будет не корректно (если есть кирилица)

Helqg » 2008.01.31 21:09

Ну я так понял все нормально будет. Не пропустит. Надо добивать эту библиотеку. Нет какой нить функции стандартной чтобы узнать количество файлов в папке? Или придется читать ее?

Добавлено спустя   5 минут  51 секунду:
И вот еще что. filesize нормально работает с файлом в юникоде? Вроде бы должен нормально.

Gemorroj » 2008.01.31 22:10

нету. читать... и в подпапках еще читать...

Helqg » 2008.02.01 09:07

Тогда может функцию сляпать. Передавать ей папку. Там если не каталог переменную увеличиваем на одну. Выводим ее. Как то так в теории будет : ). У тебя как? В каждом файле?

Добавлено спустя   1 минуту  16 секунд:
И вообще эту функцию в корень. Пригодится.

Gemorroj » 2008.02.01 09:55

http://wapinet.ru/forum/wap/viewtopic.php?pid=77#p77 тут ответ =)

Helqg » 2008.02.01 19:33

Ага. Мне понравилось. Что то об админке навеяло... .dat файлы. // Но есть непонятность. Если я в админке поставлю форму для загрузки файлов, то не получится ли что любой сможет добавить файл откуда угодно? Очень было б неприятно

Gemorroj » 2008.02.01 20:28

ну дак... защиту делай чтоб в админку никто не зашел =)

Helqg » 2008.02.01 20:47

Я может че недопонимаю. : ) ща гляну как делается форма uploada и уже буду более серьезно говорить

Helqg » 2008.02.01 21:12

Итак, вопрос. Как защищен мой каталог? Он вообще защищен? Если кто то создаст подобное у себя он сможет загрузить мне что то функцией copy();? Ну наверно нет. Но хотелось бы наверняка знать

Добавлено спустя   3 минуты  33 секунды:
В правах доступа на каталог ему еще на редактирование ставить?703?

Gemorroj » 2008.02.01 21:25

прежде чем выполнится это copy(); должна выполниться проверка пароля. на какой каталог? имеется ввиду папка куда файлы загружаться будут? тогда 777.

Helqg » 2008.02.02 09:15

Что то не нашел... Благодаря чему в мой каталог не могут загрузить файлы с других сайтов? В copy, rename можно писать только относительный путь (надеюсь на это)?

Gemorroj » 2008.02.02 12:30

в copy можно писать какой угодно путь, в том числе копировать файлы с других сайтов, если директива allow_url_fopen включена, т.е. On. загрузить не смогут (надеюсь =)) тому, что скрипт не станет копировать файл, если пароль не подойдет.

Helqg » 2008.02.02 13:10

Ладно, скажем так. Кто то пытается скопировать при помощи copy(); файл мне в каталог с правами 777. Ему это удастся? Копирует скриптом на каком нибудь левом сайте.

Gemorroj » 2008.02.02 13:39

нет, еслиб так можно было бы, представь что бы творилось в нете =)

Helqg » 2008.02.02 13:58

Да я и думал что нет. Но просто не знал так изначально или че где надо подправить. // ща вот на распутье. Как лучше админку сделать? Один большой файл или на 2 разделить? И нормально будет если будет на доступ проверяться так: if($_GET['enter']!=='очень сложный пароль') exit('не судьба');

Gemorroj » 2008.02.02 14:16

да, нормально. насчет кол-ва файлов... это как тебе удобно будет. смотря на сколько большой еще файл.

Helqg » 2008.02.02 21:11

готово. Все на дат файлах :). Теперь надо подумать о новостной ленте.

Gemorroj » 2008.02.02 21:59

Кста, недавно пришлось поработать с XML, вещь. Была мысля комментарии замутить в XML, да как-то все не до того. Советую вобщем поковырять этот XML и если на фалах делать будешь, то с использованием XML =)
инфа тут: http://php.su/functions/?cat=xml

Helqg » 2008.02.03 09:49

Че такое .xml? Первый раз вижу это расширение. Как оно может помочь?

Серый » 2008.02.03 16:05

Gemorroj, привет. Про Basic авторизацию: скопировал твой код в PHP Expert Editor и всё заработало! Опера таже// ты говорил, что в новом форуме нашёл ошибку, не подскажешь где, и как закрыть? И ещё вопрос: решил немного переделать твой скрипт "Инфа о браузере", в где-то видел, что показывает разрешение экрана, кол-во цветов и наличие камеры, не знаешь, с помощью каких функций это сделать? Заранее СПАСИБО!

Gemorroj » 2008.02.05 14:47

Серый, теоретически это можно выдрать с помощью JavaScript, но это ОЧЕНЬ не надежно, да и я лично подсказать не смогу. Как правило это просто собирается база с моделями телефонов и их характеристиками. Собственно инфа берется из этой базы.
Ошибка в форуме - письма на емыло отправляются в не верной кодировке. Просто надо убрать все iconv
Насчет XML я же ссылку дал =) это РАСШИРЯЕМЫЙ язык разметки. Дело в том, что там в УДОБНОЙ форме можно хранить данные. К примеру RSS лента - это обычный XML документ. Так же можно и что-то свое сделать.

Серый » 2008.02.05 15:42

Gemorroj, спасибо, всё ясно. Не посчитай за тупость, но где эти iconv и что это такое

Gemorroj » 2008.02.05 16:16

В папке include файл email.php функция pun_mail
замени на это:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function pun_mail($to, $subject, $message, $from = '')
{
global $pun_config, $lang_common;
 
$to = trim(preg_replace('#[\n\r]+#s', '', $to));
$subject = '=?utf-8?B?'.base64_encode(trim(preg_replace('#[\n\r]+#s', '', $subject)))."?=\n";
$from = '"Forum Mailer" <'.$pun_config['o_webmaster_email'].'>';
 
$headers = 'From: '.$from."\r\n".'Date: '.date('r')."\r\n".'MIME-Version: 1.0'."\r\n".'Content-transfer-encoding: 8bit'."\r\n".'Content-type: text/plain; charset='.$lang_common['lang_encoding']."\r\n".'X-Mailer: PunBB Mailer';
 
$message = str_replace(array("\n", "\0"), array("\r\n", ''), pun_linebreaks($message));
 
if ($pun_config['o_smtp_host'] != '')
smtp_mail($to, $subject, $message, $headers);
else
{
if (strtoupper(substr(PHP_OS, 0, 3)) == 'MAC')
$headers = str_replace("\r\n", "\r", $headers);
else if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN')
$headers = str_replace("\r\n", "\n", $headers);
 
mail($to, $subject, $message, $headers);
}
}
Серый » 2008.02.05 17:01

Gemorroj, всё заменил, огромное тебе спасибо=)

Helqg » 2008.02.05 17:17

Браузер поймет такую страницу? Она собственно для браузеров, или универсальная? // да там на твоей ссылке только функции для работы. Надо глянуть шо за хмлъ

Gemorroj » 2008.02.05 17:46

Какую такую? XML это РАСШИРЯЕМЫЙ язык, т.е. из него хоть собственный аналог HTML слепить можно. Но это все же XML для него нужен свой парсер. если выдать в заголовке что это RSS, то будет RSS и откроется в соответствующем приложении. Других распространенных WEB сервисов на XML я не знаю =) Так же XHTML и WML отвечают (ну должны отвечать) XML правилам.

Helqg » 2008.02.08 23:56

Вот втыкаю в html. Есть какая то суровая разница между html и xhtml?

Gemorroj » 2008.02.09 01:46

Ага, самое суровое как раз там, это обязательное соответствие XHTML стандартам XML. И как следствие очень жесткий контроль ошибок. Если в HTML браузер попытается игнорировать ошибку, то в XHTML, W3C консорциум рекомендует производителям браузеров показывать сообщение об ошибке. Это то, что сразу бросается в глаза. Так же, есть сведения, что поисковики (Google) больше ценят страницы на XHTML. Я когда-то сам верил в XHTML и что он спасет мир =) но меня ждал облом. Блин, скрестили бы как-нибудь WML и HTML.

Helqg » 2008.02.09 19:39

Усе. Все в xhtml. Все прологи взял твои. Заголовок тоже где то взял: application/xhtml+xml. Наверно верно. // новостную ленту я добил. Надо сделать терь простенький форум на mysql. :)

Gemorroj » 2008.02.09 20:01

еще есть 1 серьезный ньюанс. если смотреть, например, мои скрипты, то там MIME тип отправляется так:

Код:

1
span style="color: #0000BB"><?phpif(substr_count($_SERVER['HTTP_USER_AGENT'], 'MSIE')){header('Content-type: text/html; charset=utf-8');}else{header('Content-type: application/xhtml+xml; charset=utf-8');}?>

т.е. если в юзер агенте есть MSIE отправляем MIME тип что это HTML а не XHTML.
Интернет Эксплорер и все что построено на его движке не понимают MIME тип XHTML =)

Helqg » 2008.02.10 09:25

Ага. Я прочитал об этом. Но там написано что IE нечего делать в вапе. Пусть оперу ставят:)

Helqg » 2008.02.10 15:25

Вопросы по форуму. Че хранить в базе,а что в файлах? Юзеров понятно в бд, а посты, темы, разделы. // далее как передавать переменные тем, разделов постов. Может в сессии? У тебя наверно печеньями.

Gemorroj » 2008.02.10 15:55

все в базе храни. переменные с темами, разделами, постами - думаю лучше просто через GET, а вот авторизацию через сессии.

Helqg » 2008.02.16 15:04

Мдыц. А че в сессии то тащить только ник? А если она не обьявленна, то выкидывать? Таблицы: одна на юзеров, другая название разделов, третья ээ... Как содержимое тем вклинивать? Точнее так: в таблице темы как то делить по разделам? Или не надо. Гм

Гемор » 2008.02.16 16:12

Просто если через сессии, то нельзя будет ни закладку сделать, ни ссылку на тему например где-нибудь в сети скинуть. В сессиях логин и пароль. А насчет таблиц это уже тебе решать. Просто старайся чтобы данные в базе НЕ ДУБЛИРОВАЛИСЬ.

Helqg » 2008.02.17 20:56

Куда то все исчезло... Я спрашивал о том, зачем пароль таскать в сессии.

Gemorroj » 2008.02.17 22:34

Мы переехали на новый сервер, бэкап базы немного старый =)
Насчет сессий, ну чтобы не перехватили сниффером. Хотя с другой стороны, например, в форуме софттайма пароль передается открыто в куках. Сессии нужны для безопасности, т.к. пароль нигде не светится.

Caspеr » 2008.02.18 05:31

Админ, помоги пожалуйста. У меня в чате в комнатах в самом верху ссылка на новости, если они есть. Как сделать, чтоб эта ссылка там висела только, например, в течение пяти дней с момента добавления последней новости? Вот файл.

Helqg » 2008.02.18 06:21

Ясно, что он нигде не светится. Я вот не пойму зачем его передавать, как его использовать? Проверять на правильность на каждой странице? Ээ. А сессию юзер сможет создать как то, кроме как авторизуясь?

Gemorroj » 2008.02.18 09:59

Casper, я так понимаю, дата новости записывается именно датой, а не timestamp? Если так, то надо изменить так, чтобы записывался timestamp. А поттом уже работать с news.php, а chat.php я не понял зачем.
Helqg, передавать чтобы пользователю не пришлось каждый раз авторизовываться если он хочет например добавить сообщение. Данные сесси проверяются 1 раз, при ее создании, после передается ИДЕНТИФИКАТОР уже созданной сессии, и данные будут те, которые мы проверили в 1 раз. Почитай о сессиях на PHP.SU

Helqg » 2008.02.18 11:53

Я читал о сессиях. Я не въеду зачем пароль передавать. Страница входа- сверяются логин и пароль. Если верно, то стартует сессия с одной переменной-логин. Никак не пойму где мне нужен будет пароль.

Gemorroj » 2008.02.18 12:34

А почему с одной переменной? Запихивай туда логин и пароль. И потом никаких проверок, просто смотриш идентификатор сессии, если такой есть, то значит это авторизованный пользователь с паролем и логином которые занесены в эту сессию.

Helqg » 2008.02.18 14:15

Ну вот допустим пользователя авторизован. В сессии у него и логин и пароль. Логин я буду использовать(от этой переменной посты будут писаться), а пароль? Да он лишний просто :)

Gemorroj » 2008.02.18 14:30

неееееет, если без пароля, то от этого логина каждый писать сможет.

Helqg » 2008.02.18 16:58

Как он сможет писать, если авторизацию проходят с паролем?

Gemorroj » 2008.02.18 17:06

похоже мы друг друга не понимаем =/ ну прошел он авторизацию и что? перешел на другую страницу и снова проходить авторизацию?

Helqg » 2008.02.18 20:20

Нет на другой странице проверяем наличие $_SESSION['user']. Если нету переадрессовываем

Gemorroj » 2008.02.18 20:32

ну попробуй, о результатах сообщи =)

Helqg » 2008.02.19 10:28

Гг. Ага

Helqg » 2008.02.19 17:58

CREATE TABLE `users`
(
`nick` char(10) NOT NULL,
`pass` char(20) NOT NULL,);

Добавлено спустя   1 минуту  52 секунды:
без последней запятой перед скобкой. // Ну, красивая будет таблица? :)

Gemorroj » 2008.02.19 18:22

нет =) подозреваю что таблица должна выглядеть как минимум вот так

Код:

1
2
3
4
5
CREATE TABLE `users` (
`id` INT(11) NOT NULL auto_increment,
`name` VARCHAR(24) CHARACTER set utf8 collate utf8_general_ci NOT NULL,
`pass` VARCHAR(24) NOT NULL
) TYPE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Не забывай делать все в UTF-8 и поле с auto_increment тоже наверняка тебе потребуется. Т.к. идентифицировать пользователя по ID много удобней. Да и надежней.

Helqg » 2008.02.19 18:44

Шо за collate? И шо за тип myisam? Последняя кодировка это только для авто вырасталки?

Добавлено спустя   1 минуту  57 секунд:
ALTER DATABASE имя_базы DEFAULT CHARACTER SET имя_кодировки. Вот што у меня в книжке пишут. В админе писать? Катит?

Gemorroj » 2008.02.19 20:11

Посмотри в том же phpmyadmin'е, UTF-8 многогранен =) collate уточняет кодировку
MyISAM - тип таблиц в БД. Он и так по умолчанию в принципе используется.

Helqg » 2008.02.20 11:35

CREATE TABLE `users`
(
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nick` VARCHAR( 10 ) CHARACTER SET utf8 NOT NULL,
`pass` VARCHAR(20) CHARACTER SET utf8 NOT NULL
)

Добавлено спустя   2 минуты  50 секунд:
Вот што осталось в итоге. Тут смесь всегоВсякие, что нашел. разные ошибки были :) Про MyISAN страшные вещи пишут, что его в 5 версии не будет.

Admin » 2008.02.20 11:48

покажи мне плиз где это пишут... у меня пятая версия MySQL и на локалхосте и собсна здесь, на боевом сервере...

Helqg » 2008.02.22 18:26

5 версия mysql. Гг. Че то я какое то старье читаю. :(

Добавлено спустя   3 минуты  17 секунд:
Вопросик: как запрос написать для вставки новой записи. А именно что мне отправлять в поле с авто вырасталкой?

Admin » 2008.02.22 19:10

ничего. ноль туда пиши, MySQL сам прибавит 1 к предыдущему значению

Helqg » 2008.02.22 20:17

Это хорошо. Теперь такая проблемко. #1054. Unknown column 'здесь как бы то, что я отправляю для вставки. Значение логина' in 'field list'

Admin » 2008.02.22 21:13

Полный запрос напиши. А вообще "Unknown column" - не существует соответствуещей колонки, куда ты данные записать пытаешся.

Helqg » 2008.02.23 09:21

mysql_query('INSERT INTO `users`(`nick`,`pass`) VALUES (`'.$nick.'`,`'.$pswd.'`)')

Gemorroj » 2008.02.23 10:23

Сам запрос верный. У тебя точно есть таблица users а в ней поля nick и pass ???

Helqg » 2008.02.23 22:18

CREATE TABLE `users`
(
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nick` VARCHAR( 10 ) CHARACTER SET utf8 NOT NULL,
`pass` VARCHAR(20) CHARACTER SET utf8 NOT NULL
);
Может надо че id передавать?

Добавлено спустя   1 минуту  55 секунд:

Добавлено спустя   3 минуты  11 секунд:
Ну или права доступа какие надо?

Helqg » 2008.02.23 22:47

Усе. Это починил. Убрал `` из значений добавляемых данных. Заработало. // насчет авто вырасталки- ты прав. Даю ноль, а ей фиолетово :)

Helqg » 2008.02.24 10:33

Попытался кодировку изменить в базе через ALTER. Фига. Синтаксис еррор :) поддержке написал. Поддержка х2м. Ответят ли? :-(

Helqg » 2008.02.24 16:11

http://www.google.ru/gwt/n?u=http%3A%2F%2Fwww.phpfaq.ru%2Fslashes&hl=ru&mrestrict=xhtml&q=ALTER+DATABASE+DEFAULT+CHARACTER+%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0.+%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83%3F&source=m&site=search

Добавлено спустя   2 минуты  4 секунды:
А это ответ на все мои проблемы. Данные должны быть в ''. Хорошая статья

Добавлено спустя   4 минуты  49 секунд:
А в поддержке вообще кадры сидят. "мы не даем рекомендаций по настройке баз данных". :) но хоть обещали обновить с 4.0.Скокототам до последней. И на том спасибо.

Gemorroj » 2008.02.24 16:21

Так зачем ты с h2m вообще связываешся??? возьми хоть недорогой но платных хост. имхо даже начинать с подобных хостингов нельзя, потому что слишком уж многое работать не будет.

Helqg » 2008.02.24 21:22

Ну да... // :) у меня тормоз как всегда. Допустим юзер заполнил формы входа и передает все это дело. Когда стартовать сессии?

Helqg » 2008.02.24 21:40

Да вроде нормально все будет. Создание сессии до проверки условий всяких-разных. Тысячи сессий никак не возникнут? Ээ

Gemorroj » 2008.02.24 22:14

А что мешает создавать сессию после проверки? Да и время жизни сессии ограниченно, спустя некоторое время она самоустраняется.

Helqg » 2008.02.25 16:10

Да там сессию объявлять, после вывода заголовков в браузер... Ну это я сляпал. Идем дальше-> как сделать регистрозависимые логин и пароль? Я ща что не введу- прохожу все равно.

Добавлено спустя   2 минуты  5 секунд:
И даже что то мыслей нет. :( Не знаю где подправить запрос: пхп, муску

Gemorroj » 2008.02.25 19:17

хмммм... а с какого перепуга они стали регистроНЕзависимые?

Helqg » 2008.02.25 20:46

Да уж :( пишут либо COLLATE либо BINARY.
Первое вряд ли, а вот бинарные поля может пойдет. Гм

Добавлено спустя   1 минуту  25 секунд:
Опять таблицы мучить. Ыы

Gemorroj » 2008.02.25 21:00

что за бред???? varchar или text используй.

Helqg » 2008.02.26 11:04

Varchar и использую. Но не тянет. Я думал может любой пароль подойдет. Но нет. Именно проблемко с регистром. С логином тоже самое

Gemorroj » 2008.02.26 11:31

и вообще при чем здесь тип строки? ты как сравниваешь пароль и логин? наверняка где-нибудь strtolower или strtoupper

Helqg » 2008.02.27 16:52

$query=mysql_query("SELECT * FROM `users` WHERE `nick`='$nick' AND `pass`='$pass'");
if(mysql_num_rows($query)<1) {mysql_close($connect);
exit($prolog.'Вы не зарегистрированны!'.$end);}
else {
mysql_close($connect);
session_start();
$_SESSION['login']=$nick;

Helqg » 2008.02.27 18:47

Ну и еще substr(); обрезает до заданной длины

Helqg » 2008.02.27 19:14

А вот вырезка из книжки пхп 5. Колисниченко. "При поиске с помощью оператора SELECT не учитывается регистр символов"      "Бинарные данные также можно использовать для хранения текста, но при поиске будет учитываться регистр символов"

Gemorroj » 2008.02.27 19:17

посмотри через phpmyadmin в каком виде хранятся логин и пароль в  базе. сохраняется ли регистр символов?

Gemorroj » 2008.02.27 19:42

насчет SELECT... видимо там имеется ввиду следующий запрос

Код:

1
SELECT * FROM `test` WHERE `name` LIKE '%search%';

хотя я не уверен. всю жизнь изспользовался этот селект для проверки, где-то ты недосмотрел с регстром. ищи проблему в коде.

Helqg » 2008.02.29 19:14

Да я поставил бинарные поля. :) пусть. Кстати, разрешать ли русские буквы в логине, пароле? И если да, то как? Сразу отправлять в базу или транслитировать на входе/выходе? Переживаю от незнания.

Добавлено спустя   1 минуту  52 секунды:
Дельный был совет. Но поздно :(

Admin » 2008.02.29 19:47

Да, конечно, ВЕЗДЕ и ПОВСЮДУ используй UTF-8. Главное условие - ВЕЗДЕ, а не как в одном мерзком скрипте, называемом еще  "бодр-чатом", и тогда проблем не будет. В БД данные тоже должны храниться в UTF-8.
Часто проблема возникает с тем, что сервера настроены на ISO 8859 или windows-1251, а нам нужен UTF-8.
Решается это следующим образом: сразу после соединения с базой отправляем MySQL серверу информацию, что мы будем работать с UTF-8.

Код:

1
span style="color: #0000BB"><?php// Хост, пользователь, парольmysql_connect('localhost', 'root', '') or die('Can not connect to MySQL');// UTF-8mysql_query('SET NAMES `utf8`');// БДmysql_select_db('blog') or die('Error select the database');?>

лично я этот код как правило выделяю в отдельный файл - connect.php и где надо подключаю через require
Еще, твой код

Код:

1
span style="color: #0000BB"><?php$query=mysql_query("SELECT * FROM `users` WHERE `nick`='$nick' AND `pass`='$pass'");if(mysql_num_rows($query)<1) {mysql_close($connect);exit($prolog.'Вы не зарегистрированны!'.$end);}else {mysql_close($connect);session_start();$_SESSION['login']=$nick;?>

вот это
if(mysql_num_rows($query)<1) {mysql_close($connect);
exit($prolog.'Вы не зарегистрированны!'.$end);}

в принципе фигня. но лучше писать более грамотно и красиво, а именно
if(!mysql_num_rows($query) {
mysql_close($connect);
exit($prolog.'Вы не зарегистрированны!'.$end);
}

дальше...
else {
mysql_close($connect);
session_start();
$_SESSION['login']=$nick;

хм... mysql_close($connect); - спорная вещь. соединение (если оно не постоянное (pconnect)) само закроется через 60 сек (по умолчанию). Но дело в том, что пользователь у тебя здесь таки прошел авторизацию, и далее он теоретически пойдет дальше бродить по форуму, т.е. будет коннектится к MySQL, так вот... не стоит лишний раз передергивать такие соединения. Если подразумевается что пользователь в дальнейшем будет использовать скрипт, то соединение закрывать не стоит, это открытое соединение используется при следующем действии пользователя. Оптимизация епт =) Я на ней помешан =)

Helqg » 2008.02.29 23:06

Гм. Ага. Не подумал об этом. В следующем же скрипте:). Купить бы где учебник по мускулу. Один оракул продают. Че нить знаешь о нем?

Gemorroj » 2008.02.29 23:27

Об Оракуле? не =) основы MySQL я лично брал из книжки Кузнецова & Симдянова PHP 5, потом какия-то инфа из сети. Часто пользуюсь этим http://wapinet.ru/textbook/mysql/ построение SQL запросов как правило не вызывает особых проблем. Главное изначально грамотно спроектировать Базу Данных.

Helqg » 2008.03.01 10:10

Тякс. Как вывести из базы постранично? Можно ли как переносить указатель у mysql_fetch array?
А то mysql_result и 2 цикла, это повеситься можно.

Gemorroj » 2008.03.01 10:37

Оператор LIMIT ;)

Код:

1
SELECT * FROM `table` WHERE `xz`=1 LIMIT 0,10
Helqg » 2008.03.02 21:29

Как пользоваться COUNT()?
$запрос=мускул_запрос("SELECT COUNT(*) FROM таблица");
Что вернет $запрос? Точнее какой тип данных, может просто число?:)

Серый » 2008.03.03 09:44

Gemorroj, привет, подскажи плиз как сделать отсчёт времени от какого - нить события, где-то видел, а как не помню:(

Admin » 2008.03.03 10:25

Helqg, вот что по этому поводу сказано на ru2.php.net
Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.
для подсчета пользуйся следующей конструкцией

Код:

1
span style="color: #0000BB"><?php$count = mysql_result(mysql_query('SELECT COUNT(*) FROM `tables` WHERE `xz` = "xz2"'),0);?>

в переменной $count будет требуемый результат.

Admin » 2008.03.03 10:31

Серый, не совсем понятен вопрос...

Код:

1
span style="color: #0000BB"><?php// текущая дата$date = date('r',time());// текущая дата - 1 день$date = date('r',time()-86400);?>
Helqg » 2008.03.03 11:26

Ясно. Жалко конечно. Ну не число, так не число.

Серый » 2008.03.03 11:41

Ну да, немного не так выразился, нада чтобы показывалось время, которое прошло, к примеру, с твоего дня рождения:)

Admin » 2008.03.03 12:15

Код:

1
span style="color: #0000BB"><?php// от текущего времени отнимаем время даты рождения и делим на кол-во секунд в 1 дне$date = (time() - mktime(0, 0, 0, 10, 30, 1984)) / 86400;// получаем сколько дней я прожил =)print $date;// можно округлить до целых в большую сторонуprint ceil($date);?>
Серый » 2008.03.03 13:46

Спасибо:) а как посчитать часы, минуты, секунды, к примеру сколько времени сайту?

Admin » 2008.03.03 15:27

Код:

1
span style="color: #0000BB"><?php// от текущего времени отнимаем время даты рождения сайта, получаем сколько секунд прожил сайт$date = time() - mktime(0, 0, 0, 10, 30, 2007);$d = floor($date/86400); // дни$h = floor(($date-($d*86400))/3600); // часы$m = floor(($date-($d*86400)-($h*3600))/60); // минуты$s = $date-($d*86400)-($h*3600)-($m*60); // секундыprint "сайт живет $d дней, $h часов, $m минут, $s секунд";?>

правда код идиотский наверно =(

Helqg » 2008.03.03 21:11

http://gazenwagen.com/forum/index.php?id=6145 Хы. Прочитай. Конкуренция wapcms. Компроматы всплывают.

Admin » 2008.03.03 22:46

ппц... ужоз... никогда не притрагивался к этому дерьму и никому не советую.

Серый » 2008.03.04 12:18

Спасибо за код, и вовсе он не идиотский=) Про мотор: почитал, аж обидно стало, нах так делать? И так никогда его не юзал, а теперь и подавно не буду.

Helqg » 2008.03.09 18:07

Ы. Форум встал. Емое. Как то невнятно работает  substr();. Красиво режет буквы не по буквам. Пишу md_ пустая страница. Как обрезать строку до заданной длины? :)

Добавлено спустя   2 минуты  47 секунд:
Через SET NAMES может попробовать? Хм. Мдя

Helqg » 2008.03.09 18:18

Это я удачно заглянул %) mb_

Admin » 2008.03.10 09:00

чтобы mb_ работало нужна библиотека mbstring =)
залезь в php.ini и расскомментируй соответствующую строку.

Код:

1
span style="color: #0000BB"><?php$test = 'тест ххх';$out = mb_substr($test,0,4,'UTF-8');// $out = 'тест';?>

так же можно использовать iconv

Код:

1
span style="color: #0000BB"><?php$test = 'тест ххх';// PHP 5$out = iconv_substr($test,0,4,'UTF-8');// $out = 'тест';?>
Helqg » 2008.03.10 09:25

Да не просто я в упор писал md_ а надо mb_. И думал, почему ничего не работает... Гг. ///

Добавлено спустя   2 минуты  56 секунд:
Да не. Я там буковку напутал просто. :( /// Ща такое дело- надо новые темы наверх выводить. Чем? Может в базе создать столбик с временем последнего изменения записи? Ну там в секундах unix овых. И сравнивать их MAX()?

Admin » 2008.03.10 11:39

вообще по ID это можно, чем больше id записи, тем она новее, но я думаю записывать время создания темы полюбому надо) чтобы собсна показать когда создана запись.

Helqg » 2008.03.10 15:54

Новее то да. Но с добавлением поста id не изменяется. Надо как то время колоть. У меня в базе уже строкой xx.xx.xxxx XX:XX хранится. Надо в timestamp перебить...

Gemorroj » 2008.03.10 16:18

А, тогда да. Еще можно в таблице постов писать ID темы. И делать запрос к постам, сортируя их по времени. Соответственно берем из полученных данных ID тем и выводим. Я делаю именно так)

Helqg » 2008.03.10 21:39

не. Посты будут по старинке- с первого и так далее. Без времени сляпал. А вот в темах нельзя без времени. У тя как время хранится? В секундах?

Gemor » 2008.03.10 23:48

Время всегда храни как timestamp. Я темы и имел ввиду, из таблицы с постами ты вибираешь id тем.

Helqg » 2008.03.11 11:30

По id я отбираю темы для нужного раздела среди кучи всяких тем. Так. Допустим. Эта куча отсортированна по id. А как выбрать по времени? Гм.

Gemorroj » 2008.03.11 11:35

ты выбираешь ID но сортируешь по времени.

Код:

1
SELECT `id_theme` FROM `posts` ORDER BY `time` DESC LIMIT 10
Helqg » 2008.03.12 19:39

"SELECT `id`,`time`,`title`,`quantity` FROM `tems` WHERE `forum`='$kat' ORDER BY `time` LIMIT $start,$over"

Добавлено спустя   4 минуты  31 секунду:
Должно прокатить. Там пока пыхадмин в ауте. Гг. Зато разрешили самим .htaccess трогать. // как лучше написать time(); или date("U"); ? Блин. В коде двумерные массивы :) Они ниче не будут тормозить? Как выводить время работы скрипта?

Admin » 2008.03.12 19:57

наверное time =) насчет двумерным массивов, если они нужны, то пусть будут. я очень сомневаюсь что они будут узким местом.
время работы скрипта:

Код:

1
span style="color: #0000BB"><?php// в самом верху// смотрим время$time = array_sum(explode(' ', microtime()));/*тут всякий код...*/// в конце снова смотрим время// отнимаем от него время начала работы скрипта, и обрезаем до 4 цифр после точкиprint round(array_sum(explode(' ', microtime()))-$time,4);?>
Helqg » 2008.03.13 06:19

Ы. Да, прост

Helqg » 2008.03.13 20:03

Не катит. Мдя. Ща глянем что ты за DESC написал, если ниче значимого, то надо столбик id с авто вырасталкой удалять. Будет первичным ключом время.

Helqg » 2008.03.15 12:50

Иххо. Заработало. Id оставил, но снял с него первичный ключ. ORDER BY это умная вещь.

Admin » 2008.03.15 15:58

когда рабочий пример форума будет? =) я вот тоже щаз глобальную переработку форума устроил) надолго это првдва)

Helqg » 2008.03.15 23:40

да основа уже есть. http://helqg.h2m.ru/forum
:) ща админку ляпаю. Форум пока страшный, но вроде без ошибок. :)
да у тебя форум наверно огромный. Килов 700 весит. Да и код наверно полный паштет...

Admin » 2008.03.16 17:38

весит болшье даже) и код, да... жуть) в скриптах форум punbb_mod примерно то, что здесь стоит.

Helqg » 2008.03.19 21:20

На h2m 5 мускул поставили. Ура. Только я как сидел с бинарными полями, так и остался сидеть. Зато пока искал utf8_*_cs нашел
http://oszone.ru/4743/MySQL
разницу между char & varchar.

Gemorroj » 2008.03.19 21:31

отличная ссылка. cs — case sensitive — чувствительно к регистру, ci — case insensitive — не чувствительно) - этого я не знал.
Для кодировки UTF-8 сервер выделяет разное количество байт для разных символов (в соответствии с кодировкой) в случае VARCHAR и 3 байта на каждый символ в случае CHAR. Таким образом, в UTF-8 строка CHAR(10) всегда занимает 30 байт, а VARCHAR(10) — от 1 до 31 байта. - этого тоже не знал. Можно было конечно и самому догадаться, но я как-то не догадался)

Helqg » 2008.03.19 21:35

ага. Еще я немного для себя представил разницу между unicode и utf8. весьма хороший пример про то как обидели азиатов.

Gemorroj » 2008.03.19 21:46

Да почему ж обидели??? Глобализация, никуда не денешся. Наша кирилица тоже 2 байта занимает на символ. Ради совместимости, я лично готов этим лишним байтом пожертвовать, поскольку проблема-то серьезная. А если беспокоит вопрос экономии трафика в нете, то есть GZIP. Меня уже просто достали эти проблемы с кодировками =( Из ничего порой такой гемор из-за этих кодировок бывает, просто ужас =/

Helqg » 2008.03.20 11:37

То есть? Почему к примеру не выбрал за основную кодировку 1251? Она ща многими телефонами поддерживается. В отличие от Koi8r, эта даже с моей sis kовской оперы не превратится в буквы.

Gemorroj » 2008.03.20 13:17

Потому что в отличае от win-1251, в UTF-8 предусмотрены все символы. А koi8-r вообще не рассматривается =)

Helqg » 2008.03.21 08:09

ээ... ну хоть пример один. Че там нету? € знак евро есть?

Helqg » 2008.03.21 11:17

по форуму: как сделать онлайн юзеров?

Gemorroj » 2008.03.21 12:15

сделай в какой-нибудь таблице колонку с временем последнего посещения. при посещении зарегистрированным пользователем форума, соответственно заноси туда timestamp. ну и потом если этот timestamp больше time()-300, то пользователь в онлайне. 300 - это сколько секунд считать в онлайне.
по поводу Win-1251 vs UTF-8. В ACSII таблице 255 символов. Вот они

Код:

1
span style="color: #0000BB"><?phpfor($i=0; $i<=255; ++$i){print "&#$i;<br/>";}?>

255! разве это много?? в Unicode я насчитал их больше миллиона! всякие пиктограммы, иероглифы.
вот почитай http://ru.wikipedia.org/wiki/Юникод

Casper » 2008.03.21 13:18

Блокировка по юзер-агенту:

Код:

1
if($_SERVER['HTTP_USER_AGENT'] == 'Nokia6021/2.0 (04.50) Profile/MIDP-2.0 Configuration/CLDC-1.1'){exit('Вам сюда нельзя!');}

Как сделать, чтоб пользователь с таким юзер-агентом переадрисовывался на другую страницу?

Gemorroj » 2008.03.21 13:35

Код:

1
span style="color: #0000BB"><?phpif($_SERVER['HTTP_USER_AGENT'] == 'Nokia6021/2.0 (04.50) Profile/MIDP-2.0 Configuration/CLDC-1.1'){header('Location: redirect.php',true,301);exit;}?>

еще замечу, что при переадресации через Location в заголовке, следует отправлять код 301. По умолчанию отправляется 302.
Это нужно для того чтобы поисковики нормально относились к подобным переадресациям. При частых переадресациях с кодом 302, есть риск попасть в бан у поисковиков или по крайней мере снизить PR.
На переадресациях построены дорвеи, посему поисковые машины таким образом им противостоят.

Casper » 2008.03.21 14:46

Благодарю!

Helqg » 2008.03.21 15:03

это пользователь открывает страницу, а там? Отбираю всех юзеров у которых открытие страницы было недавно. Такс... То есть на каждой странице надо обновлять юзеру дату своего последнего действия?

Gemorroj » 2008.03.21 15:23

да. сделай отдельно функцию которая будет это делать. и вставь ее везеде.

Stepan » 2008.03.22 23:24

Хочу сделать свои поисковик на сайте,а в php почти не разбираюсь.Может кто нибудь может помочь?

Gemorroj » 2008.03.23 08:45

просто представь что должен делать поисковый робот. все ремя быть в работе, ходить по ссылкам, ранжировать полученные данные в зависимости от содержимого, разумно противостоять различным SEO ухищрениям, хранить огромный объем информации у себя на сервере. Вероятно еще много всего требуется. В т.ч. и собственные мощные сервера. Вот например что пишет о себе яндекс.

В поиске Яндекса сегодня
сайтов: 11 896 113,
веб-страниц: 2 677 821 253,
объем проиндексированной
информации: 79 239 ГБ.

еще есть вопросы? =)

Helqg » 2008.03.23 14:22

так. Время работы готово. :) с онлайн думаю пока погодить... Надо сделать анкету юзера. Че б туда всунуть, почту, дату регистрации, постов живых, тем живых, ээ. Картинки наверное будут много места занимать...
Добавлено спустя   3 минуты  58 секунд:
кстати ушел от двумерных массивов. Как оказалось возможно такое:

Код:

1
while($f=mysql_fetch_assoc($)){}
Gemorroj » 2008.03.23 15:06

ну да, будет выполняться, пока не получит false

Helqg » 2008.03.24 20:05

http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Хорошо знаешь английский? Я чет ниче не понял. Может важное че.

Gemorroj » 2008.03.24 21:30

да, английский там жестокий. может это американский, а не английский даже.
ну 1 - echo быстрее чем print
2 - $ret = print "hello"; так можно, и переменная $ret будет равняться 1, в то время как с echo такие штуки не прокатя. На счет AND, OR and XOR я не понял =( что-то говориться что они более низкоуровневые, но как это связать я не понял.
3 -  echo  "and a ", 1, 2, 3; - так можно, а вот с print не выйдет.
хреновый из меня переводчик, как смог перевел)
вот еще пара ссылок
http://www.phpforum.ru/index.php?showtopic=346]
http://otvety.google.ru/otvety/thread?t … ae2ec5eac1
от себя добавлю что я и сам не первый раз копаюсь в отличиях echo и print, но толку это дает мало. Одни говорят что быстрее print другие echo. В любом случае если и есть разница в скорости, то она крайне мала, на столко что вот даже выяснить толком не могут, что же все-таки быстрее)
Думаю лучше просто использовать то, что ближе душе. Мне вот print больше нравится почему-то.

Helqg » 2008.03.28 18:50

регулярное выражение бунтует :
[[:alnum:]-.]+@[[:alnum:]-]+(\\.[[:alnum:]-]+)*
никак не пойму в чем трабл

Helqg » 2008.03.28 19:02

увидел ща про клик клуб и регулярку, но все таки хотелось бы понять в чем я промахнулся. Мне вот конечно круглые скобки не нравятся, но у меня в книжке именно пример с такими скобками

Admin » 2008.03.28 21:35

возможно из-за 2-х слешей [[:alnum:]-.]+@[[:alnum:]-]+(\\.[[:alnum:]-]+)*

Helqg » 2008.03.29 23:03

трабл однако. Взял с маговского форума регулярку- тоже не пашет. Ща местную возьмем// Warning: ereg(): REG_ERANGE in... on line ...

Gemorroj » 2008.03.30 10:15

Код:

1
preg_match("/^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,6}$/i", $mail);

пробуй эту еще, если снова ошибка вылезет, будем думать.

Helqg » 2008.03.30 12:49

чет аще ниче не работает

Код:

1
lt;?include('./time.php');include('./xhtml.php');header('Content-type:application/xhtml+xml;charset=utf-8');echo $prolog;if(!isset($_POST['nick'])||!isset($_POST['pswd'])||!isset($_POST['mail'])) exit('не все поля заполнены!<br/>'.$end);$nick=$_POST['nick'];$pswd=$_POST['pswd'];$mail=$_POST['mail'];if((mb_strlen($nick)>10)||(mb_strlen($pswd)>20)) exit('имя до 10 символов, пароль до 20<br/>'.$end);if(!eregi('[a-z0-9_]+',$nick)||!eregi('[a-z0-9_]+',$pswd)) exit('разрешено использовать только буквы латинского алфавита, цифры и знак подчеркивания в логине и пароле<br/>'.$end);if(!preg_match('/^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,6}$/i',$mail)) exit('Неверный адрес электронной почты'.$end);if(isset($_POST['info']))$info=mb_substr($_POST['info'],0,500); else $info='не указано';if(!$connect=mysql_connect('localhost','db_helqg','превед'))exit ('база в ауте :-(<br/>'.$end);mysql_select_db('db_helqg',$connect);$info=mysql_real_escape_string($info);echo 'Регистрация<br/>Логин: <b>'.$nick.'</b><br/>Пароль: <b>'.$pswd.'</b><br/>Почта:<br/><b>'.$mail.'</b><br/>О себе:<br/>'.$info.'<br/>';if(mysql_num_rows(mysql_query("SELECT `id` FROM `users` WHERE `nick`='$nick'"))) exit('логин занят<br/><a href="reg.php">обдумать</a><br/>'.$end);else {mysql_query("INSERT INTO `users`(`nick`,`pass`,`mail`,`mnenie`,`info`,`old`,`went`,`create`,`write`,`ban`,`exp`) VALUES ('$nick','$pswd','$mail','начинающий форумист','$info','".timestamp()."','0','0','0','0','0')"); echo 'запрос отправлен';}mysql_close($connect);echo '<br/><a href="index.php">к формам</a><br/>';slow();echo $end;?>
Gemorroj » 2008.03.30 13:07

Код:

1
span style="color: #0000BB"><?phpinclude('./time.php');include('./xhtml.php');// не забывай о пробелах, без них бывают проблемыheader('Content-type: application/xhtml+xml; charset=utf-8');echo $prolog;// убираем лишние пробелы$nick=trim($_POST['nick']);$pswd=trim($_POST['pswd']);$mail=trim($_POST['mail']);// проверяем не пустые ли переменныеif(!$nick || !$pswd || !$mail){exit('не все поля заполнены!<br/>'.$end);}if((mb_strlen($nick)>10) || (mb_strlen($pswd)>20)){exit('имя до 10 символов, пароль до 20<br/>'.$end);}if(!eregi('^[a-z0-9_]+$',$nick) || !eregi('^[a-z0-9_]+$',$pswd)){exit('разрешено использовать только буквы латинского алфавита, цифры и знак подчеркивания в логине и пароле<br/>'.$end);}if(!preg_match('/^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,6}$/i',$mail)){exit('Неверный адрес электронной почты'.$end);}if(isset($_POST['info'])){$info=mb_substr($_POST['info'],0,500);}else{$info='не указано';}if(!$connect=mysql_connect('localhost','db_helqg','превед')){exit('база в ауте :-(<br/>'.$end);}// Соединение с базой в UTF-8mysql_query('SET NAMES `utf8`');mysql_select_db('db_helqg',$connect);$info=mysql_real_escape_string($info);// желательно использовать <strong>, а не <b>echo 'Регистрация<br/>Логин: <strong>'.$nick.'</strong><br/>Пароль: <strong>'.$pswd.'</strong><br/>Почта:<br/><strong>'.$mail.'</strong><br/>О себе:<br/>'.$info.'<br/>';if(mysql_num_rows(mysql_query("SELECT `id` FROM `users` WHERE `nick`='$nick'"))){exit('логин занят<br/><a href="reg.php">обдумать</a><br/>'.$end);}else{mysql_query("INSERT INTO `users`(`nick`,`pass`,`mail`,`mnenie`,`info`,`old`,`went`,`create`,`write`,`ban`,`exp`) VALUES('$nick','$pswd','$mail','начинающий форумист','$info','".timestamp()."','0','0','0','0','0')");echo 'запрос отправлен';}mysql_close($connect);echo '<br/><a href="index.php">к формам</a><br/>';slow();echo $end;?>

на сколько я понимапю проблема была не в регулярке.
isset проверяет СУЩЕСТВУЕТ ли переменная, а она у тебя будет существовать, хоть и пустая.

Helqg » 2008.03.30 20:48

да вряд ли. Не фатально. У меня страница что то грузит не том объеме, в каком должна.

Код:

1
2
3
4
5
$test=mysql_query("SELECT `id` FROM `users` WHERE `nick`='$nick'");
echo 'Логин: ';
if(mysql_num_rows($test))
exit('занят<br/><a href="reg.php">обдумать</a><br/>'.$end);
else {

я даже так условие распаковал, но даже слово логин не появляется. В чем то блин серьезный косяк
Добавлено спустя   1 минуту  53 секунды:
isset заменил на !empty

Gemorroj » 2008.03.30 21:26

в данном коде ошибок нет. может быть ошибка спряталась в каком-нибудь файле, который инклудится в этот файл.

Helqg » 2008.03.31 11:23

в одном две переменные начала и конца. Второй сразу смотрит время, и потом вычитает его функцией slow(). В форум то я захожу все нормально.
Too many connections- для мускула это как ? Из моего скрипта или идет для всех баз хостинга?
Добавлено спустя   4 минуты  46 секунд:
о, вложения работают красиво.

Helqg » 2008.03.31 21:03

вроде заработало. Все с нуля переписал, не подглядывая :)

vandal » 2008.04.03 00:43

Gemorroj подскажи как вывести например последние две темы форума на главную страницу.форум на мускуле

Gemorroj » 2008.04.03 11:04

как можно на это ответить не зная структуры БД???
в общем случае примерно так

Код:

1
span style="color: #0000BB"><?php$sql = mysql_query('SELECT * FROM `tables` ORDER BY `id` DESC LIMIT 2');$result1 = mysql_fetch_assoc($sql);$result2 = mysql_fetch_assoc($sql);?>
вандал » 2008.04.03 14:23

ну я щас через час пример таблицы кину

Helqg » 2008.04.04 19:00

тяк.
Вот что хочется вспомнить. Как проверить, что юзер добавляет на сайт картинку? Просто проверить расширение файла?

Gemorroj » 2008.04.04 19:19

вобщем да. еще можно проверить функцией getimagesize

Код:

1
span style="color: #0000BB"><?php$arr = getimagesize('photo.jpg');//$arr[2]; // type?>

если $arr[2] =1, то это GIF. если 2, то это JPEG. если 3, то это PNG

Helqg » 2008.04.05 17:16

ага. Гуд

Helqg » 2008.04.09 19:56

интересный скрипт. Особенно как автор пишет о нем. :)

Gemorroj » 2008.04.09 21:46

чушь, видел уже. не существует универсальных функций.

vandal » 2008.04.12 20:40

админ расскажи поподробней о функции BASEDIR для чего и где её применять. и не грузит ли она сервер при многократном обращении этой функцией?

Gemorroj » 2008.04.13 08:22

вообще функции basedir нету. есть например basename — Возвращает имя файла из указанного пути.
Вероятно ты имел ввиду функцию realpath — Возвращает канонизированный абсолютный путь к файлу. Т.е. раскрывает символы /./ ../, так же убирает лишние /
Насчет того, как сильно она грузит сервер у меня информации нет, но думаю не сильно.

vandal » 2008.04.13 15:45

нет именно ".BASEDIR." . Ну вот например есть у нас две страницы: одна лежит в корне сайта index.php . а другая лежит в папке dir/main.php . есть еще папка со стилем в которой лежит низ страницы theme/foot.php .  Вот нам надо вывести на этих двух страницах например баннер который лежит в theme/img/banner.gif . написав в foot.php код баннера например <img src="theme/img/banner.gif"/>  он не будет виден ни на одной странице а если мы добавим этот BASEDIR то все станет на свои места. например напишем в foot.php следующее <img src="".BASEDIR."theme/img/banner.gif"/> теперь этот баннер будет и на index.php и на dir/main.php

Gemorroj » 2008.04.13 16:04

в твоем случае это константа, вероятно прописана в конфиге.
сделать ее можно как и любую другую константу, а именно

Код:

1
span style="color: #0000BB"><?phpdefine('BASEDIR','нужное значение');?>

и в дальнейшем пользоваться этой константой с указанным значеием.

к слову чтобы получить текущую папку, можно воспользоваться следующей конструкцией

Код:

1
span style="color: #0000BB"><?php$basedir = dirname($_SERVER['PHP_SELF']);?>

и еще я бы рекомендовал просто писать путь к баннеру от корня. Т.е. не theme/img/banner.gif, а /theme/img/banner.gif (в начале слеш)

Helqg » 2008.04.17 20:39

Ааа. Я очнулся. Форум надо отложить в ящик или я умру за ним... Надо че нить другое попробывать. Вот к примеру крестики-нолики.
Понятно, что сложно но надо попробывать.
Добавлено спустя   6 минут  14 секунд:
так, нолики значит , крестики...
страница, на ней 9 символов- 9 переменных, допустим =. Сначало ходит игрок - один символ меняется на +. Точнее значение переменной. видать надо сессию будет ляпать. Мда. Такс. Затем скрипт ему отвечает, пусть пока отвечает random. И
после чьего то хода проверка на 8 выигрышных комбинаций и на ничью. Вроде так
Добавлено спустя   9 минут  16 секунд:
если есть умные мысли буду рад :)

Helqg » 2008.04.17 20:51

неумным в особенности

Gemorroj » 2008.04.17 21:01

нарисуй форму игры в эти крестики нилики, я что-то сообразить не могу именно как форму нормальную сделать.

Helqg » 2008.04.17 21:11

чуть не умер. Скачал скрипт у тебя загруз центра, так карта к бобруйску.
Это кадры конечно... Дорога для разбега... Апстена. :)
Добавлено спустя   3 минуты  14 секунд:
а нафиг мне форма? Все в сессии 9 переменных. get, post- их введут сразу выигрышную партию. Пусть будет на голых ахрефах

Gemorroj » 2008.04.17 21:52

не, я от формы отталкиваюсь. без нее не соображу.

Helqg » 2008.04.18 10:33

ну может и можно. Это надо глянуть учебник по html. Если для ссылок возможно- имя значение , то можно и через форму.
Добавлено спустя   1 минуту  10 секунд:
если нет, то 9 форм.

Helqg » 2008.04.18 23:11

все таки без форм :). //
дан массив. Как найти чего больше плюсов или нулей? Два цикла и сравнение? Может есть функция на поиск количества заданного элемента?

Gemorroj » 2008.04.19 09:53

ну наверное нужно будет лучше просто прописать все возможные варианты, их не так много, как мне думается. и сравнивать данные в сессии с готовыми вариантами. просто и надежно.

Helqg » 2008.04.19 13:54

варианты это на выигрыш. А проблема в том, чей ход. И мне надо знать чего больше в массиве. Крестиков или ноликов...

Gemorroj » 2008.04.19 15:56

нет, порыл мануал, такой функции нет. можно выбрать КЛЮЧИ массива с определенными параметрами, но не из значения. Вообще, ты изначально идешь не верным путем. Сначало нужно ЧЕТКО представлять что ты хочешь сделать. Ну я по крайней мере не видя формы, представить дальнейшую разработку скрипта не могу.

Helqg » 2008.04.19 21:23

ну да. Чето уже написанно. Ща прочитаю, может понимая что написал %) увижу ошибки:
-стартует сессия
-проверка не передан ли скрипту ход игрока, то есть нолика. Если так и есть то объявляем переменную сессии с именем 'aнужное число'
-цикл 9 раз. В нем условие существует ли переменная от а1 до а9. Если существует то элементу $а[нужное число] присваиваем значение нужной сессии иначе равна _

Helqg » 2008.04.19 21:34

-проверяем ничью, то есть имеются ли в массиве элементы _
-проверяем победу. Лучше функцией. Тут правда будет проблема, если нельзя global $a.
-если ход соперника, то в массиве случайный элемент _ превращается в крест. Затем выводятся все 9 элементов массива, сбивается переменная хода скрипта.
- если же не ход соперника, то двумя циклами и условием "если данный элемент массива равен _" выводятся ссылки на пустые поля и символы содержания элемента массива, если не пустые. Создается сессия на ход соперника.
Добавлено спустя   2 минуты  47 секунд:
ыгыгы. Стопудово не будет работать

Gemorroj » 2008.04.20 12:10

я не понял)

Helqg » 2008.04.20 20:47

Код:

1
span style="color: #0000BB"><?phpsession_start();if(isset($_GET['a'])){$z='a'.$_GET['a'];if(!isset($_SESSION[$z]))$_SESSION[$z]='0';}for($i=0;$i!=9;$i++){if(isset($_SESSION['a'.$i]))$a[$i]=$_SESSION['a'.$i];else$a[$i]='_';}for($i=1;$i!=9;$i++){$empty.=$i;if($a[$i]=='_') $hod+=1;}if($hod==0) { session_destroy();exit ('ничья');}function win_lose($znak) {global $a;for($i=1;$i!=7;$i+3){if($a[$i]==$a[$i+1]&&$a[$i]==$a[$i+2]) { session_destroy();exit('победил'.$znak); }if(($a[1]==$a[5]&&$a[5]==$a[9])||($a[3]==$a[5]&&$a[5]==$a[7])){session_destroy();exit('победил'.$znak);}}win_lose('0');win_lose('x');if(isset($_SESSION['enemy'])){ $znachenie=mb_strlen($empty)-1;mt_srand(time());$enemy=mt_rand(0,$znachenie);$ready=$empty[$enemy];$a[$ready]='x';$_SESSION['a'.$a[$ready]]='x';for($i=1;$i!=7;$i+3){for($j=$i;$j!=3;$j++){echo $a[($j+$i-1)].' ';}echo '<br/>';}session_unregister('enemy');echo 'Оппонент сделал ход!<br/><a href="index.php">обновить</a><br/><a href="index.php?end=1">заново</a><br/>'; }else{for($i=1;$i!=7;$i+3) {for($j=1;$j!=3;$j++) { $v=$j+$i-1;if($a[$v]=='_') echo '<a href="index.php?a='.$a[$v].'">_</a> ';elseecho $a[$v].' ';}echo '<br/>';}$_SESSION['enemy']=true;}?>

Добавлено спустя   2 минуты  47 секунд:
что то h2m тормозит. Пока тестирование откладывается
Добавлено спустя   8 минут  17 секунд:
пока правда без Заголовков, и без рестартов... Ну это уж как дело пойдет

Helqg » 2008.04.21 17:58

свежее: забыл одну }, не объявил $hod, $empty.
главный косяк в функции :) всегда выигрывает ноль. Гг. Совсем забыл про $znak
Добавлено спустя   7 минут  33 секунды:
блин. Превышенно время выполнения :) как так. Сверх оптимизированный код. Практически без циклов

Helqg » 2008.04.21 18:26

http://www.freelancer.com.ua/programming-languages/2006/08/04/
искал правда совсем не это, но внимание остановило. Особенно как в комментах мастера C не признают других языков.
Добавлено спустя   1 минуту  44 секунды:
if(($a[$i]==$a[$i+1])&&($a[$i]==$a[$i+2])&&($a[$i]===$znak))

Как это записать проще? Ужос. Что то мне кажется через цикл будет совсем не проще.

Gemorroj » 2008.04.21 18:31

ну не свех уж... =)
здесь же в тестах показано было, что isset относительно медленная функция
так же лучше заменить for($i=1;$i!=9;$i++) на for($i=1;$i<9;$i++) (во всех циклах)

Helqg » 2008.04.21 18:32

условие в условии... Гм

Helqg » 2008.04.21 18:44

мда. Надо че то думать с проверкой на победу. Execution time не хватает однако

Helqg » 2008.04.22 14:57

http://hitfounder.livejournal.com/7002.html
свежачок. Интересно что C не рассматривают как общий язык, а делят на 3 :) неужели такие разные

Gemorroj » 2008.04.22 16:01

дада, C такой. Имел смелось ознакомиться в общих чертах с C и C++, могу подтвердить что отличаются, а C# на сколько я знаю еще сильнее отличается.
Интересно еще что JAVA так сильно всех опережает. Это на западе на самом деле так, у нас несколько другая ситуация. У нас бы Delphi повыше был, да PHP думаю тоже, а вот JAVA наоборот, как мне кажется была бы не на первом месте. И уж точно не 20% у нее было бы.
Еще если посмотреть тенденцию, то число PHP кодингистов постоянно растет =) а вот JAVA кодингистов все меньше. Еще почему-то не увидел я тут ASP. Ну не верю я что им так мало народу пользуется. Еще момент... Вызывает сомнение что на C++ пишут меньше чем на чистом C. Вероятно подсчет имеет некоторую погрешность. А вообще инфа интересная =) Хотя сравнивать скажем PHP и Бейсик, как мне кажется не совсем корректно =)

Helqg » 2008.04.22 20:08

Работает! Ужос. Скока я косяков написал сначало...
пока работает :) правда не решен еще вопрос с функцией на победу, но это не серьезно. Главное сессии заработали

Gemorroj » 2008.04.22 20:19

ну выложи рабочий скрипт. т.е. с ФОРМОЙ =) а так для меня это как кусок мяса. оно не живое)

Helqg » 2008.04.23 12:18

http://www.disciples3.ru/news/news_rus_1.htm

когда же она выйдет? Скорей бы. Самая мною ожидаемая игра. Обещали в том году:) потом на месяц отложили, а потом еще на год. И комп еще надо купить...

Helqg » 2008.04.23 18:33

Код:

1
span style="color: #0000BB"><?phpif(isset($_GET['end'])){session_destroy();unset($_GET['a']);}session_start();include('./work.php');header('Content-type:application/xhtml+xml;charset=utf-8');echo $prolog;if(isset($_GET['a'])){$z='a'.$_GET['a'];if(!isset($_SESSION[$z]))$_SESSION[$z]='0';elseecho 'старые координаты, пропуск хода!<br/>';}for($i=0;$i<10;$i++){$ses='a'.$i;if(isset($_SESSION[$ses]))$a[$i]=$_SESSION[$ses];else$a[$i]='_';}function win_lose($znak) {global $a;for($i=1;$i<8;$i+=3) { if($a[$i]==$znak && $a[$i]==$a[$i+1] && $a[$i+1]==$a[$i+2]){session_destroy();exit('Победил<strong> '.$znak.'</strong>'.$last);} }}win_lose('0');win_lose('x');$empty='';$hod=0;for($i=1;$i<10;$i++){if($a[$i]=='_') {$empty.=$i;$hod+=1;}}if($hod==0) { session_destroy();exit ('Ничья!'.$last);}if(isset($_SESSION['enemy'])){ $znachenie=mb_strlen($empty)-1;mt_srand(time());$enemy=mt_rand(0,$znachenie);$ready=$empty[$enemy];$a[$ready]='x';$uzhos='a'.$ready;if($_SESSION[$uzhos]='x')echo 'enemy plotting strategy!</p><p align="center"><strong>';for($i=1;$i<8;$i+=3){for($j=1;$j<4;$j++){echo $a[($j+$i-1)].' ';}echo '<br/>';}session_unregister('enemy');echo '</strong>Оппонент сделал ход!<br/><a href="index.php">далее</a>'.$last; }else{echo 'Ваш ход:</p><p align="center"><strong>';for($i=1;$i<8;$i+=3) {for($j=1;$j<4;$j++) { $v=$j+$i-1;if($a[$v]=='_') echo '<a href="index.php?a='.$v.'">_</a> ';elseecho $a[$v].' ';}echo '<br/>';}$_SESSION['enemy']=true;echo '</strong>'.$last;}?>

Добавлено спустя   1 минуту  36 секунд:

Код:

1
span style="color: #0000BB"><?php$prolog='<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head><title>авторизация</title></head><body><p align="left">';$last='</p><p align="center">-=-=-</p><p align="left"><a href="index.php?end=1">заново</a><br/><a href="../">на главную</a></p></body></html>';?>

Добавлено спустя   5 минут  55 секунд:
еще надо все таки будет сделать проверку на победу. И неплохо бы как нить продумать разум оппоненту.

Gemorroj » 2008.04.23 19:46

ыыыы)
круто))
PHP парсер ругается просто благим матом, но это хня, игрушка прикольная =))
ща тоже поковырять ее попробую)

Gemorroj » 2008.04.23 20:29

не считает знакинаискось. ну тоесть так
--x
-x-
x--

и еще, что это значит? - enemy plotting strategy!? =)

Helqg » 2008.04.24 06:18

я ж говорю. Он совсем никак не считает. За это будет отвечать функция win_lose. "enemy plotting strategy" это просто любимая фраза из игры с sega. "враг разрабатывает стратегию"

Helqg » 2008.04.26 17:50

мда. Крестики нолики это конечно интересно, но надо пробывать сделать для 2 игроков. Человеков. Только как? как узнать кто с кем играет. Надо какую то базу. Допустим таблица. Поля: кто играет, с кем, ээ. Чорт. Надо глянуть скрипты каких нить игр

Helqg » 2008.04.27 22:06

дело вроде двинулось. Уже продумал немного. Будут сессии и база с 14 столбцами. Надеюсь в задумке нигде не ошибся :)

Gemorroj » 2008.04.27 22:15

довай)) игрушка карошая)

Helqg » 2008.04.29 19:58

вот ведь... Проблемко... И че я сразу в таблице id не сделал. Терь переделывать. Это ведь так удобно, искать игру по точному столбцу, а не по нику то ли создателя то ли подключившегося

Gemorroj » 2008.04.29 20:11

ты имеешь ввиду присвоить уникальное значение переменным отвечающим за крестики и нолики? хм, возможно) тебе видней ;)

Helqg » 2008.05.03 23:15

чорт. Как всегда. Ниче не понятно- ниче не работает. : ( индексовая страница после заполнения формы выводит чистую страницу:
index.php

Код:

1
lt;?session_start();include('./work.php');header('Content-type:application/xhtml+xml;charset=utf-8');echo $prolog;db_connect();if(!isset($_POST['nick'])&&!isset($_SESSION['nick']))error('<form action="index.php" method="post">Введите ник:<br/><input type="text" name="nick" maxlength="10"/><br/><input type="submit"/></form>');if(!isset($_SESSION['nick'])&&isset($_POST['nick'])){$zanyat=mysql_query("SELECT * FROM `battle` WHERE `starter`='".$_POST['nick']."' OR `enemy`='".$_POST['nick']."'");if(!mysql_rows($zanyat)){$_SESSION['nick']=$_POST['nick'];echo 'Ваш ник: '.$_SESSION['nick'];}else error('Ник пока занят!');}if(isset($_SESSION['id_game'])){echo 'вы уже играете!<br/><a href="fight.php">к бою</a>';exit($final);}$games=mysql_query("SELECT * FROM `battle` WHERE `game`='0'");echo '<br/>'.mysql_rows($games).' игр <br/>';while(mysql_array($games)) {echo '<a href="fight.php?id='.$games['id'].'">'.$games['starter'].'-'.$games['time'].'</a><br/>';}echo '<a href="create.php">создать</a><br/>'.$final;?>

Добавлено спустя   1 минуту  58 секунд:
work.php

Код:

1
lt;?$up=array_sum(explode(' ',microtime())); // время$prolog='<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head><title>авторизация</title></head><body><p align="left">';$final='</p><p align="center">-=-=-</p><p align="left"><small>['.slow().']</small></p></body></html>';function slow() {global $up;return round(array_sum(explode(' ',microtime()))-$up,4);}if(!$connect=mysql_connect('localhost','db_helqg',':)'))exit ('База в ауте:-('.$final);mysql_select_db('db_helqg',$connect);function error($mess) {global $final;session_destroy();echo '<strong>'.$mess.'</strong>';exit($final);}?>
Gemorroj » 2008.05.04 10:15

а таблицы? =)
Добавлено спустя   3 минуты  32 секунды:
еще тут PHP5 нужен. у тебя он?

Helqg » 2008.05.04 12:19

Код:

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `battle`
(
`id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT,
`game` INT UNSIGNED NOT NULL,
`starter` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`enemy` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`hod` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`time` INT UNSIGNED NOT NULL,
`a1` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`a2` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a3` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a4` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a5` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a6` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a7` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a8` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a9` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
PRIMARY KEY(`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

******
php5 точно. Всякие mb_ тоже поддерживает

Helqg » 2008.05.04 13:17

убейте меня :) ошибка в моем лучшем стиле
mysql_rows();
mysql_num_rows();

Helqg » 2008.05.04 14:01

mysql_array();
mysql_fetch_array();
А так в целом все работает :)

Helqg » 2008.05.06 20:10

страшный код. Гг. Возможно ли удалить кусок гет массива?
unset($_GET['myhod']);
не пашет :) а так приходится к неправде приравнивать

Helqg » 2008.05.06 20:30

Сцуко, он не приравнивается к неправде. Честный, непослушный GET массив...
: )

Gemorroj » 2008.05.07 09:26

почему??? GET - это обычный массив, и unset тоже должен работать.

Helqg » 2008.05.07 10:25

да, чорт с ним. Была проверка на неверный ввод, теперь проверки нет. Но если ввести не верно то и выполняться ничего не будет.
пусть так будет пока.

Helqg » 2008.05.07 21:58

ээ... Где кнопка выложить файл?

Helqg » 2008.05.07 22:11

фиг с ней. href

Gemorroj » 2008.05.07 22:19

Helqg написал:

ээ... Где кнопка выложить файл?

жми ответить там будет)

Helqg » 2008.05.08 06:08

ну че? Ну как? Я там даже прочитайменя написал : )

Gemorroj » 2008.05.08 13:17

круто))) рубался с IE и Оперы))
еще кнопку "обновить" сделай когда ждешь ход соперника)

nokia70 » 2008.05.08 15:20

день добрый подскажи как мне обойти защиту по ай пи.у меня есть скрипт который бродит по сайтам и собирает информацию.а не могу сделать чтоб он передавал ай пи если не сложно подскажи или в icq 8100966 за деньги допиши эту возможность

Gemorroj » 2008.05.08 15:52

nokia70 написал:

а не могу сделать чтоб он передавал ай пи

поясни.

nokia70 » 2008.05.08 16:00

скрипт который подделывается под браузер мобильного телефона как сделать чтоб он был с ай пи на сайте стоит  проверка по ай пи и дальше этой защиты я пройти не могу не пропускает по ай пи
Добавлено спустя   5 минут  7 секунд:
можешь написать в icq 8100966 в офф быстрее все обговорим или ты только на форуме

Gemorroj » 2008.05.08 16:41

только форум.
надо лазить через прокси.

nokia70 » 2008.05.08 17:00

нужно делать маскировку (или фальсификацию) ip адреса
Добавлено спустя   1 минуту  10 секунд:
скрипт на перле

Gemorroj » 2008.05.08 17:15

аааа... если перл, то я пасс.

nokia70 » 2008.05.08 17:30

а кто ни будь может подсказать
Добавлено спустя   1 минуту  35 секунд:
так если на php сделать какой ни будь модуль. Подключить

Helqg » 2008.05.08 22:08

Эхь где б взять скрипт какой нить онлайн стратежки... Мысли то конечно есть, но страшно. Вот так пишешь- пишешь и оп , не баланс. Нет баланса, нет интереса. cswap.org так и сдох. Были у него хорошие задумки, но получилась фигня и дорабатывать он не стал : (

Gemor » 2008.05.09 01:31

Что касается этих игр, очень важна именно задумка, проработка деталей сюжета игры. А уже потом непосредственно кодинг.
А вообще мое имхо. Жуткий бред эти игры)  играть в это, по-моему невозможно в принципе)

Helqg » 2008.05.09 09:10

гг. Да страшное чувство, что бездарно убиваешь время. Есть немного. Но раньшеш играл. И с тех пор уважение к ним.

Helqg » 2008.05.10 20:59

интересная статья

Kir » 2008.05.12 18:23

Приветствую! Помоги пожалуйста с импортном таблицы, точнее я не могу eе заполнить, вoт пример

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE TABLE `top_ly4` (
`id` int(11) NOT NULL auto_increment,
`title` TOP,
`pass` FcNdNADZ,
`email` kir_2380@mail.ru,
`link` top.ly4.h2m.ru,
`about` text NOT NULL,
`date` date NOT NULL default '0000-00-00',
`today` int(11) NOT NULL default '0',
`yesterday` int(11) NOT NULL default '0',
`bef1yes` int(11) NOT NULL default '0',
`bef2yes` int(11) NOT NULL default '0',
`allday` int(11) NOT NULL default '0',
`counthost` int(11) NOT NULL default '0',
`1host` int(255) NOT NULL default '0',
`2host` int(255) NOT NULL default '0',
`3host` int(255) NOT NULL default '0',
`ip1` 77.222.34.80,
`ip2` text NOT NULL,
`ip3` text NOT NULL,
`ip4` text NOT NULL,
`cin` int(11) NOT NULL default '0',
`allin` int(11) NOT NULL default '0',
`out` int(11) NOT NULL default '0',
`allout` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=0 ;

что мне надо прописать и где? CREATE TABLE 'users"( /// вoт вмeсто  users нaдо нaзвaниe таблицы? 'title' text NOT NULL, /// вмeсто чeго мне надо прописать заголовок вместо title или text NOT NULL, 'pass' text NOT NULL, и так далее... И какой pass прописaть что выдан для входа в базу данных или новый...  На x2м написан пример обращения и базе данных из php скриптa: $dbhost="localhost"; $dbname="..."; $dbuser="..."; $dbpass="..."; $link=mysql_connect($dbhost,$dbusur,$dbpass) or die ("Не могу подключится к серверу БД"); mysql_select_db($dbname,$link) or die ("Не могу подключится к БД");вот куда мне это все вставить? Вообще запутался... Что куда? Помоги пожалуйса разобраться.

Gemorroj » 2008.05.12 18:36

у кого еще здоровые нервы, ответте пожалуйста.. =)

Gemorroj » 2008.05.12 18:57

по поводу статьи... ну да, ну да... приятно почитать умных людей)
я за модульное программирование) пример - Gmanager (http://wapinet.ru/gmanager/) на мой взгляд все можно сделать функциями
да, там используются классы (PclZIP, Tar и др) но не суть, суть в файле functions.php

Helqg » 2008.05.12 19:10

Эээ... Это круто. Особенно создание таблицы.
Ответы
1.Таблица у тебя однозначно косая. Пароль кстати поменяй, мало ли.
2.Да. Вместо users название таблицы.
3.Title-название столбца таблицы. Text-тип ячейки. А not null- значит, что не может быть пустой.
4.Пароль от базы данных используется при подключении к базе данных, никак не при создании таблицы.
5. это все вписывается прямо в php код. Но до вызова какой ли функции работающей с бд.
6. Знания в мозг. Руки печатать.

1:0 в пользу знатоков

Kir » 2008.05.12 19:22

Helqg так я пробывал импортировать пишут "Импорт дaмпа зaпушeн. Вывод команды: ERROR 1064(42000) и дальше что то на анг. Короче понял что ошибка. a  как сделать чтобы таблица была не косая.?..
Добавлено спустя   5 минут  55 секунд:
Сейчас еще зашел в index там настройки, вписaл данные и выдало ERROR, на других страницах написано удалите Instal, так, a  я не знаю еще что с базой? a его же после удалять как с базой будет все нормально, и как понять что я подключился?

Gemorroj » 2008.05.12 19:40

перечитай ридми скрипта во первых.
во вторых, приведи пример таблицы которую ты НЕ трогал.

Kir » 2008.05.12 20:19

Gemorroj, так a в ридми не чего нет вот http://top.ly4.h2m.ru/readme.txt , вoт пример таблицы которую не трогал http://top.ly4.h2m.ru/tables.sql, Gemorroj помоги пожалуйса, понять  как она заполняется ,что бы не была кривая...

Gemorroj » 2008.05.12 20:28

вот и заливай которую ты НЕ трогал.
а для добавления записей в БД нужно писать отдельно SQL запросы.

Kir » 2008.05.12 20:36

Так в в саму таблицу не чего не надо писать? Я имею ввиду название таблицы, title,  email,  и.т.д.

Gemorroj » 2008.05.12 21:13

Gemorroj написал:

вот и заливай которую ты НЕ трогал.

Kir » 2008.05.13 16:18

Все равно не хочет работать? Когда заполняю instal.php dbhost, dbuser, и.т.д пишут что ошибка установки  скрипта... попробуйте еще раз... Может обращение к базе в скрипте не для h2m или даже не знаю, что...
Добавлено спустя   5 минут  21 секунду:
Gemorroj,  a надо какое то время после отправки файла sql или cкрипт сразу должен запускатся...?

Kir » 2008.05.14 17:06

Все разобрался с topoм, всем спасибо, там все проще чем я думал, таблицу отправлять самому не надо, в instal прописал данные и все, у меня заработало. . .

Helqg » 2008.05.14 19:35

ну вот... Хорошо хоть install.Php изучил.

Helqg » 2008.05.15 10:50

ща в rogue battle копаюсь. Полезно. Хоть с cron'ом научусь ладить. Заодно гляну как там классом к базе коннектят.

Helqg » 2008.05.15 12:40

и значит вопрос. Ошибка соединения с базой.
Как в классе увидить массив? global?

Helqg » 2008.05.15 19:15

: )  под снос. Ну невозможно это. Включается главная. Она достает header.Php , в нем

Код:

1
2
3
4
5
if ( $isadmin ) {
$incloc = '../';
}
if ( !$incsetup ) {
require( $incloc . 'includes/inc-setup.php' );

как это понимать? Че там будет инклудиться...

Helqg » 2008.05.15 19:17

забыл добавить.
Переменной incloc в главной не пахнет. Откуда она идет непонятно. Че будет если она неправда, даже подумать страшно.

Gemorroj » 2008.05.15 19:39

вероятно как-то так надо.

Код:

1
span style="color: #0000BB"><?phpif ( $isadmin ) { $incloc = '../';}else{$incloc = null;}if ( !$incsetup ) { include( $incloc . 'includes/inc-setup.php' );}?>

хотя если глобальные переменные отключены, то и так нормально.

Helqg » 2008.05.15 22:03

гм. Странные вещи творятся. require(n);
видать с кодировками страшные проблемы. : (

Helqg » 2008.05.16 13:28

mysql_pconnect();
знаешь че нить серьезное об этом?

Gemorroj » 2008.05.16 13:42

сложный вопрос. это значит постоянное соединение, т.е. она само не закроется, пока ты сам его не закроешь (mysql_connect по умолчанию само через минуту закрывается)
вот целесообразность посоянных соединений под вопросом, одни говорят что это хорошо, другие что плохо...
скажем форум. эта страница у меня открыта уже больше минуты, при моем следующем переходе будет заново открываться соединение с mysql, а еслиб тут использовалось mysql_pconnect, то использовалось бы мое старое соединение. что позволяет снизить нагрузку на mysql сервер.

Helqg » 2008.05.16 19:19

а в чем же тогда минус? Если так все хорошо его б и использовали везде. А так везде пишут хорошо но вот встретил я его пока первый раз в wab'овской мафии

Helqg » 2008.05.16 19:24

dizzy однако шарил. Мафию написал, данетки, оживил цивилизацию... а потом поставил все на коммерческие рельсы, и как я понимаю продал и свалил : )

Gemorroj » 2008.05.16 19:38

из перечисленного тобой я только мафию разгребал. ужас ;)
проблема как раз в том, что соединения не будут закрываться и со времением на сервере будет висеть куча лишних процессов.
я на этом форуме, например, сознательно сделал непостоянное соединение. постоянное можно применять на посещаемых ресурсах, типа чатов, ну форумов тоже, только посещаемых =)))

Helqg » 2008.05.16 21:16

отсюда хочется задать вопрос. Постоянное соединение оно ведь одно? Или уникально каким нибудь образом для каждого юзера... Ну незнаю каким, каким нибудь...
А так по идее действительно удобно для посещаемых ресурсов. Но чувствую на бесплатных хостингах такие фокусы прикрыты.

Caspеr » 2008.05.17 07:47

#253, прикрепишь этот скрипт к чату?:) чтоб ник не надо было придумывать всё время, а брались из базы чата, т.е. текущий ник пользователя в чате

Gemorroj » 2008.05.17 09:07

Helqg, соединение с SQL-сервером не будет закрыто, когда работа скрипта закончится. Вместо этого, оно останется рабочим для будущего использования (mysql_close() также не закрывает постоянные соединения) вот... даже mysql_close не закрывает такие соединения..) оно одно для всех обращений к БД с одинаковыми логином и паролем.
Добавлено спустя    52 секунды:
и да... на бесплатных хостингах такое соединения запрещено)

Helqg » 2008.05.17 19:25

Caspеr написал:

#253, прикрепишь этот скрипт к чату?:) чтоб ник не надо было придумывать всё время, а брались из базы чата, т.е. текущий ник пользователя в чате

разумная мысль. Гм. Подумаю. Возможность использовать любую базу юзеров... Очень занятно : )

Helqg » 2008.05.17 19:28

гемор, ты кстати проверь, точно ли мондатрам можно файлы выкладывать. Что я не вижу этой радости.

Gemorroj » 2008.05.17 19:33

Helqg, то что здесь, на странице - это урезанный ответ, жни на ссылку Ответить там расширенные функции.

Helqg » 2008.05.17 21:41

да ты уж говорил это. Может я че в профиле не то отключил. Ща гляну

Helqg » 2008.05.17 21:47

да нет там такого. Где то косяк. Раньше помню выгружал файлы, теперь фига

Gemorroj » 2008.05.17 22:12

исправил)

Casper » 2008.05.18 00:37

:):):)

Helqg » 2008.05.18 14:54

трави имя переменной сессии, и какие переменные еще передаются важные?

Gemorroj » 2008.05.18 14:56

ты это о чем? =))

Helqg » 2008.05.18 17:38

да это я с призраками общаюсь...
Им надо к чату дополнение. Я аще сроду не лазил в чатах. Чем там авторизация передается?

Helqg » 2008.05.18 17:46

Кто в английском много понимает?
здесь есть че ценное?

Gemorroj » 2008.05.18 17:54

phpclasses.org отличный сайт. давно там зареган. регулярно смотрю что шлют мне на почту. в основном хлам конечно, но есть и очень интересные класссы. думаю в архиве скриптов сделаю раздел с классами всякими. далеко не все думаю знаю где нужно скачивать тот же PEAR.php или pclzip.php

Casper » 2008.05.19 07:28

Там нет сессий. Вот файл регистрации

Helqg » 2008.05.19 13:20

гг. Здорово. 2 вопроса.
номер юзера с паролем так и передаются в адресной строке на каждой странице?
Чето не понял, что за ref? точнее для чего он?

Gemor » 2008.05.19 14:29

да, так и передаются =)
$ref нужна чтобы не кешировались страницы.

Helqg » 2008.05.19 14:57

то есть она меняется на каждой странице?

Gemor » 2008.05.19 15:16

да, там rand(xxx,xxxxxx); просто шняга кароч

Helqg » 2008.05.19 17:08

сам не проверял, но возможно и работает : ) только создай отдельную папку для него, а таблицу кинь к базе чата.

Helqg » 2008.05.19 23:57

ща джонцмс скачал. Надо будет глянуть че там за чудеса php классов. Поправите меня если что. Только это уже завтра...

Helqg » 2008.05.20 10:11

итак, что то вроде dos атак...

Helqg » 2008.05.20 10:21

итак, перед классом идет проверка на константу. Я долго думал че это, решил чтобы файл не включали отдельно, только includom.///

так, переменные... Первая ip long. Че такое? Ща погуглю.

Helqg » 2008.05.20 10:40

очень интересно, но мало понятно здесь

остальные вроде понятные. : )

Далее идет конструктор, понятия не имею чем он отличается от метода, ну да ладно.
Если человек пришел с прокси- то ip все равно будет его(у меня так написано : ) ), иначе Http_Via. че за виа хз... Ну тоже видно адрес. Иначе будет обычный remote_addr. либо умри...

Затем адрес превращается в длинный вариант, ща надо глянуть что за функция.

Helqg » 2008.05.20 10:49

так и не понял зачем нужен этот длинный адрес, ну по ходу может пойму.

Caspеr » 2008.05.20 10:51

А таблицы изменены или старые можно оставить? Я их раньше залил в базу чата.

Helqg » 2008.05.20 10:52

так, дальше. Если включен антифлуд: вызываем метод проверки на флуд. Если флудят- срочно Die().

Helqg » 2008.05.20 11:04

так, дальше метод reqcount. Объявляем директорию выше в глобальную переменную.
Создаем временный пустой массив.
Переменную запросов приравниваем к 1.
Открываем файл флудеров. Ставим его на недоступность для других. Зачем оно надо- непонятно.
Время. Цикл, читаем построчно файл. Unpack. Первый раз вижу. Гм.
Добавлено спустя   1 минуту :

Caspеr написал:

А таблицы изменены или старые можно оставить? Я их раньше залил в базу чата.

таблицы не трогай. Должно все сойтись.

Helqg » 2008.05.20 13:27

unpack

вещь довольно непонятная. здесь
вроде более понятно, но опять я в ауте.

Я так понимаю получается массив с 2 частями адресом и временем.

Условие: если время- время последнего запроса больше заданного, то все нормально, смотрим следующую строку в файле.

Иначе сравниваем адреса, если они сходятся переменную плюсуем на 1.

записываем кусок в временный массив tmp.

Цикл заканчивается. Указатель файла находится в конце, перекидываем его в начало. Файл чистим.

затем весь список записываем. И в конце приписываем данные зашедшего юзера. Переменную метода превращаем в видимую для класса.

Helqg » 2008.05.20 13:39

мда. Однако я никак не въеду в эти зашифрованые файлы...
Как это дело применяют. Гм. Создается объект, я так думаю при его создании уже идет проверка на флуд. Затем в core.php находится левый адрес и превращается в нормальный. :-/ как то так.

Helqg » 2008.05.20 13:42

причем дело с адресом никак не связанно с проверкой на флуд...

Caspеr » 2008.05.21 18:37

В индексе ошибка. Не хочет эта станица загружаться:( может тебе дать доступ к директории с чатом?

Helqg » 2008.05.21 20:54

да погодь. Ща я гляну че там. Я сам то скрипт не пробывал, переписал только пару строк.

Helqg » 2008.05.21 21:18

в work.php в

Код:

1
$google=mysql_query("SELECT * FROM users WHERE user='".$_SESSION['gamer']."'");

вот так надо. Кавычку надо.

Casреr » 2008.05.22 21:50

Теперь нормально, но при входе выдает: отсутствуют параметры для входа.

Caspеr » 2008.05.22 21:57

А! Там, по чату в ссылках не пишется ник. Там id. Ссылка имеет вот такой вид: ...file.php?id=8&ps=password&ref=1234 Надо выяснить какой ник у пользователя с таким id

Casper » 2008.05.22 22:04

Ещё файлик

Helqg » 2008.05.23 13:30

Casреr написал:

Теперь нормально, но при входе выдает: отсутствуют параметры для входа.

я не знаю что ты там хочешь искать и выводить, но не работает так как скрипт ждет переменные id и pass.

Helqg » 2008.05.23 13:40

то есть либо в скрипте править

Код:

1
$_GET['pass'] - $_GET['ps']

либо ссылка из чата должна выглядеть вот так:

Код:

1
echo '<a href="./papka_s_igroy/index.php?id='.$_GET['id'].'&amp;pass='.$_GET['ps'].'">go!</a>';
vandal » 2008.05.24 09:20

привет чуваки подскажите как вот при запросе к мускул например поиска слова Чайник мускул( в мускуле например у нас есть слова чайник но с маленьких букв или например ЧайНик) искал и выдавал  его в любом регистре?

Gemorroj » 2008.05.25 13:30

Вообще если сравнение таблицы utf8_general_ci, то поиск должен быть регистронезависимый, но как это часто бывает, регистронезависимый он лишь в теории, на практике вылазят всякие траблы.
Во первых установи сравнение utf8_general_ci и посмотри как выбираются данные, если не поможет, то есть другой вариант, делать следующий запрос:

Код:

1
SELECT * FROM `table` WHERE UPPER(`keywords`) = UPPER('4to_nado');

где keywords - это имя таблицы в которой ищем запись

vandal » 2008.05.25 21:17

у меня вот такой запрос   

Код:

1
$q = mysql_query("SELECT COUNT(*) FROM `main_table` WHERE `body` LIKE '%".$_GET['word']."%';");
Gemorroj » 2008.05.25 21:22

Код:

1
$q = mysql_query('SELECT COUNT(*) FROM `main_table` WHERE UPPER(`body`) LIKE "%'.mysql_escape_string(strtoupper($_GET['word'])).'%";');
vandal » 2008.05.25 21:29

мля всё равно не выдает. слово например Чайник не выдает а чайник выдает

Gemorroj » 2008.05.25 22:48

Проверил на локалхосте, работает. Проверь, правильно ли ты код записал? UPPER(`body`) - есть такое? strtoupper($_GET['word']) - тоже есть? В таком случае выдало бы по крайней мере в верхнем регистре.

vandal » 2008.05.25 23:22

всё что ты написал есть. короче у меня в базе есть слово чат так вот при запросе  чат или ЧАТ   мускул дает ответ а при запросе слова ЧаТ  уже пишет что нет такого

Гемор » 2008.05.26 01:06

Чудеса)
тип таблицы какой? И сравнение?

vandal » 2008.05.26 13:39

MyISAM       utf8_unicode_ci     .короче англиские слова находит в любом регистре

Gemorroj » 2008.05.26 13:47

попробуй utf8_unicode_ci замени на utf8_general_ci

vandal » 2008.05.26 21:32

ставил! однохуйственно

Alaya » 2008.05.28 10:50

это че было?

Alaya » 2008.05.28 11:07

я поняла... Это нашествие дятлов . Ииинах от сюда, а ? Уже 11 страниц мусора

Gemorroj » 2008.05.28 11:13

Лена, ты же модератор,это спам боты, удаляй и все.

Alaya » 2008.05.28 11:21

а бан никак? Удаляла. Тут было 11 страниц этого

Gemorroj » 2008.05.28 11:26

Ну можешь бан) Я IP потом посмотрю и в .htaccess главный занесу все равно)

vandal » 2008.05.28 11:27

мля эт ужас!!! в баню айпи на 5 лет нах ггг

Nikilod » 2008.07.11 05:09

Привет. Я только что вышел из больницы. Простите за оффтоп, но я так рад снова быть здоровым.

Живите и радуйтесь жизни.

denich » 2008.07.19 17:11

вопрос: таким способом принятые данные из формы можно записать в базу?

Код:

1
mysql_query("INSERT INTO `guest` SET `time` = '".$data['time']."', `name` = '".$data['nick']."', `mess` = '".$data['text']."', `mail` = '".$data['mail']."', `sity` = '".$data['sity']."', `ip` = '".$data['ip']."', `br` = '".$data['br']."';");

?????

Helqg » 2008.07.20 14:28

не пишет что ли?

denich » 2008.07.20 15:53

белый экран) ну да я особо нестарался..

Gemor » 2008.07.20 16:22

Ну из формы данные приходят вероятнее всего в массиве $_POST, а тут $data. Может в этом проблема?

denich » 2008.07.20 21:27

сверху ошибка, мол неожиданное подключение(подключаю файл где настройки и коннект к базе(вродь всё правильно написал)) и белый экран.. ну я попозжа посижу.. ща неохот чёт :)

Helqg » 2008.07.21 11:20

может неверное какое подключение? Ну там пароль-логин...

denich » 2008.07.21 11:37

ну подключался я тавк:

Код:

1
2
3
4
5
6
7
8
9
<?
$user = "denich";
$pass = "denich";
$base = "book";
$db = mysql_connect("localhost",$user,$pass)or die("Could not connect: ".mysql_error());
mysql_select_db ($base, $db);or die("Could not select database: ".mysql_error());
mysql_query('SET NAMES utf8');
?>
denich » 2008.07.21 12:03

вопрос есть:

Код:

1
2
3
function psid(){
return (SID) ? ('?'.SID) : null;
}

вот SID я знаю чё такое, а вот чё обозначает

return (SID) ? ('?'.SID) : null; а? что это: ? :

Gemorroj » 2008.07.21 12:26

тоже самое что

Код:

1
span style="color: #0000BB"><?phpfunction psid() { if (SID) { return '?' . SID; } else { return null; }}?>

просто такая языковая конструкция.

denich » 2008.07.21 18:16

хм

denich » 2008.08.05 11:05

можно ли на одной странице подключаться к двум разным базам? я на главную вывести хочу сколько файлов в загрузе(эт одна база) и сколько тем/постов в форуме(эт другая база)??

denich » 2008.08.05 11:20

всё разобралсо)

Gemorroj » 2008.08.05 11:39

все можно) я для таких целей, например, использую функции - удобно.

pda » 2008.08.05 12:44

http://wapinet.ru =)

denich » 2008.08.05 13:42

pda, рекламишь?!?!?!?
__________________

неподелишся этой функцией? твоя иль где взял?
ели чё тож могу тут одну дать всмест mysql_query её использовать можн и нетолько(можн сказать работает как фильтровальщик, как ф-я mysql_query, и по принципу sprintf и printf)) гг b; книги взял =D кстать уж всю прочёл) тЫща страниц..

Gemorroj » 2008.08.05 14:19

да обычная функция. что-то типа

Код:

1
span style="color: #0000BB"><?php// Всего постов в гостевойfunction gbs_all(){mysql_connect('localhost', 'user', 'pass');//mysql_query('SET NAMES `utf8`');mysql_select_db('db');$a = mysql_result(mysql_query('SELECT COUNT(*) FROM `table` WHERE `id` = 2 LIMIT 1'),0);mysql_close();return $a;}print gbs_all();?>

Вот эта счтитает посты в гостевой у меня.

denich » 2008.08.05 17:17

а, ясн)) слушай у меня херь какая то, на компе все ОК, а на хосте зделал и пишет мол неправильно чё то, а всё правильно...

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in /home/pkclub/public_html/index.php on line 12
Could not connect: Access denied for user 'root'@'localhost' (using password: NO)

юзера правильно написалд чё он хочет от меня?!

denich » 2008.08.05 17:34

блин)) ну ты прям неповериш) зделал всё таким же образом как ты зделал(ну вот этими функциями) и всё заработАЛО)) ПАЧму так?

Gemorroj » 2008.08.05 21:32

вероятно не передавал идентификатор соединения с базой.

denich » 2008.08.07 15:17

передовал) может из за того что дома винда, а на хосте линукс? хотя наверн нет..

endrju » 2008.08.13 01:40

блин peклaмлят уpoды!!

Casper » 2008.08.14 03:04

такой вот вопрос... прикрепляю в этом форуме к сообщению .txt файл и при кликании на него он скачивается, закидываю к себе на сайт, он открывается, как страница. Как сделать, чтоб с моего сайта он тоже скачивался?

Gemorroj » 2008.08.14 13:38

здесь не прямая ссылка на txt файл. он отдается через скрипт.

Casper » 2008.08.14 16:42

ясно

denich » 2008.08.15 22:45

в загрузе sea пытаюсь скринШот вывести у тем .thm

Код:

1
lt;?if ($ext == 'thm') { include 'moduls/PEAR.php'; include 'moduls/Tar.php'; $theme = $file_info['path']; //$AF->loadFile($file_info['path']); $archive = & new Archive_Tar($theme); $deskside_file = $archive -> extractInString('Theme.xml'); $image_puth = simplexml_load_string($deskside_file)-> Standby_image['Source'] or simplexml_load_string($deskside_file)-> Desktop_image['Source']; $image_string = $archive -> extractInString($image_puth); //header( "Content-type:image/jpeg" ); print $image_string; }?>

вот отдельно от скрипта работает)
а в скрипт сую и выводит одни каракули..

endrj » 2008.08.15 23:30

A нe htm?

denich » 2008.08.15 23:51

еndrj, нет.
-----
блин неправильный код слегка дал, ща уж комп вырубил, а с телефона не весь текст закачивается...
завтра изменю..
и ошибку вродь уже понял в чём, но всё равно незнаю как её решить..

denich » 2008.08.16 10:57

Код:

1
lt;? if ($ext == 'thm') { include 'moduls/PEAR.php'; include 'moduls/Tar.php'; $theme = $file_info['path']; $archive = & new Archive_Tar($theme); $deskside_file = $archive -> extractInString('Theme.xml'); $image_puth = simplexml_load_string($deskside_file)-> Standby_image['Source'] or simplexml_load_string($deskside_file)-> Desktop_image['Source']; $image_string = $archive -> extractInString($image_puth); header('Content-type: image/jpeg'); print $image_string; }?>

вот, я думаю ошибка у меня в том что, header('Content-type: image/jpeg'); вдруг посылаю прям посередь страници... как правильно сделать?!
вот если чё страница.

Gemorroj » 2008.08.16 13:48

никак, вывести картинку на другой странице.

denich » 2008.08.16 17:04

ладн..

Login » 2008.08.16 18:16

http://lorras.wapn.ru/xak.php
pochemu ne robit ?!

Gemorroj » 2008.08.16 18:59

бля, на XHTML пиши.

endrj » 2008.08.17 16:32

в eтoй cтpoкe

Код:

1
echo " < option value = 'guest' > Гостевая </ option >< option value = 'forum' > Форум :</ option > ";

выдaeт тaкую oшибку:Ошибка: syntax error, unexpected T_STRING, expecting ',' or ';' Строка: 31 Страница: 3  кaк иcпpaвить?

endrj » 2008.08.17 16:33

copи нeт тopмoзит.

Gemorroj » 2008.08.17 21:10

никак, в той строке синтаксических ошибок нет.

endrj » 2008.08.18 01:00

я пoмeнял фaйл,eт у мну бывaeт тaкoй глюк:(

denich » 2008.09.12 14:46

вот делаю вывод даты новости на главную, и хочу ,что бы если дата новости сегодняшняя то выводилось Сегодня, если вчерашняя то Вчера,
я это все дело в функцию засунул, короче я додумать/доделать всё немогу...

Код:

1
lt;?function news_date(){mysql_connect('localhost', 'root', '');mysql_select_db('news');$qi = mysql_query("SELECT * FROM `news` order by id desc limit 1;");$row=mysql_fetch_array($qi); // итого в $row['stamp'] хранится дата$time = str_replace(date('d.m.Y', time()), 'Сегодня', $time); $time = str_replace(date('d.m.Y', time()-86400), 'Вчера', $time);mysql_close();return }?>
Gemorroj » 2008.09.13 22:13

я делаю так

Код:

1
span style="color: #0000BB"><?phpfunction tm($time){if(date('Y.m.d',$time) == date('Y.m.d',time())){return 'Сегодня в '.date('H:i',$time);}elseif(date('Y.m.d',$time) == date('Y.m.d',time()-86400)){return 'Вчера в '.date('H:i',$time);}else{return date('Y.m.d H:i',$time);}}?>

т.е. передаешь функции таймштамп, она возвращает отформатированную дату.

denich » 2008.09.14 13:05

да я уж зделал, тож помогли маленько... но всё равно спасибо))

denich » 2008.09.14 16:49

вот посмотри:

Код:

1
lt;?case 2: { $id = trim($_GET["id"]); if(!is_numeric($id)) exit(); if (!isset($_REQUEST['Go'])) { $sql = "SELECT * FROM `guest` WHERE id='$id'"; $que = mysql_qw($sql) or die(mysql_error()); $res = mysql_fetch_array($que); echo '<form action="'.$_SERVER["PHP_SELF"].'?p='.$parol.'&do=2&id='.$id.'" method="get"> Редактировать ник:<br /> <input type="text" name="nick" value="'.$res["nick"].'"><br /><br /> Редактировать сообщение:<br /> <textarea name="text" cols="32" rows="6">'.$res["text"].'</textarea><br /> <input type="submit" class="button" name="Go" value="Изменить"> </form>'; }else { $nick = safe_var($_GET["nick"]); $text = safe_var($_GET["text"]); $sql = "UPDATE `guest` SET nick='$nick', text='$text' WHERE id='$id'"; mysql_query($sql) or die(mysql_error()); echo 'Сообщение изменено!<br /><br />'; } }?>

где ошибка? вот форму выдаёт, я там всё изменяю жму на кнопку и меня выкидывает, т.е запись не изменяется в таблице.. вооющем где то после else у меня ошика.. немогу понять где..
Добавлено спустя   1 минуту  31 секунду:
вроде всё правильно написал..

Gemorroj » 2008.09.14 17:36

тут не полный код. давай полный switch и функции safe_var и mysql_qw (если это описанная тобой функция, а не опечатка)

denich » 2008.09.14 18:53

safe_var

Код:

1
lt;?function safe_var($str,$brl=false){ $str=trim(stripslashes(htmlspecialchars($str))); if($brl) $str=nl2br($str); $str=strtr($str,array("\r"=>' ',"\n"=>' ')); return $str;}?>

а mysql_qw эт таже функция что и mysql_qeary прост из книжки взял..
------------------------------------------
я тут делаю админку для гости..
все действия у меня в switch(act) {
case 1: {
тута удаление сообщения, всё работает
} break;

case 2: {
здесь код который выше я написал, тоесть тут редактирование сообщения, всё там работает до того места как всё данные нужно заменить в таблице т.е

$nick = safe_var($_GET["nick"]);  // это фильтрация
$text = safe_var($_GET["text"]);  // это тож фильтрую
           
$sql = "UPDATE `guest` SET nick='$nick', text='$text' WHERE id='$id'"; // вставление данных обратно в бд
mysql_qw($sql) or die(mysql_error());
echo 'Сообщение изменено!<br /><br />'
}

неробит...

Gemorroj » 2008.09.14 19:10

denich написал:

а mysql_qw эт таже функция что и mysql_qeary прост из книжки взял..

фукции mysql_qw нету (mysql_qeary тоже нету, =)) есть mysql_query и тебе нужна именно она.
mysql_qw испльзуется в библиотеке Котерова, забыл как называется, ты используешь эту библиотеку? Вероятно всего нет, а значит и описание этой функции в скрипте не указано.
после case скобки открывать не надо.

denich » 2008.09.14 20:05

mysql_qw я взял именно из книги котерова, и библу тож, и всё поключено.. скобки убрал.. ничё не работает опять..

Gemorroj » 2008.09.14 23:07

fixed =)

denich » 2008.09.20 10:56

вообщем проблема у меня с заменой дат, вот так вот работало, но поистечению 3-х дней выводит год и время прошедший с эпохи Unix т.е 01-01-70 3:30

Код:

1
lt;?function mcdate($date) { if(preg_match('/^[0-9]{0,4}+(-)+(.*?)$$/', $date)) { $arr_date = explode(" ", $date); list($y, $m, $d) = explode("-", $arr_date[0]); list($h, $i, $s) = explode(":", $arr_date[1]); $dateNow = $d; }$arrayText = array(date('d')-2=>'Позавчера в '.$h.':'.$i, date('d')-1 => 'Вчера в '.$h.':'.$i, date('d') => 'Сегодня в '.$h.':'.$i); if(isset($arrayText[$dateNow])) { return $arrayText[$dateNow]; }else return date('d.m.y в H.s', $date); }?>

почему нехочет она возвращать поистечению 3-х дней это else return date('d.m.y в H.s', $date);

Gemorroj » 2008.09.20 12:52

есть такая замечательная функция strtotime...
модифицируй функцию которую я тебе давал таким образом и пользуйся ей.

Код:

1
span style="color: #0000BB"><?phpfunction tm($time){// переводим строку в таймштамп$time = strtotime($time);if(date('Y.m.d',$time) == date('Y.m.d',time())){return 'Сегодня в '.date('H:i',$time);}elseif(date('Y.m.d',$time) == date('Y.m.d',time()-86400)){return 'Вчера в '.date('H:i',$time);}else{return date('Y.m.d H:i',$time);}}?>
denich » 2008.09.20 18:49

что в header означают 2 и 3 параметры?

Код:

1
lt;?header('Location: index.php', true, 301); ?>
Gemorroj » 2008.09.20 21:59

подмена кода ответа. по умолчанию отдается 302. а 302 не любят поисковики. соответственно меняем на 301.

denich » 2008.10.28 19:43

как проверить, в названии файла, есть ли мол в нём(имени файла) несколько точек?

Gemorroj » 2008.10.28 20:51

Код:

1
span style="color: #0000BB"><?php$str = 'имя фаела с точкой .';if(substr_count($str, '.')){// точки есть}else{// нема}?>
staryisv » 2008.11.08 21:15

Доброго всем времени суток!Пожалуйста,если не трудно,напишите,где взять или как создать базу MySQL?Только, если можно,поподробнее и с самого начала!Я в программировании,как студент,пропустивший первые 5 лекции,пришедший ко второй паре и пытается понять,что к чему!

Gemorroj » 2008.11.08 22:07

в панели управления хостом)

staryisv » 2008.11.09 14:37

Да был я там.Разобраться не могу.Захожу в базы данных.Создаю базу.База создается,а размер ее 0.00.И что дальше делать,никак не пойму.Паша,если не трудно,научи?!

Gemorroj » 2008.11.09 15:08

нутаквот. базу ты создал. теперь нужно ее чем-то наполнить.
заходиш в phpmyadmin, где он находится спроси у хостера или посмотри опять же в панели управления хостом.
слева выбираеш созданную тобой базу.
далее жмеш "импорт" и заливаеш файл с таблицами. все.
или жмеш не импорт, а "SQL" и вручную пишешь требуемые SQL комманды.

staryisv » 2008.11.09 15:22

Паш,пробовал я в панели управления нажимать phpMyAdmin.Выкидывает на мой сайт.Почему,не знаю.

Gemorroj » 2008.11.09 15:27

сообщи об этом хостеру. кстати так же можно через Gmanager работать с MySQL, хотя возможности PhpMyAdmin конечно куда шире =)

staryisv » 2008.11.09 17:41

Паша,а через gmanager как?Там самому создавать надо?

Gemorroj » 2008.11.09 20:52

В Gmanager типа консоли, нужно знать комманды. Но хостеры как правило не позволяют создавать новые БД скриптами, для этого нужно лезть в панель. Gmanager поможет залить таблицы в уже созданную БД.

staryisv » 2008.11.10 15:14

Phpmyadmin нашел.Спасибо.Пойду разбираться,что к чему./Паша,загляни в каталог.По моему,там что то не так.Регистрировал в нем свой сайт,не так давно,а вчера не смог найти.Зарегистрировал еще раз.Перехожу по ссылке со своего сайта,а мне пишет-сайтов в каталоге еще нет,будь первым.Или типа этого.А может я чего не разобрался правильно./

Gemorroj » 2008.11.10 15:19

MySQL сервер тупанул. Перезагрузил, терь ок.

staryisv » 2008.11.10 16:10

Наверно последний вопрос.Где взять начальные таблицы,для базы?Не те,что в игре.Как импортировать,я разобрался,спасибо!Осталось узнать,что нужно импортировать!/Надеюсь ты не обижаешься,что я тебе об ошибках сообщаю?А то скажешь,что яйца курицу учат!:)

Gemorroj » 2008.11.10 16:22

Что значит начальные? Таблицы они и есть таблицы.

staryisv » 2008.11.10 21:41

А где их брать?

Gemorroj » 2008.11.10 22:11

ты хочешь скрипт какой-то поставить? к скрипту как правило они прилагаются. посмотри файлы с расширением sql или всякие tables.txt, sql.txt, db.txt и т.п.

staryisv » 2008.11.10 22:39

Ага,есть такие!И их надо заливать в базу?А так,ничего там создавать или заливать не надо?Правильно я понял?Даже если движок ставишь?/Мне на ссылке каталога какой номер ставить,тот который раньше был или который сейчас зарегистрировал?/

Gemorroj » 2008.11.10 23:01

создай базу данных, залей таблицы. все.
ссылку ставь какую хочешь

staryisv » 2008.11.10 23:18

Последний вопрос.Каждый раз нужно новую базу создавать или в одну заливать все убийцы?/Извини,что надоел уже!/

Gemorroj » 2008.11.11 00:15

не волнуйся не надоел) на форуме я могу отвечать когда у меня есть свободное время для ответов. а вот в асе бывают достают...)
да, нужно создавать каждый раз новую БД.

staryisv » 2008.11.11 01:25

Спасибо Паша!Ты настоящий друг!

staryisv » 2008.11.14 15:14

Привет Паша!Это снова я!Есть вопрос!Подскажи пожалуйста,где и как вставить счетчик или файл,чтобы он на каждой странице отображался?Что то не могу разобраться!

Gemorroj » 2008.11.14 16:08

инклудом.
пишешь данные 1 раз  в файле, потом во все где тебе нужен счтчик его инклудиш.

staryisv » 2008.11.14 17:29

И копирайт так же прописан?А можно его прописать в одном файле,который отвечает за низ всех станиц?
Добавлено спустя   1 минуту  20 секунд:
И если можно,напиши подробно?!

Gemorroj » 2008.11.14 17:33

вероятно нет, что-то должно быть в любом случае проинклужено.

staryisv » 2008.11.14 18:17

Паш,а можешь пример вставки привести?Есть ссылка <a href.../a>.Как ее нужно вставлять в файл?Я пробовал,у меня низ страницы пропадает!
Добавлено спустя   3 минуты  8 секунд:
Кстати,я тут пытался добавить 3 скрипта,в ответ получил сообщение,что они появятся после проверки!И что то так и не появились!Не в курсе?

Gemorroj » 2008.11.14 18:49

я не проверял))

Код:

1
span style="color: #0000BB"><?php// файл include.php// лежит в DOCUMENT_ROOTecho '<a href="">Ссылка</a>';?>

Код:

1
span style="color: #0000BB"><?php// файл в котором отображается наша ссылка// тут всякая шнягаecho 'Привет мир'!;// а тут вставляем файл со ссылкой// путь прописываем от DOCUMENT_ROOT чтобы не путатьсяinclude $_SERVER['DOCUMENT_ROOT'].'/include.php';?>
staryisv » 2008.11.14 22:27

Ага,сейчас попробую!Спасибо!

staryisv » 2008.11.14 23:25

Чего то у меня не так все?!Ты wap-motor 18 не знаешь случайно?Может кинуть тебе пару файлов,которые за низ всех страниц отвечают?Посмотришь,если время будет?

Gemorroj » 2008.11.14 23:58

нет, спасибо не надо.

staryisv » 2008.11.15 10:29

Паша,спасибо,помогло!Сначала файл создал,потом его проинклудил в файле,который,за низ всех страниц отвечает и все заработало!Спасибо,еще раз!/Паша,на форуме опять что то не работает!

Gemorroj » 2008.11.15 11:09

очень позновательно. что именно не работает, не конкретизируш?

denich » 2008.11.18 14:50

что это за регулярка? можт её как то укоротить?

Код:

1
lt;?if(!eregi("^((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z;]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:;\?\.-]*)*)\$", $link1)) $link1="";?>

Добавлено спустя   1 минуту  13 секунд:
---------------
p.s уж слишком мелкий шрифт в форуме, кода савсем невидать (ps с компа)

Gemorroj » 2008.11.18 16:51

ммм.. это на сколько я понимаю проверка на URI
[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z;]{2,3}) - проверка на домен (не совсем корректная)
[0-9]{1,3}\.){3}([0-9]{1,3} - IP
((/|\?)[a-z0-9~#%&'_\+=:;\?\.-]*)*) - строка запроса (QUERY_STRING)
не вижу особо в ней надобности где-бы то нибыло)

denich » 2008.11.18 18:00

а вот что то в чате она делала)

denich » 2008.12.09 16:32

вот такой запрос реален? могет быть?

Код:

1
lt;?$r = mysql_qw("SELECT * FROM `koment` WHERE id_us='".$usid."' ORDER BY `id` DESC LIMIT $o,$do");?>

у мене он что та неработает..

Gemorroj » 2008.12.09 16:50

Код:

1
span style="color: #0000BB"><?php$r = mysql_qw('SELECT * FROM `koment` WHERE `id_us`='.$usid.' ORDER BY `id` DESC LIMIT '.$o.','.$do);// проблема в переменных// либо $usid не тот// либо $o или $do не корректныеprint mysql_error();// что пишет тут??>
denich » 2008.12.09 17:02

пишет

Код:

1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Добавлено спустя   2 минуты  40 секунд:
с переменными $o $do $usid всё пучком.

Gemorroj » 2008.12.09 17:22

что в них конкретно напиши.

Gemorroj » 2008.12.09 18:39

echo 'SELECT * FROM `koment` WHERE `id_us`='.$usid.' ORDER BY `id` DESC LIMIT '.$o.','.$do;
напиши после запроса.

denich » 2008.12.09 19:50

результат:

SELECT * FROM `koment` WHERE `id_us`=12 ORDER BY `id` DESC LIMIT 0,

Gemorroj » 2008.12.09 20:01

ну вот.

denich написал:

LIMIT 0,

denich » 2008.12.09 20:18

ну да)

kot18 » 2008.12.13 20:16

Не знаю, может не совсем в тему, но вроде эта самая близкая к моему вопросу))
Хотел вот что спросить...
такой вот из себя "ilichat" в плане безопасности как?
А то не хотелось бы, что б взломали нафик)

Gemorroj » 2008.12.13 21:18

что мешает создать новую тему? по поводу вопроса. как и у всех чатов в WAP'е безопасность и уровень кода ниже плинтуса.

kot18 » 2008.12.13 22:29

не хотел забивать форум лишней темой, такие темы думаю долго не живут)

Вот это огорчает...
Ну я надеюсь, что кто попало взломать такой скрипт не может?
Если это по способностям только зело опытным программистам, та оно и ладно, а если кому попадя, то не радует)

Gemorroj » 2008.12.13 23:51

я не знаю, не особо интересуюсь чатами. по-моему их время ушло.

denich » 2008.12.14 18:36

проблема, вместо буквы Ш выводится �?
таблица с кодировкой utf8_general_ci, в чём проблема?

Gemorroj » 2008.12.14 18:45

По-моему там еще с Й должна быть проблема. Где-то всет-таки не UTF-8.
Добавлено спустя   2 минуты  47 секунд:
соединение с БД как происходит? после mysql_connect еще вставь mysql_query('SET NAMES `utf8`');

denich » 2008.12.14 19:09

нет, ток с Ш такая фигня, была)
терь норм)

ПеревозЧЕГ » 2008.12.22 19:53

CREATE TABLE IF NOT EXISTS `ban` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(255) NOT NULL,
  `ua` varchar(255) NOT NULL,
  `time` int(11) NOT NULL default '0',
  `pri` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=36 ;
Что означает это AUTO_INCREMENT=36 ;

Gemorroj » 2008.12.22 21:12

`id` int(11) NOT NULL auto_increment,

здесь указывается, что при каждой новой записи в`id` это поле будет автоматически увеличиваться на 1.

AUTO_INCREMENT=36 ;

это значит, что отсчет начнется с 36.
Скорее всего тот, кто делал дамп этой таблицы просто поленился навести в ней порядок.
Вероятнее всего лучше будет поставить AUTO_INCREMENT=1, а так же заменить CHARSET=cp1251 на CHARSET=utf8

ПеревозЧЕГ » 2008.12.23 18:09

Gemorroj написал:

`id` int(11) NOT NULL auto_increment,

здесь указывается, что при каждой новой записи в`id` это поле будет автоматически увеличиваться на 1.

AUTO_INCREMENT=36 ;

это значит, что отсчет начнется с 36.
Скорее всего тот, кто делал дамп этой таблицы просто поленился навести в ней порядок.
Вероятнее всего лучше будет поставить AUTO_INCREMENT=1, а так же заменить CHARSET=cp1251 на CHARSET=utf8

Да я вот решил перебороть свою лень относительно практики и решил попрактиковаться и поковыряться в скриптах. Взял магазин асек. Он оказывается на регистр глобалс он. Вот буду разбираться. .И переделывать на оф.

denich » 2008.12.24 20:48

вот это

Код:

1
lt;?if(isset($_GET['n'])) $needle = intval($_GET['n']); else $needle = '';?>

можно сократить ведь, да?
там с ? и :
каг зделать?

Gemorroj » 2008.12.24 21:15

Код:

1
span style="color: #0000BB"><?php$needle = (isset($_GET['n']) ? intval($_GET['n']) : '');?>

Добавлено спустя   1 минуту  21 секунду:
это называатся тернарный оператор.

denich » 2008.12.24 22:13

угу, спасибо:)

denich » 2009.01.03 17:52

Где ошибка?
Почему то данные из формы не все корректно приходят servis = 0 и сайт = 0
Хотя print_r($_POST); показывает что всё пучком

Gemorroj » 2009.01.03 18:29

$servis = intval($_POST['servis']);
    $site = intval($_POST['site']);

ты же их сам к числу приводишь

denich » 2009.01.03 19:05

оу.. я видать незнаю до конца функцию intval, хм.. я думал она фильтрует, но никогда её не использовал..

Gemorroj » 2009.01.03 19:19

она приводит значение к целочисленному типу. т.е. после обработки ей получится по любому число.

НЕЗНАЙКА » 2009.01.06 14:50

integer value =) И как ты этим 'фильтровал'? По твоему

ПеревозЧЕГ » 2009.01.12 16:56

нужно ли использовать htmlspecialchars если у меня поле обрабатывается регуляркой, согласно которой поле должно содержать только латинские буквы? Я понимаю что можно и то и то сделать но зачем лишний код если регулятка выполнит все.
Также по поводу mysql_real_escape_string если я опять же обработаю регуляркой, обязательно ее обрабатывать?

Gemorroj » 2009.01.12 17:03

если только латинские символы [a-z], то не надо больше ничего.

ПеревозЧЕГ » 2009.01.12 17:07

Gemorroj написал:

если только латинские символы [a-z], то не надо больше ничего.

ну я думаю еще 0-9 можно. Да?

Gemorroj » 2009.01.12 17:11

ага

ПеревозЧЕГ » 2009.01.12 17:14

понятно. Спасибо

ПеревозЧЕГ » 2009.01.12 18:07

session_start();
$_SESSION['id']=mysql_insert_id;
$_SESSION['pass']=$pass;
echo'<div class="a">Вы успешно зарегистрированы! Ваш ид: '.mysql_insert_id($q).'Пароль: '.$pass.'</div><div class="b"><a href="cabinet.php">В кабинет</a></div>';
правильно я сессию создал?

Gemorroj » 2009.01.12 18:17

Код:

1
span style="color: #0000BB"><?phpsession_start();$id = mysql_insert_id();$_SESSION['id'] = $id;$_SESSION['pass'] = $pass;echo '<div class="a">Вы успешно зарегистрированы! Ваш ид: '.$id.' Пароль: '.$pass.'</div><div class="b"><a href="cabinet.php">В кабинет</a></div>';?>
ПеревозЧЕГ » 2009.01.12 18:19

я так хотел сделать а потом передумал :)

ПеревозЧЕГ » 2009.01.12 18:37

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE user(id int(11) NOT NULL auto_increment,
name varchar(20),
pass varchar(20),
vremyareg varchar(15),
url varchar(50),
email varchar(50),
wmr varchar(15),
money varchar(15),
vsego varchar(15),
perehod varchar(15),
neschit varchar(15),
lastperehod varchar(15)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
--
 
CREATE TABLE ban(id int(11),
vremya varchar(15),
prichina varchar(200)) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
--
 
CREATE TABLE news(id int(11) NOT NULL auto_increment,
namenews varchar(100),
novost varchar(500),
vremyanews)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

в чем ошибка?

Gemorroj » 2009.01.12 18:57

если ты ставиш auto_increment, то на это поле нужно поставить PRYMARY KEY
так же в таблице news в конце не корректно записано vremyanews.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CREATE TABLE `user`(
`id` int(11) NOT NULL auto_increment,
`name` varchar(20),
`pass` varchar(20),
`vremyareg` varchar(15),
`url` varchar(50),
`email` varchar(50),
`wmr` varchar(15),
`money` varchar(15),
`vsego` varchar(15),
`perehod` varchar(15),
`neschit` varchar(15),
`lastperehod` varchar(15),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
--
 
CREATE TABLE `ban`(
`id` int(11),
`vremya` varchar(15),
`prichina` varchar(200)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
--
 
CREATE TABLE `news`(
`id` int(11) NOT NULL auto_increment,
`namenews` varchar(100),
`novost` varchar(255),
`vremyanews` int(11),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Добавлено спустя   1 минуту  3 секунды:
а, еще масимальное кол-во символов помещающееся в varchar - 255
ну и вообще, пока что не оч оптимизировано (нет ключей)

ПеревозЧЕГ » 2009.01.12 18:59

я пока ответа ждал проблему решил :) похожим образом. Ключи ты имеешь ввиду индексы?

Gemorroj » 2009.01.12 19:04

да.

ПеревозЧЕГ » 2009.01.12 19:08

ну они мне пока не нужны. Это мой первый скрипт. И там не предполагается такая большая посещалка, чтобы индексы были. Точнее посещалка там вообще пока не планируется. Мне лишь бы работало и было не дырявое. Над этим я работаю

Gemorroj » 2009.01.12 19:08

ненене, индексы рулят)

ПеревозЧЕГ » 2009.01.12 19:17

у меня будут позже возможно рулить :) сейчас решаю проблему с mysql_insert_id
Что то не работает

Gemorroj » 2009.01.12 19:20

она возвращает номер последней вставленной записи. в чем конкретно проблема?

ПеревозЧЕГ » 2009.01.12 19:21

сначала была проблема что я нечаянно переменную в скобках в ней вставил. А теперь проблема в том что она постоянно 0 возвращает.

Gemorroj » 2009.01.12 19:34

дай полный код

ПеревозЧЕГ » 2009.01.12 19:53

все разобрался. Я пока пил чай вспомнил что я запрос на запись данных в базу составил а выполнить его забыл. Я обычно сразу запрос в mysql_query составляю а это в отдельной переменной составил и забыл выполнить.

ПеревозЧЕГ » 2009.01.12 21:59

как проверить есть ли введенные данные в базе. Нужно проверить 3 поля email,url,wmr из базы user

Gemorroj » 2009.01.13 11:47

Код:

1
SELECT 1 FROM `user` WHERE `email` <> '' AND `url` <> '' AND `wmr` <> ''
ПеревозЧЕГ » 2009.01.13 12:15

что означает 1 в этом коде? И кавычки одинарные или двойные?

Gemorroj » 2009.01.13 12:18

если email, url и wmr не пустые, вернет 1

ПеревозЧЕГ » 2009.01.13 12:27

блин, я немного не так вопрос задал вчера.
Пришли данные из формы $email='job@do.la' $url='site.ru' $wmr='558236852369' и вот надо проверить есть ли в базе хотя бы одно и введенных данных. Это значит надо проверить если есть хотя бы одно совпадение то вывести соответственное предупреждние. Типа извините но такие данные уже есть. Как будет выглядеть код? Поля теже самые. Я понимаю что надо пройтись по этим полям и посмотреть но как не пойму. Я select еще не освоил толком.

Gemorroj » 2009.01.13 12:37

Код:

1
span style="color: #0000BB"><?phpif(mysql_query("SELECT 1 FROM `user` WHERE `email` = '$email' OR `url` = '$url' OR `wmr` = '$wmr'")){ // пользователь с такоми занными уже есть}else{ // пользователя с такими данными нет}?>
ПеревозЧЕГ » 2009.01.13 12:39

вот спасибо :) а то я застрял на этом. Вечером попробую.

AGENT » 2009.01.16 15:33

Разъясните что такое глобальные переменные плиз. Сколько ни листал литературу ничего не понимаю по этому поводу. Желательно приведите пример кода с глобальнымы переменными и локальными. Я вообще не пойму почему до сих пор не убрали регистр глобалс

Gemorroj » 2009.01.16 15:51

вот один из вопросов тестирования на нашей работе

Код:

1
span style="color: #0000BB"><?php$num = 10;function multiply(){ $num = $num*10;}multiply();echo $num;?>

что выведет?
так вот $num = 10; находится в локальной области видимости. в функции multiply она не видна, там ее нет. $num которая находится в функции myltiply совершенно независима от $num, которая находится вне функции multipy.

AGENT » 2009.01.16 15:58

A как это будет выглядеть но уже с глобальными?

Gemorroj » 2009.01.16 16:19

Код:

1
span style="color: #0000BB"><?php$num = 10;function multiply(){// чтобы сделать переменную $num видимой (глобальной) в этой функции// следует оъявить ее таковой с помощью специального слова globalglobal $num; $num = $num*10;}multiply();echo $num;?>
Ywan » 2009.01.16 16:30

Привет Gemorroj,Admin,Gemor.На кануне нашел скрипт мыла.Типа mail@wapinet.ru Установил,таблицы залил,проверил почти все работает.Когда попытался зайти в админ панель пришлось вводить логин и пароль.Пошел посмотрел таблицу,там написано:
CREATE TABLE `settings` (
  `login` varchar(250) NOT NULL default 'admin',
  `pass` varchar(250) NOT NULL default '21232f297a57a5a743894a0e4a801fc3',
  `quota` int(11) NOT NULL default '1',
  `quota_disk` int(11) NOT NULL default '1',
  `sh_cnt` int(11) NOT NULL default '12',
  `rsort` tinyint(1) NOT NULL default '1',
  `sh_quota` tinyint(1) NOT NULL default '1'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `settings` VALUES ('admin', '21232f297a57a5a743894a0e4a801fc3', 1, 1, 10, 1, 1);
Ввел пароль 21232f297a57a5a743894a0e4a801fc3 но почему то не заходит.Потом пытался исправлять таблицу и все равно не получилось.Помогите исправить плиз.Что бы логин был Admin a пароль password Вот сам скрипт.За ранее спасибо.

Gemorroj » 2009.01.16 16:44

это не пароль,скорее всего это хэш пароля. скорее всего md5 хэш
выполняем следующий код echo md5('1234');
получаем хэш: 81dc9bdb52d04dc20036dbd8313ed055
теперь замени в таблице предыдущее значение хэша, на это. в таком случае пароль будет 1234

AGENT » 2009.01.16 17:22

Gemorroj написал:

Код:

1
span style="color: #0000BB"><?php$num = 10;function multiply(){// чтобы сделать переменную $num видимой (глобальной) в этой функции// следует оъявить ее таковой с помощью специального слова globalglobal $num; $num = $num*10;}multiply();echo $num;?>

и все что ли? Только различие в глобал объявлений?

Gemorroj » 2009.01.16 17:26

в данном случае все.

AGENT » 2009.01.16 17:28

Gemorroj написал:

в данном случае все.

а что есть еще другие случаи ? Признаки глобальных переменных я имею ввиду

Ywan » 2009.01.16 17:55

Gemorroj,а где мне писать echo md5('1234');
?

Gemorroj » 2009.01.16 17:58

AGENT, ну самый распространенный - прием данных из форм или из URI.
соответственно данные попадают в суперглобальные массивы $_GET $_POST $_REQUEST
тоже с сессиями, кукисами.
Область видимости в классах тоже имеет свои особенности.

AGENT » 2009.01.16 17:58

Ywan написал:

Gemorroj,а где мне писать echo md5('1234');
?

создай файл и вставь это <php
echo md5('1234');
?>

Gemorroj » 2009.01.16 17:58

Ywan, это просто php код.
Добавлено спустя   1 минуту  1 секунду:
я лично в gmanager в EVAL делал.

AGENT » 2009.01.16 18:00

Gemorroj написал:

AGENT, ну самый распространенный - прием данных из форм или из URI.
соответственно данные попадают в суперглобальные массивы $_GET $_POST $_REQUEST
тоже с сессиями, кукисами.
Область видимости в классах тоже имеет свои особенности.

на сколько я знаю,суперглобальные это не глобальные переменные. Или я ошибаюсь?

Gemorroj » 2009.01.16 18:03

они как раз СУПЕР глобальные. Т.е. видны ВЕЗДЕ.
в нашем примере если бы вместо $num была к примеру переменная $_REQUEST['num'], то обьявлять ее как global было бы не обязательно, этот массив и так виден.

AGENT » 2009.01.16 18:05

Gemorroj написал:

они как раз СУПЕР глобальные. Т.е. видны ВЕЗДЕ.
в нашем примере если бы вместо $num была к примеру переменная $_REQUEST['num'], то обьявлять ее как global было бы не обязательно, этот массив и так виден.

пока понятно. Нужно переварить гг . Спасибо
Добавлено спустя   2 минуты  42 секунды:

Gemorroj написал:

AGENT, ну самый распространенный - прием данных из форм или из URI.
соответственно данные попадают в суперглобальные массивы $_GET $_POST $_REQUEST
тоже с сессиями, кукисами.
Область видимости в классах тоже имеет свои особенности.

а как обойтись в данном варианте без суперглобальных ?
Добавлено спустя   4 минуты  3 секунды:
Дело в том,что у меня нет желания начинать писать с минимальными знаниями и ошибками. Поэтому нужно сначало получить знания. Это лучше чем тебя будут ломать из за ошибок.

Gemorroj » 2009.01.16 18:12

хм... во первых замем обходиться без них?
ну есть еще переменные $argc и $argv, в них тоже попадают данные переданные через GET и POST. Но их лучше не использовать просто из-за совместимости и читаемости кода.
Добавлено спустя    37 секунд:

AGENT написал:

Поэтому нужно сначало получить знания.

это конечно правильно)

AGENT » 2009.01.16 18:13

Понятно. Спасибо.

Ywan » 2009.01.17 09:58

Gemorroj написал:

Ywan, это просто php код.
Добавлено спустя   1 минуту  1 секунду:
я лично в gmanager в EVAL делал.

Значит мне это надо написать в apanel.php?(страница для входа в админ панель)

Gemor » 2009.01.17 10:58

Забудь, нигде это писать не надо

AGENT » 2009.01.17 17:32

Паша,смотри. Вот тут же используются глобальные переменные?

Код:

1
span style="color: #0000BB"><?php$file=glob("load/$sd/*.".'{'."$allfiler}",GLOB_BRACE); function mysort($b,$a) { $ra=r($a); $rb=r($b); if(($ra=='gif' or $ra=='jpg' or $ra=='png') and $rb!='gif' and $rb!='jpg' and $rb!='png') return -1; elseif(($rb=='gif' or $rb=='jpg' or $rb=='png') and $ra!='gif' and $ra!='jpg' and $ra!='png') return 1; else return 0; } usort($file,"mysort"); $page=intval(@$_GET['page']); if(!$page) $page=1; $pag=$page-1; $start=$pag*$kolf; $count=count($file)-count(glob("load/$sd/*.".'{'."$allfiler}.{jpg,gif,png}",GLOB_BRACE));?>
Gemorroj » 2009.01.17 17:50

конкретизируй пожалуйста вопрос.

AGENT » 2009.01.17 18:07

Gemorroj написал:

конкретизируй пожалуйста вопрос.

да вроде конкретно написал. В данном куске кода используются глобальные переменные? Glob я вижу

Gemorroj » 2009.01.17 18:47

нет, это не имеет никакого отношения к глобальным переменным
это функция glob http://ru2.php.net/glob для работы с файлами

denich » 2009.01.20 19:25

Код:

1
lt;?echo '<form method="post" action="'.$chataddr.'/herak/'.$CHATses.'" name="auth">';?>

вот это name="auth" тоже придёт в $_POST['auth'] да?

Gemorroj » 2009.01.20 19:32

да. придет пустой элемент $_POST['auth']

AGENT » 2009.01.22 06:33

Вывел описания под именами файлов что бы юзерам было удобнее выбирать файлы. Выборка идет и текстовых файлов,файлы в  utf-8. Так вот при этой выборке в 70 символов иногда появляются квадратики которые приводят к ошибке (если смотреть с опера мини 4.2). При нажатии на файл,там есть полное описание и ни каких квадратов нет. Как можно исправить данную ситуацию с квадратиками? Вот скрин куда я вывел часть описания и сам квадратик там видно.

AGENT » 2009.01.22 11:09

проблему решил интересным образом. echo iconv("UTF-8", "UTF-8", "$opis ...<br/>");

Но тут есть интересность,судя по всему где выводились "квадратики" теперь похоже обрезается это  ...<br/> . Как можно решить данную проблему и почему мне приходится перекодировать юникод в юникод для исправления ошибок,ведь на расширенной странице выводится точно такое же описание ,только без вырезания и без ошибок?

Gemorroj » 2009.01.22 11:56

нет, способ совсем не интересный и не правильный) используй mb_substr

AGENT » 2009.01.22 12:51

Gemorroj написал:

нет, способ совсем не интересный и не правильный) используй mb_substr

опробовал. И не вижу различий. Пробовал так $opis=@file_get_contents($files.'.dat');

$opis=mb_substr($opis,0,140);


if($opis)
echo iconv("UTF-8", "UTF-8", "$opis ...");
echo '<br/>'; и тоже самое. Попробовал так $opis=@file_get_contents($files.'.dat');

$opis=mb_substr($opis,0,140);


if($opis)
echo "$opis ...");
echo '<br/>'; и ошибки снова с появлением этих "квадратиков". Без iconv() вообще ошибок убрать не могу. Может есть другой способ?

Gemorroj » 2009.01.22 13:02

mb_substr у тебя работал со строкой в однобайтовой кодировке. поставь локаль utf-8 или явно указывай какую кодировку использовать

Код:

1
span style="color: #0000BB"><?php$opis = file_get_contents($files.'.dat');$opis = mb_substr($opis, 0, 140, 'utf-8');echo $opis;?>
AGENT » 2009.01.22 13:42

Gemorroj написал:

mb_substr у тебя работал со строкой в однобайтовой кодировке. поставь локаль utf-8 или явно указывай какую кодировку использовать

Код:

1
span style="color: #0000BB"><?php$opis = file_get_contents($files.'.dat');$opis = mb_substr($opis, 0, 140, 'utf-8');echo $opis;?>

спасибо. Именно так работает отлично.

AGENT » 2009.01.22 16:11

Безопасная ли такая форма? Это форму я сделал для загруз центра. Обычно на других сайтах если нажать "ок" из формы то страница перегружается. У меня нет. echo "<input type=\"text\" value=\"http://".$_SERVER['HTTP_HOST']."/dn/".$file."\" name=\"url\"/>";

Gemorroj » 2009.01.22 16:29

используй одинарные кавычки.
$file достаточно отфильтровать с помощью htmlspecialchars

Agent1 » 2009.01.23 06:05

Так если я буду использовать одинарные кавычки,то переменные обрабатываться не будут. Данная переменная отфильтрована в начале.

Gemorroj » 2009.01.23 11:33

Код:

1
span style="color: #0000BB"><?phpecho '<input type="text" value="http://'.$_SERVER['HTTP_HOST'].'/dn/'.$file.'" name="url"/>';?>
AGENT » 2009.01.23 14:30

Gemorroj написал:

Код:

1
span style="color: #0000BB"><?phpecho '<input type="text" value="http://'.$_SERVER['HTTP_HOST'].'/dn/'.$file.'" name="url"/>';?>

подобная форма обязана вызвать ошибку. Обратные косые ты убрал.

Gemorroj » 2009.01.23 14:48

проверь) это базовый синтаксис PHP

AGENT » 2009.01.23 15:38

Gemorroj написал:

проверь) это базовый синтаксис PHP

проверил. Ошибка. Белый экран. Тут даже и проверять не нужно было когда ошибку сразу следовало ожидать.

Gemorroj » 2009.01.23 15:40

лучше не спорь, сходи на форум джона, да спроси, если мне не веришь.

AGENT » 2009.01.23 15:45

Gemorroj написал:

лучше не спорь, сходи на форум джона, да спроси, если мне не веришь.

блин . Это мой косяк был. Я двойную кавычку в конце поставил. Теперь работает. Символов сыкономили гг. И вот особо не пойму почему мы не экранизировали двойные кавычки?

Gemorroj » 2009.01.23 15:49

правильно писать именно с одинарными, т.к. это быстрее, красивее и просто так рекомендуют разработчики PHP. обратные слеши нужны только на те символы, с помощью которых мы записываем строку. ну т.е. в случае с одинарными кавычками нужно слешировать одинарные кавычки, но не нужно двойные, и наоборот, если строка записывалась в двойных кавычках, то следовало бы слешировать двойные кавычки, но не нужно было бы слешировать одинарные.

AGENT » 2009.01.23 15:55

Ужс. Ладн. Пойду дальше конспект писать. Нужно до баз добраться. Думаю через месяц уже напишу простой скрипт новостей или гостевой.
З.Ы. Если руки кривыми не будут))

AGENT » 2009.01.25 07:42

Вот значит я юзаю сайт php.su и не особо понимаю зачем нужны всякие переводы строк и каретки с табуляциями. Что это за ерунда ? И можно ли их вообще не использовать?

Gemorroj » 2009.01.25 10:29

это символ разметки. смотря в каких случаях, иногда они требуются для корректной переедачи данных.

AGENT » 2009.01.25 13:32

Gemorroj написал:

это символ разметки. смотря в каких случаях, иногда они требуются для корректной переедачи данных.

вот щас смотрю скрипты свои и не вижу этого. Значит необязательно их использовать. Если можно то объясни по подробнее что и для чего.

Gemorroj » 2009.01.25 14:34

передача заголовков в основном, иногда форматирование текста на странице.

AGENT » 2009.01.26 05:35

Щас вот скачал дцмс 6.1 и посмотрел код. Весь код в этих \n . Двойные кавычки везде.и генерация доходит до 15 секунд при 3х онлайн. Жесть

Gemorroj » 2009.01.26 11:56

=)) ну это плохой стиль просто)
конечно, чем писать так

Код:

1
span style="color: #0000BB"><?phpecho "текст\n";echo "еще текст\n";?>

лучше было бы написать так

Код:

1
span style="color: #0000BB"><?phpecho 'текстеще текст';?>
AGENT » 2009.01.26 15:53

Я щас почистил весь двиг от ерунды. Убрал все лишнее и работает нормально. Пошел к аффтару поделиться а меня забанили гг
Добавлено спустя   2 минуты  5 секунд:
Кстати у меня вот такой вопрос не стандартный. В .htaccess глобальные выключены. А скрипт показывает что они включены. Что это может быть? Пых как модуль 5. А на 4 пыхе показывал скрипт что выключены глобальные

Gemorroj » 2009.01.26 15:58

php как cgi модуль?
я хз, не очень силен в этих настройках серверных.

AGENT » 2009.01.26 16:31

Gemorroj написал:

php как cgi модуль?
я хз, не очень силен в этих настройках серверных.

ага.

AGENT » 2009.01.28 18:04

Ура! Перенес все на другой сервер с пых 5.1.9 в качестве модуля пыха. Гг
Павел,ты не подскажешь что это за код?

Код:

1
lt;?function links($msg){$msg= eregi_replace("((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&amp;._=/~%#]*(\\?[[:alnum:]?+&amp;_=/%#]*)?)?)", "<a href=\"\\1\" target=\"_blank\">\\1</a>", $msg);return $msg;}?>

Добавлено спустя   1 минуту  7 секунд:
Что то мне он не нравится .

Gemorroj » 2009.01.28 18:15

замена адресов на ссылки

Код:

1
span style="color: #0000BB"><?phpfunction links($msg){return preg_replace("~((https?|ftp)/[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&amp;._=/~%#]*(\\?[[:alnum:]?+&amp;_=/%#]*)?)?)~i", '<a href="$1" target="_blank">$1</a>', $msg);}?>
AGENT » 2009.01.29 06:16

Gemorroj написал:

замена адресов на ссылки

Код:

1
span style="color: #0000BB"><?phpfunction links($msg){return preg_replace("~((https?|ftp)/[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&amp;._=/~%#]*(\\?[[:alnum:]?+&amp;_=/%#]*)?)?)~i", '<a href="$1" target="_blank">$1</a>', $msg);}?>

а адрес и ссылка это разные вещи что ли? Гг
и кстати код у него весь именно такой. То есть нет <?php
?>
просто <? ?>

НЕЗНАЙКА » 2009.01.29 08:02

Адрес поидее хттп://... А ссылка на адрес <а хреф... <?...?> это тоже будет работать, но как сценарий SGML

Gemorroj » 2009.01.29 11:51

PHP код на данный момент можно обозначать следующими конструкциями

Код:

1
span style="color: #0000BB"><?php// рекомендуемый стиль?><?// сокращенный не рекомендуемый стиль?><%// сильно не рекомендуемый стиль ASP%>

да, я имел ввиду автоматическую замену http://xxx.ru на <a href="http://xxx.ru">http://xxx.ru</a>

AGENT » 2009.01.29 12:54

А для чего там https и ftp? Кстати в скрипте меня насторожил такой момент. При инсталяции,в форме ввода мыла,оказалось мыло,которое я указывал в панеле управления хостингом. Что это может значить?

Gemorroj » 2009.01.29 13:35

ну эти протоколы не хуже обычного http, мыло твое и так можно получить в переменной $_SERVER['SERVER_ADMIN']

AGENT » 2009.01.29 13:40

Ага. Вот еще такой вопрос.  Можно ли написать такой код,который запрещает скуль иньекцию?

Gemorroj » 2009.01.29 13:53

функций подходящих для всех случаев не существует. ну а вообще та самая mysql_real_escape_string

AGENT » 2009.01.29 15:13

Меня уверяют ,что данная функция есть. Я тебе позже покажу ее

Gemorroj » 2009.01.29 15:34

бред. нету такой. все зависит от того что нам надо получить.

AGENT » 2009.01.29 15:47

Я неправильно выразился. Не функция,а скорее алгоритм или типо того. Вот код
foreach ($HTTP_GET_VARS as $key => $val)
{
$val = htmlspecialchars($val, ENT_QUOTES);
$$key = $val;
}
;
foreach ($HTTP_POST_VARS as $key => $val)
{
$val = htmlspecialchars($val, ENT_QUOTES);
$$key = $val;
}

Gemorroj » 2009.01.29 16:34

=))) глупость это, а не функция)
с помощью этой функции когда-то переводили старые скрипты, которые написаны с расчетом под включенные глобальные переменные, на выключенные глобальные переменные. от SQL она никак не защищает. и к применению никак не рекомендована.

AGENT » 2009.01.29 16:38

Хм ну тебе виднее

AND » 2009.03.03 18:28

if(($_GET['s']) == 'off') $s = '0'; else $s= '1';
Здесь $_GET['s'] не надо фильтровать?

НЕЗНАЙКА » 2009.03.03 18:41

Все входящие фильтруй. Можно ведь подставить значение другое. Не расчитывай на запланированную правильность

Gemorroj » 2009.03.03 18:50

если в дальнейшем переменная $_GET['s'] не используется, то не надо.
Добавлено спустя   2 минуты  31 секунду:
еще желательно использовать фигурные скобки {}

Код:

1
span style="color: #0000BB"><?phpif ($_GET['s'] == 'off') { $s = 0;} else { $s = 1;}?>
AND » 2009.03.03 22:16

Есть таблица stat, в ней поля id,ip,link_id
Оператор определяется функцией GetOperator()
Нужно вывести статистику по операторам для определенного link_id
в таком виде:

Мегафон: xx
Билайн: xx
МТС: xx
...

Как это сделать? Хотя бы примерно, а то сам не додумаюсь :)

Gemorroj » 2009.03.03 22:24

статистику чего? что такое хх?

AND » 2009.03.03 22:25

xx -  количество переходов
статистику переходов по операторам

Gemorroj » 2009.03.03 22:43

ну тут бд нужно переделывать. пару строчками не отделаться.

AND » 2009.03.03 22:48

Добавить поле opsos и записывать туда оператора при переходе по ссылке?

Gemorroj » 2009.03.04 09:40

2 поля. поле с именем оператора и счетчик переходов.

AND » 2009.03.04 22:45

Практически дописал скрипт управления рекламой и столкнулся с такой проблемой:
После инклуда в скрипт работающий с БД, файла link.php (в нем рекламные ссылки)
перестает работать скрипт, либо не показываются рекламные ссылки.
В чем может быть проблема?

Gemorroj » 2009.03.04 22:47

ну давай файл этот

AND » 2009.03.04 22:48

...

Gemorroj » 2009.03.04 23:07

ну синтаксических ошибок нет. надо искать в файлах, которые инклудятся.

AND » 2009.03.04 23:13

Файл ini.php

...

Файл opsos.php - скрипт определения оператора с этого сайта

Vadik » 2010.03.11 02:06

Всем привет! Небольшой вопрос по php. Как открыть этот массив закрывая коокие if ($b) {  } чтоб там где $b можно было закрыть $_COOKIE['abc'] и открылась if ($b)? буду очень признателень

Vadik » 2010.03.13 02:55

кодеры, вы шо спите? Или я попал не в темку. Дайте ответа...

Gemorroj » 2010.03.13 07:57

мне не понятен вопрос.

Escos » 2010.03.17 17:20

здравствуйте, нужна функция постраничной навигации

datua » 2010.03.17 18:42

Escos написал:

здравствуйте, нужна функция постраничной навигации

скрипт на SQL или на файлах?

Escos » 2010.03.17 20:26

datua написал:

Escos написал:

здравствуйте, нужна функция постраничной навигации

скрипт на SQL или на файлах?

скрипт на базе MySQL

User » 2010.03.22 14:33

Привет всем! Как сделать так чтоб этот код echo stripslashes($msg); пропускал только бб коды а не теги html? Вставил это echo htmlspecialchars($msg, ENT_QUOTES) но этот пропускает ни теги ни бб кодов..

Gemorroj » 2010.03.22 15:28

Ббкоды пропускает.

User » 2010.03.22 17:37

bb коды пропускает и к тому же теги тоже (<font ...></font> <div>..) Что нужно сделать чтобы html просто выводилса как текст?

Gemorroj » 2010.03.22 17:47

http://php.net/htmlspecialchars

Fashion » 2010.03.26 14:13

помогите извлечь ip из 2 таблицы в соответствии с полем из первой.
Пробую так
SELECT table1.*,table2.*
FROM `online_stat` AS table1
LEFT JOIN `ip` AS table2 ON(table2.min<=table1.ip and table2.max>=table1.ip)
чет не выходит

Gemorroj » 2010.03.26 14:20

что в table1.ip, table2.max и table2.min?

Fashion » 2010.03.26 14:21

table1.ip - конвертированный ip в цыфры
table2.max, table2.min диапазоны ip

Gemorroj » 2010.03.26 14:26

Код:

1
2
3
4
SELECT `online_stat`.*, `ip`.*
FROM `online_stat`, `ip`
WHERE `online_stat`.`ip` >= `ip`.`min`
AND `online_stat`.`ip` <= `ip`.`max`
Fashion » 2010.03.26 14:30

пасиб,помогло

Morgan » 2010.03.26 16:38

Тип столбца : tinytext.
При вставки записи, значение урезается до 142байт.
Кодировка ютф8_бин.
Почему значение укорачивается?

Gemorroj » 2010.03.26 16:39

почему bin ?

Morgan » 2010.03.26 17:32

Потому что без бин нету

Gemorroj » 2010.03.26 17:54

utf8_general_ci чем не устраивает? в данном случае сказать ничего тольком не могу, нужен пример реально некорректно работающего кода и структуры БД

Pure » 2010.03.29 17:16

Как конвертировать  doc в txt на Linux хостинге ?обясните на пальцах или дайте лучше кусочек кода как ето делаеться)

Gemorroj » 2010.03.29 18:01

поищи библиотеки в гугле, стандартными средствами это не сделать.

Morgan » 2010.03.29 20:34

Какая разница между utf8_bin , utf8_general_ci и utf8_unicode ?

Gemorroj » 2010.03.29 21:37

_bin - регистрозависимый, _ci - регистронезависимый.
разницы между unicode и general так сходу не скажу, нужно гуглить.

Morgan » 2010.03.30 00:48

Гугл сказал что юникод лучше сортирует данные, но дольше.
// спасиб, буду знать

Hek » 2010.04.02 01:57

Привет всем! Граблю загруз но при скачивании не загружается файл а просто текст типа код файла, что нужно прописать в htaccess чтоб избежать это?

Gemorroj » 2010.04.02 09:02

deny from all

Roby » 2010.04.02 14:25

Как сделать зеркало сайта?

Gemorroj » 2010.04.02 14:36

поствить модуль mod_proxy

Димa » 2010.04.03 23:38

Гемор, Не помогает(. Я грабил загруз, когда начинаю через него скачать картинку допустим, скачивается не картинка а какой то текст вместо картинки (с тем же размерам), и с любого файла так. Граблю загруз от сеа который у тебя платный, через file_get_contents. Что делать чтоб файлы скачивались нормально?

Димa » 2010.04.03 23:43

Т.е. я Hek случайно написал свое имя вместо Hek'a. Пожалуйста ответь

Gemorroj » 2010.04.04 00:09

Димa, создай отдельную тему и выложи свой код.

Go_chat » 2010.04.04 21:40

Привет. У меня проблема. Мне нужна wаp скрипт чата. Uzchat.chаt.dj/dchаt почему не регистратсия

Morgan » 2010.04.08 18:38

SQL запрос :

Код:

1
SELECT COUNT(*) FROM table GROUP BY `aid`

- нормально

Код:

1
SELECT COUNT(*) FROM table GROUP BY `aid` WHERE COUNT(*) > 1

- ошибка
нужно выбрать только если количество сгруппированных значений больше 1го

Morgan » 2010.04.08 18:53

все, HAVING помог))

Gemorroj » 2010.04.08 20:59

ну да.

Код:

1
SELECT COUNT(1) AS cnt FROM table GROUP BY `aid` HAVING cnt > 1
Саша » 2010.04.09 00:49

Как обьеденить следующие запросы
SELECT * FROM `forum` WHERE `id`= 5 LIMIT 10
дальше в цикле при выводе значений
SELECT `gender` FROM `users` WHERE `id` = `forum`.`author`

, чтобы при выводе в цикле в ячейке gender массива с результатом запроса был результат второго запроса? :)

Gemorroj » 2010.04.09 08:10

Код:

1
2
3
4
5
SELECT `forum`.*, `users`.`gender`
FROM `forum` AS `forum`
LEFT JOIN `users` AS `users` ON `users`.`id` = `forum`.`author`
WHERE `forum`.`id`= 5
LIMIT 10
xits » 2010.04.09 08:12

что выбрать: использовать объединенный запрос или в цикле делать кэшируемый запрос (если этот пользователь уже был в списке то запрос не делается)
в обоих таблицах будет много записей (> 100 000)

Gemorroj » 2010.04.09 08:33

что имеется ввиду под "кэширующим" запросом?

xits » 2010.04.09 08:39

запрос делается через фукц user
static $users;
if(!isset($users[$id]))
{
запрос ($users[$id] = результат)
}
return $users[$id];

Gemorroj » 2010.04.09 08:43

ну так все зависит от того, будет ли использоваться кэш. если в цикле будет более 2 запросов в бд, то скорее всего, следует смотреть в сторону 1 запроса к нескольким таблицам.
Добавлено спустя   2 минуты  38 секунд:
еще, если предпологается работа с большими объемами данных, можно посмотреть в сторону денормализации. т.е. продублировать нужные данные, чтобы к ним можно было легко получить доступ.

xits » 2010.04.09 08:48

понятно, спасибо

willi » 2010.04.11 13:30

Вот такая у меня заморочка. Поставил скрипт, super sea, если создавать папки и лить файлы через админ панель они нормально отображаются, а когда создаю папку или файл с акка их на сайте нет.. Объясните, пожалуйста, как можно это исправить..

Gemorroj » 2010.04.11 13:33

что за super sea, мне не ведомо, если это форк сеа с вапинета, то тебе нужно обновить БД. т.к. инфа о файлах берется оттуда, а не напрямую из файловой системы.

willi » 2010.04.11 14:19

Я незнаю можно ли здесь давать ссылки но я вот здесь скачевал http://4mas.ru/download/index.php?act=view&file=6665&SESID=964e711c6366cab731e8f69f59087320

Gemorroj » 2010.04.11 14:20

http://wapinet.ru/script/show.php?d=%2F … loads2.zip
качай отсюда.

willi » 2010.04.11 14:21

Эта версия очень старая да?

willi » 2010.04.11 14:22

Спасибо.

willi » 2010.04.12 12:28

Админ, та-же самая проблема. Файлы загруженые на сайт не отображаются..

Gemorroj » 2010.04.12 12:41

тот же самый ответ

willi » 2010.04.12 12:52

Что тот-же самый скрипт? Нет, этот я уже отсюда скачал http://wapinet.ru/script/show.php?d=%2FZagruzki%2Fsea_downloads2.zip

willi » 2010.04.12 14:31

Все, спасибо, я допёр:)

Саша » 2010.04.14 23:39

А с обратной сортировкой по полю `forum`.`time` как будет?
Спасибо

Саша » 2010.04.14 23:41

Это к #602

Gemorroj » 2010.04.14 23:52

ORDER BY поле DESC

willi » 2010.04.16 08:23

Привет. Я хочу поставить скрипт 'случайной графической ссылки (баннер)' как защитить картинку от скачкавния?

Gemorroj » 2010.04.16 08:37

никак

willi » 2010.04.16 08:50

Жаль. Спасибо.

willi » 2010.04.21 10:07

админ, привет. вот я в файл foot.php вставил код <? $r = "1";
include("random.php");
?> для вывода графической ссылки. в результате, в целом, файл выглядит вот так <?php
echo round(microtime(true) - $HeadTime,4) . 'с.<br>

<? $r = "1";
include("random.php");
?><a href="http://wapinet.ru/shop.php?sea">.</a>
</body>
</html>';
?>
Но баннер не отображается.. Почему?
P.S. Все файлы лежат в одной папке

Gemorroj » 2010.04.21 11:40

Код:

1
span style="color: #0000BB"><?phpecho round(microtime(true) - $HeadTime, 4) . 'с. <br/>';$r = 1;include 'random.php';?><a href="http://wapinet.ru/shop.php?sea">.</a></body></html>
willi » 2010.04.21 12:03

Спасибо

despod » 2010.07.19 22:09

ребята вот такая проблема не могу по голосам отсортировать чтобы у кого больше голосов тот на первом месте стоял вот в низу сам скрипт

Gemorroj » 2010.07.19 22:13

а теперь в UTF-8 можно?

despod » 2010.07.19 22:26

вот в утф не могу уже сделать ни чего уже неделю мучаюсь

Gemorroj » 2010.07.19 22:53

код ужасен

despod » 2010.07.19 23:02

я просто учусь 3й месяц зато работает на половину

despod » 2010.07.19 23:21

Gemorroj , от души!

Mark » 2010.07.24 10:15

Поскажите пожалуйста как сделать. Есть таблица привата:

  `id` int(11) NOT NULL auto_increment,
  `user` int(11) NOT NULL,
  `author` int(11) NOT NULL,
  `text` varchar(1024) NOT NULL,
  `chit` set('0','1') NOT NULL default '0',
  `time` varchar(25) NOT NULL default '',

Нужно вывести список моих сообщений как на картинке.

Gemorroj » 2010.07.24 10:57

нужна таблица с юзерами

Mark » 2010.07.24 11:15

Таблица с юзерами вот:

  `id` int(9) NOT NULL auto_increment,
  `name` varchar(30) NOT NULL default '',
  `password` varchar(20) NOT NULL default '',
  `sex` varchar(4) NOT NULL default '',
  `live` varchar(50) NOT NULL default '',
  `avatar` int(10) NOT NULL default '0',
  `about` text NOT NULL,
  `browser` text NOT NULL,
  `ip` varchar(30) NOT NULL default '',

Gemorroj » 2010.07.24 19:46

Код:

1
2
3
4
5
6
7
8
SELECT privat.id,
users.name,
(SELECT COUNT(1) FROM privat WHERE author = users.id) AS cnt
FROM privat
LEFT JOIN users ON users.id = privat.author
WHERE privat.user = 1234
GROUP BY privat.author
ORDER BY privat.id DESC
despod » 2010.07.29 19:59

ребята обясните пожалуйста
вот есть 2 таблици
в 1й данные юзера
как мне сделать чтобы юзеру присваивалось со втарой таблице?
например во второй таблице баланс и этот баланс присвоеть в первую таблицу юзерам сколько каждый заработал игравого баланса
спасибо за внимание! не получаеться это делать

Gemorroj » 2010.07.30 10:42

LEFT JOIN

despod » 2010.07.30 10:59

Gemorroj написал:

LEFT JOIN

а можно пример если не трудно буду очень благодарен:)

Gemorroj » 2010.07.30 12:26

несколько постами выше)

despod » 2010.07.30 12:57

Gemorroj написал:

несколько постами выше)

я просто не пойму что такое as  и left join on

Gemorroj » 2010.07.30 14:16

AS - это алиас, просто то что слева AS будет иметь имя которое написано справа AS
LEFT JOIN - это связь с таблицей. Т.е. мы добавляем к нашему запросу еще одну таблицу.
ON - это равнозначно WHERE, только используется в случае с джоинами (JOIN)

despod » 2010.07.30 21:21

Gemorroj написал:

AS - это алиас, просто то что слева AS будет иметь имя которое написано справа AS
LEFT JOIN - это связь с таблицей. Т.е. мы добавляем к нашему запросу еще одну таблицу.
ON - это равнозначно WHERE, только используется в случае с джоинами (JOIN)

спасибо доступно обясняешь:)

despod » 2010.08.05 14:25

привет , ребята а как сделать постраничную навигацию чтобы я в папку закидывал картинки и они вывозились постранично?

Morgan » 2010.08.05 21:20

нужно оптимизировать запросы.
первый запрос :

Код:

1
SELECT id FROM posts

второй (уже при обработке результатов первого)

Код:

1
SELECT COUNT(*) FROM posts WHERE id = $post['someid']

можно ли как то это всунуть в один?
пробовал так

Код:

1
SELECT id,(SELECT COUNT(*) FROM posts WHERE posts.id = posts.someid) AS is_someid FROM posts

но возвращает всегда is_someid = 0

xits » 2010.08.05 21:47

Morgan просто у тя оба posts, думаю из-за него :) попробуй основной через альянс :)
SELECT id,(SELECT COUNT(*) FROM posts WHERE posts.id = main.someid) AS is_someid FROM posts AS main
или
SELECT id,(SELECT COUNT(*) FROM posts WHERE id = posts.someid) AS is_someid FROM posts

Morgan » 2010.08.05 22:11

xits, спасибо!  :)

xits » 2010.08.05 22:18

Morgan написал:

xits, спасибо!  :)

не за что))

aluka » 2010.08.16 21:41

Код:

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `categories` (
`id` tinyint(3) unsigned NOT NULL auto_increment,
`position` tinyint(3) unsigned NOT NULL default '0',
`name` tinytext character set utf8 collate utf8_unicode_ci NOT NULL default '',
`description` tinytext character set utf8 collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

tam vsio provilno i xorosho dzelal? ) eto table dlia blog script

Gemorroj » 2010.08.16 21:57

почему tinyint , у тебя максимум 255 записей может быть чтоли?

aluka » 2010.08.16 22:17

Gemorroj написал:

почему tinyint , у тебя максимум 255 записей может быть чтоли?

int(11) tak? naprimer menia nujno maximum 999 id kak eto dzelat? a eti default zachem vabshe nujno ili net? pokaji primer kak ti etovo dzelaesh pojolusto

Gemorroj » 2010.08.16 22:34

999 - тебе нужно mediumint. http://www.phpclub.ru/mysql/doc/column-types.html

aluka » 2010.08.16 22:36

Gemorroj написал:

999 - тебе нужно mediumint. http://www.phpclub.ru/mysql/doc/column-types.html

spasibo

Gemorroj » 2010.08.16 22:50

щя сам посмотрел типы, по памяти вот ошибся) smallint нужен

aluka » 2010.08.16 22:52

Gemorroj написал:

щя сам посмотрел типы, по памяти вот ошибся) smallint нужен

ok = ))

Morgan » 2010.08.17 12:00

что значит ZEROFILL ?

Gemorroj » 2010.08.17 13:15

подставить нули вначале для типов с фиксированной длиной.

Morgan » 2010.08.17 19:45

где же такое применяется?

Gemorroj » 2010.08.17 19:47

я пока не применял.

Akdmeh » 2010.08.19 21:57

На счёт работы Пирата.
Вот тут спор завязался.
/* Функция отфильтровки чисел */
function int($int)
{
    return abs(intval($int));
}

я считаю, что нехорошо, что функция использует стандартное имя в php. Согласен или это я уже чудю?

Gemorroj » 2010.08.19 22:16

если она вынесена в класс или использует неймспейс, то вроде как считается что все ок. если она в глобальной области видимости, то пхп кинет фатал еррор, т.к. переопределять функции в пхп нельзя. в данном случае, это функция int(), у пхп же языковая конструкция (int). как к этому относиться хз... в доках о таком не читал. лично мне это не нравится т.к. запутывает код.

Akdmeh » 2010.08.19 23:03

Геморрой.
Форум Пирата->system/functions.php
тоже сказал, что это правильно, но не очень хорошо.

Morgan » 2010.08.19 23:52

Akdmeh #660
если ты не заметил, у меня есть такая же функция, с таким же именем :\

ByVlad » 2010.08.21 00:39

Morgan написал:

Akdmeh #660
если ты не заметил, у меня есть такая же функция, с таким же именем :\

Братья по несчастью :(.
Сегодня гуглил по поводу внедрения этой функции в php 6, гугл сказал что не будет. Мы же её в конце концов не цифрой назвали, и с конца в конец не транслитом.

Akdmeh » 2010.08.21 09:57

Но это сбивает пользователя с толку.
Прочитав функцию int я ожидаю от неё поведение - очистку символов не зависимо от знака.
Поэтому у меня такая функция названа absint (абсолютное число, то есть, беззнаковое).
Ну это конечно ваши проблемы)

Morgan » 2010.08.21 15:06

Pirate
почему же по несчастью.
Использование вполне оправданно.
Юзать abs(intval($var)); или abs((int)$var);
не хочу.
Akdmeh
так быстрее писать, понятней, и удобней.
Вот к примеру функция, mysql_real_esace_string, гораздо удобнее использовать escape(), да и если что можно будет поменять алгорит обработчика только в одной функции

Gemorroj » 2010.08.21 17:31

Morgan, если бы ты этот свой int определил в классе, тебе бы никто ничего не сказал. А ты его вынес в глобальную область видимости.

Akdmeh » 2010.08.21 22:20

На счёт mysql_real_escape_string согласен, он у меня давно уже называется
mes - для краткости. Но при этом документируется нормально, и не похож на название стандартного типа.
Это немного удивляет.

ByVlad » 2010.08.22 11:06

Morgan написал:

Pirate
почему же по несчастью.
Использование вполне оправданно.
Юзать abs(intval($var)); или abs((int)$var);
не хочу.
Akdmeh
так быстрее писать, понятней, и удобней.
Вот к примеру функция, mysql_real_esace_string, гораздо удобнее использовать escape(), да и если что можно будет поменять алгорит обработчика только в одной функции

По несчастью по отношению жюри ))).
Я например protect назвал.

Morgan » 2010.08.22 20:41

Gemorroj написал:

Morgan, если бы ты этот свой int определил в классе, тебе бы никто ничего не сказал. А ты его вынес в глобальную область видимости.

Засунуть функции обработки в один статический класс?!

Gemorroj » 2010.08.22 20:52

я скрипты все сегодня просмотрел. там на самом деле много чего в классы запихать нужно.
не обязательно статические.

Akdmeh » 2010.08.23 20:35

Вопрос: как ты считаешь, переопределение mysql-класса для добавления дополнительного функционала - хорошо или нет? Падает ли от этого производительность?

Я говорю о функционале типа:
mysqli_additional extends mysqli{...
?

Gemorroj » 2010.08.23 23:10

да. считаю что это нужно делать обязательно. тогда у нас есть всегда возможность посчитать запросы, задампить их, и вообще есть низкий уровень доступа - а это всегда полезно. скажем, можно в приватных свойствах еще пароли хранить и проч.

ByVlad » 2010.08.25 18:47

$query = mysql_query("select * from `posts` where `text` LIKE '%".urldecode(protect($_GET['query']))."%' order by `id` limit ".$page.",".$set['str']."");
$total = mysql_result(mysql_query("select count(*) from `posts` where `text` LIKE '%".urldecode(protect($_GET['query']))."%'"),0);
как в $total использовать SQL_CALC_FOUND_ROWS?

Gemorroj » 2010.08.25 18:51

Код:

1
2
SELECT SQL_CALC_FOUND_ROWS * FROM `posts` WHERE `text` LIKE '%xxx%' ORDER BY `id` LIMIT 0, 10;
SELECT FOUND_ROWS();
ByVlad » 2010.08.25 18:56

Gemorroj написал:

Код:

1
2
SELECT SQL_CALC_FOUND_ROWS * FROM `posts` WHERE `text` LIKE '%xxx%' ORDER BY `id` LIMIT 0, 10;
SELECT FOUND_ROWS();

$query = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `posts` where `text` LIKE '%".urldecode(protect($_GET['query']))."%' order by `id` limit ".$page.",".$set['str']."");
    $total = SELECT_FOUND_ROWS($query);
так?

Gemorroj » 2010.08.25 19:00

ппц..))
нет, не так)

Код:

1
span style="color: #0000BB"><?php$query = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `posts` where `text` LIKE '%" . protect($_GET['query']) . "%' ORDER BY `id` LIMIT " . $page . "," . $set['str']);$total = mysql_result(mysql_query('SELECT FOUND_ROWS()'), 0);

убери urldecode. такой запрос уязвим. %27

ByVlad » 2010.08.25 19:19

Gemorroj написал:

ппц..))
нет, не так)

Код:

1
span style="color: #0000BB"><?php$query = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `posts` where `text` LIKE '%" . protect($_GET['query']) . "%' ORDER BY `id` LIMIT " . $page . "," . $set['str']);$total = mysql_result(mysql_query('SELECT FOUND_ROWS()'), 0);

убери urldecode. такой запрос уязвим. %27

спасибо, прикрыл дырочку )

Akdmeh » 2010.09.04 00:27

<?php
class input {
    public static function get($key){
        return isset($_GET[$key]) ? $_GET[$key] : false;
    }
    public static function get_int($key){
        return isset($_GET[$key]) ? abs(intval($_GET[$key])) : 0;
    }
    public static function get_post($key){
        return isset($_POST[$key]) ? $_POST[$key] : false;
    }
}
//usage:
$var=input::get('ololo');

это будет метод возвращения значений из поля $_GET без ошибок.
Как считаешь, стоит ли смотреть в эту сторону, или лучше каждый раз делать так:
$var=isset($_GET['ololo']) ? $_GET['ololo'] : false;
Ну в принципе класс можно вообще расширить и сделать что-то типу модуля защиты.
Плюс этого класса - не будет ошибок Notice, если переменную не определить.
Минусы - усложнения логики.

Твоё мнения?

Gemorroj » 2010.09.04 01:54

думаю, если библиотека будет предостовлять помимо этих 3-х методов еще кучу всякого интересного, то вполне имеет право на жизнь. а если ограничиваться этими 3-мя методами, то пользы просто мало видно.

Akdmeh » 2010.09.04 11:46

Думаю, задача класса будет именно в получении данных от пользователя, при чём получение без Notice'ов, а также начальная фильтрация этих данных, например,
input::get_bool input::get_array(это если вводить test[]=1&test[]=4, будет массив, а это вызывает ошибку, и метод get заодно будет проверять тип).
Какие-то ещё идеи будут?)

Gemorroj » 2010.09.04 12:28

нотисы, по моему, второстепенны, т.к. всегда можно вместо тернарника использовать собаку. я, напимер, ей и пользуюсь обычно.

Akdmeh » 2010.09.04 13:04

Ещё в чём минус, если передавать массив(я писал выше) - будут ошибки.
@ действительно довольно сильно тормозит работу, хотя в принципе это не важно)

Gemorroj » 2010.09.04 14:01

Akdmeh, среди ченжлога php5.3 было и ускорение работы собаки. я лично уже все равно полностью пересел на php5.3)

Akdmeh » 2010.09.04 14:31

Геморрой, у меня тоже давно стоит линейка 5.3:)
Вот я в бложеке ещё это смотрел, ну конечно бенчмарки сакс, тем не менее:
http://akdmeh.net/full_text.php?id=68

То есть, эта функция для меня ещё чисто выгодна проверкой переменной на наличие переменной - противная ошибка)))

Morgan » 2010.09.14 11:32

вопрос по части оптимизации, нужно ли ставить индексы на поля по которым идет сортировка?
ORDER BY `field`

Gemorroj » 2010.09.14 12:05

http://dev.mysql.com/doc/refman/5.0/en/ … ation.html
EXPLAIN показывает одинаковые результаты и по полям с индексами и без них

aluka » 2010.09.14 15:48

kagda nado ispolzivat eti funqcii vpdo? bindColumn, bindParam, bindValue. ne ponial opisanie na php.net

Morgan » 2010.09.16 12:18

две таблицы, posts - сообщения и posts_files - файлы сообщений;
делаю вывод

Код:

1
2
3
4
5
6
7
8
9
10
$res = mysql_query('SELECT *, (SELECT COUNT(*) FROM `post_files` WHERE `post_id` = `posts`.`id`) AS `count_files` FROM `posts`');
while($post = mysql_fetch_array($res))
{
....
// если к посту приложены файлы
if($post['count_files'] > 0)
{
//здесь делаю запрос к таблице файлов и еще одним циклом вывожу файлы.
}
}

возможно ли как то оптимизировать?

Gemorroj » 2010.09.16 14:36

добавь 1 запросу HAVING `count_files` > 0

Morgan » 2010.09.16 22:42

нет, не обязательно что бы файлов небыло.

Gemorroj » 2010.09.16 22:53

а понял.

Код:

1
2
3
4
5
SELECT `posts`.*,
`files`.*
(SELECT COUNT(*) FROM `post_files` WHERE `post_id` = `posts`.`id`) AS `count_files`
LEFT JOIN `files` ON `files`.`postId` = `posts`.`id`
FROM `posts`
Morgan » 2010.09.17 13:16

это у меня 4 файла и 4 раза будет пост выведен ;/
немного не то.

Gemorroj » 2010.09.17 15:01

аа... да, там тогда подзапросом можно порпобовать и GROUP_CONCAT

Morgan » 2010.09.28 22:33

Код:

1
DELETE `files`, `dirs` FROM `files`, `dirs` WHERE `files`.`in_dir_id` = '0' OR `dirs`.`in_dir_id` = '0'

цель : удалить записи в таблицах files и dirs, в которых in_dir_id = 0.
удаляет только из таблицы dirs

Morgan » 2010.09.29 21:36

)

okissss » 2010.10.01 16:13

не работает регистрация ICQ почему ? сколько не пробовал выдает ошибку!

Gemorroj » 2010.10.01 17:45

исправил же уже.

okissss » 2010.10.01 18:36

Ошибка!
Проверте правильность данных и попробуйте еще раз


и так не один раз

okissss » 2010.10.01 21:55

обновил скрипт толку 0

Gemorroj » 2010.10.02 10:57

okissss написал:

обновил скрипт толку 0

что значит обновил скрипт? ты про платную версию чтоли?

okissss » 2010.10.02 17:17

да про нее

Gemorroj » 2010.10.02 19:41

okissss, обновил скрипт

okissss » 2010.10.02 21:13

переустановил не отображаеться картинка права на файл temp.jpg поставил как и написано 666

Gemorroj » 2010.10.02 21:33

точно все файлы перезалил? пиши на email.

okissss » 2010.10.03 17:44

сейчас попробую в отдельную папку с 0 поставить отпишусь о результате

Mark » 2010.10.11 17:10

Подскажите пожалуйста как организовать систему смены размера шрифта на сайте. Есть файл style.css и переменная $razmer=11-14. Файл стиля подключаетя к каждому файлу движка. Как сменить в файле стиля значение Font-size. Сейчас на многих сайтах есть такая фишка в личных настройках.Если можна подскажите приблизительный код.

Profi » 2010.10.13 10:53

Gemorroj, привет))) можешь немного помочь? решил написать небльшой скрипт, считающий количество переходов с определённых сайтов на мой.есть база, в которой записаны эти сайты. вытягиваю реферрер - $ref = $_SERVER['HTTP_REFERER']; а дальше туплю - не могу догнать, как сделать, чтоб если такой адрес в базе есть, то + переход, а если нет - ничего не делаем.
if{
$ref = 'http://site1.ru/';
$sql = mysql_query('UPDATE 'ref' SET 'hits' = ('hits' + 1) WHERE 'id' = '1'');
}elseif{
$ref = 'http://site2.ru/';
$sql = mysql_query('UPDATE 'ref' SET 'hits' = ('hits' + 1) WHERE 'id' = '1'');
}
вот так пытаюсь проверить, но не выходит - сервер не доступен...убираю это - доступен...кароч туплю(((
вот база если что
CREATE TABLE IF NOT EXISTS `ref` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `ref` char(30) NOT NULL default '',
  `hits` char(30) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

INSERT INTO `ref` (`id`, `ref`, `hits`) VALUES
(1, 'http://site1.ru/', ''),
(2, 'http://site2.ru/', '');
заранее благодарю)))

Nu3oN » 2010.10.13 13:05

if (isset($_SERVER['HTTP_REFERER'])) {
    $q = mysql_query("SELECT * FROM `ref` WHERE `ref` = '".$ref."';");

    if (mysql_num_rows($q)) {
        mysql_query('UPDATE `ref` SET `hits` = hits+1 WHERE `ref` = '".$ref."';");
    } else {
        mysql_query("INSERT INTO `ref` SET `ref` = '".$ref."';");
    }
}

Это как пример... Не стоит использовать его у себя...

dol@r » 2010.10.14 18:22

как прописывать бд на хостинге h2m.ru.....помогите ....подскажите

Profi » 2010.10.14 22:31

Nu3oN, почему? отфильтровать ток надо))

Fuelen » 2010.10.19 01:11

foreign key (itemname) references AuthItem (name) on delete cascade on update cascade
что значит on delete cascade on update cascade? т.е. как оно работает? если я удалю запись из 1 таблицы, то и связаная запись с другой таблицы удалится? что происходит когда on update cascade??

Gemorroj » 2010.10.19 08:55

1) да, удалится.
2) при обновлении родительской таблицы произойдет действие указанное в ON UPDATE. CASCADE значит обновить инфу у детей в соответствии с данными у родителя.

Fuelen » 2010.10.19 13:25

Т.е, значения полей с одинаковыми названиями будут изменятся в 2 таблицах?

Gemorroj » 2010.10.19 13:28

ага, те, на которые поставлен внешний ключ с соответствующей связью.

Fuelen » 2010.10.19 18:19

у меня только ид связан. остальные поля разные.
ид изменять не буду, значит on update cascade не обязательно. так я понимаю?

Gemorroj » 2010.10.19 18:36

Fuelen, если ты делаешь связь, то в любом случае нужно указать действие и на удаление, и на обновление. Просто по дефолту они RESTRICT http://dev.mysql.com/doc/refman/5.1/en/ … aints.html

If ON DELETE or ON UPDATE are not specified, the default action is RESTRICT.

Fuelen » 2010.10.19 19:34

ясно, спасибо))

Fuelen » 2010.10.19 23:08

есть таблица users (есть поле id) и таблица friends ( поля id, user1_id, user2_id). какой внешний ключ должен быть, чтобы при удалении записи из users, удалялась запись из friends, где user1_id или user2_id = user.id?

FireStorm » 2010.10.27 13:32

У меня проблемма с запросом!

Сам запрос:

Код:

1
2
3
mysql_query("SELECT `f`.*, `s`.`time` FROM `table` AS `f`
JOIN `table` AS `s`
WHERE `f`.`id` = `s`.`cid` GROUP BY `f`.`id` ORDER BY `s`.`time` DESC LIMIT 0,10");

Что надо:
Мне надо чтобы со второй таблицы смотрело последнее время совсем(ну там последнее сообщение в форуме например(а именно время)), а первую таблицу выводило с лимитом 0,10 (это постраничная навигация)... Две таблицы одинаковые... Недавно начал склеивать таблицы, чтобы не уменьшать производительность скриптов...
Если такое было, прошу кинуть ссылочку

Gemorroj » 2010.10.27 14:17

я не совсем вопрос понял.

FireStorm написал:

Две таблицы одинаковые

если они одинаковые, то time есть и у первой?

FireStorm » 2010.10.27 14:44

Ну да... Но мне time со второго запроса надо.... Запрос несколько иной у меня, но суть такова как написала

Gemorroj » 2010.10.27 15:09

ну, по идее должно работать.

FireStorm » 2010.10.27 15:12

Если убрать GROUP BY `f`.`id` то первый результат выдачи, тот который мне нужен...
Добавлено спустя   3 минуты  14 секунд:
Мне так кажется, что лучше добавить в базе еще одно поле(updatetime)... Ну если другого способа не найду

Gemorroj » 2010.10.27 15:25

в чем проявляется некорректность?

ByVlad » 2010.10.27 15:40

Вопрос по SQL:
Есть таблица с постами и темами в форуме, нужно для цикличного вывода тем подсчитать посты в выводимой теме что-то типа этого:
$query = mysql_query("SELECT topics.*,COUNT(*) FROM topics,posts WHERE topic_id=topics.id LIMIT 0,10");

Gemorroj » 2010.10.27 15:44

Код:

1
2
3
SELECT topics.*, COUNT(posts.id) AS cnt
LEFT JOIN posts ON posts.topic_id = topics.id
LIMIT , 10
ByVlad » 2010.10.27 16:04

Gemorroj написал:

Код:

1
2
3
SELECT topics.*, COUNT(posts.id) AS cnt
LEFT JOIN posts ON posts.topic_id = topics.id
LIMIT , 10

Спасибо :).

ByVlad » 2010.10.27 17:22

Gemorroj написал:

Код:

1
2
3
SELECT topics.*, COUNT(posts.id) AS cnt
LEFT JOIN posts ON posts.topic_id = topics.id
LIMIT , 10

Если не сложно, можешь расписать запрос? Ибо я JOIN плохо понимаю.

FireStorm » 2010.10.27 17:26

Gemorroj написал:

в чем проявляется некорректность?

Идея в том, что я пишу форум, для него сделана одна таблица, и мне надо было, чтобы тема где последний пост выводилось само выше..
Добавлено спустя   3 минуты  25 секунд:

Pirate написал:

Gemorroj написал:

Код:

1
2
3
SELECT topics.*, COUNT(posts.id) AS cnt
LEFT JOIN posts ON posts.topic_id = topics.id
LIMIT , 10

Если не сложно, можешь расписать запрос? Ибо я JOIN плохо понимаю.

Описание JOIN

ByVlad » 2010.10.27 17:32

FireStorm написал:

Gemorroj написал:

в чем проявляется некорректность?

Идея в том, что я пишу форум, для него сделана одна таблица, и мне надо было, чтобы тема где последний пост выводилось само выше..

ORDER BY id DESC

FireStorm » 2010.10.27 17:37

Pirate написал:

FireStorm написал:

Gemorroj написал:

в чем проявляется некорректность?

Идея в том, что я пишу форум, для него сделана одна таблица, и мне надо было, чтобы тема где последний пост выводилось само выше..

ORDER BY id DESC

Это аналог того, что и я можно сказать написала выше(в самых первых постах. Я про вывод)... Проблему решила добавлением еще одного поля....

FireStorm » 2010.10.28 12:13

Возник еще один вопрос, играет ли особую роль в производительности при указывании в запросе, что нужен вывод всего лишь одного элемента(LIMIT 1)... И сразу же если да, то тогда следующий вопрос, а есть такое, где это необязательно(тоесть производительность от этого выше не станет)?

ByVlad » 2010.10.28 14:08

FireStorm написал:

Возник еще один вопрос, играет ли особую роль в производительности при указывании в запросе, что нужен вывод всего лишь одного элемента(LIMIT 1)... И сразу же если да, то тогда следующий вопрос, а есть такое, где это необязательно(тоесть производительность от этого выше не станет)?

Если в условии запроса указать ячейку с ключом, например: (id-primary key), то не играет, если это не ключ то лучше делать.
Добавлено спустя   1 минуту  51 секунду:
и мой вопрос)
как сделать в регулярке типа (JAR|SISX)?
preg_match_all

Morgan » 2010.10.28 14:49

FireStorm
как мне кажется, конечно играет.
серверу приходится дергать все строки, а при указании "LIMIT 0,1" он вытянул первую строку и закончил

Gemorroj » 2010.10.28 14:53

FireStorm, есть, если выборка строится на уникальных значениях. Т.е. если на id - PRIMARY KEY, то SELECT * FROM table WHERE id = 10 с лимитом или без, разницы нет.
Добавлено спустя    51 секунду:
Pirate, не совсем понял. Объясно зачем preg_match_all и зачем именно регулярка.

FireStorm » 2010.10.28 15:01

спс, будем знать:) хоть по идее и догадывалась:)

ByVlad » 2010.10.28 15:05

Gemorroj написал:

FireStorm, есть, если выборка строится на уникальных значениях. Т.е. если на id - PRIMARY KEY, то SELECT * FROM table WHERE id = 10 с лимитом или без, разницы нет.
Добавлено спустя    51 секунду:
Pirate, не совсем понял. Объясно зачем preg_match_all и зачем именно регулярка.

Уже разобрался, спасибо.

Morgan » 2010.10.28 15:23

Pirate
SELECT `type` FROM `table` WHERE `type` REGEXP '^(jar|sisx)$'
хотя наверно было бы лучше
SELECT `type` FROM `table` WHERE `type` = 'jar' OR `type` = 'sisx'

Gemorroj » 2010.10.28 15:50

Morgan, вместо REGEXP тут лучше LIKE подошел бы. Но в принципе и так и так неправильно)

ByVlad » 2010.10.28 16:44

Morgan написал:

Pirate
SELECT `type` FROM `table` WHERE `type` REGEXP '^(jar|sisx)$'
хотя наверно было бы лучше
SELECT `type` FROM `table` WHERE `type` = 'jar' OR `type` = 'sisx'

Эм, а mysql зачем?

Morgan » 2010.10.28 20:35

Pirate
Главная » PHP/MySQL » PHP+MySQL
Добавлено спустя    46 секунд:

вместо REGEXP тут лучше LIKE подошел бы.

LIK'ом можно также сделать?

Но в принципе и так и так неправильно)

как так?

ByVlad » 2010.10.28 20:39

Morgan
Главная » PHP/MySQL » PHP+MySQL
preg_match_all

Gemorroj » 2010.10.28 20:56

Morgan, эм, посмотрел внимательнее регулярку, я имел ввиду это)

Код:

1
SELECT `type` FROM `table` WHERE `type` LIKE '%sisx' OR `type` LIKE '%jar'

т.к. вероятно, нужно-таки проверять только расширение.

ByVlad » 2010.10.28 21:14

есть такой массив:
[ids] => Array (
[0] => 35704
[1] => 34552
[2] => 35705
[3] => 35710
[4] => 36700
[5] => 35708
[6] => 35707
[7] => 36699
[8] => 35706
[9] => 35709
[10] => 36701 )
Нужно записать данные в ячейку вот так: 35704|34552|35705|35710|36700|35708|35707|36699|35706|35709|36701|
Количество элементов в массиве может быть разное

Morgan » 2010.10.28 21:27

и в чем вопрос?
implode('|', $ids)

ByVlad » 2010.10.28 21:33

Morgan написал:

и в чем вопрос?
implode('|', $ids)

Спасибо, я забыл что она "склеивает" массив. Либо с телефона башка не варит, либо склероз.

Nu3oN » 2010.10.29 17:05

на сколько данное решение гомнисто?

Код:

1
span style="color: #0000BB"><?phpfunction x_date($time) { $labelTime = date('d.m.Y', $time); $arrM = array( '01'=>'янв', '02'=>'фев', '03'=>'мар', '04'=>'апр', '05'=>'май', '06'=>'июн', '07'=>'июл', '08'=>'авг', '09'=>'сен', '10'=>'окт', '11'=>'ноя', '12'=>'дек' ); if ($labelTime == date('d.m.Y')) { return 'Сегодня в '.date('H:i', $time); } elseif ($labelTime == (date('d') - 1).'.'.date('m.Y')) { return 'Вчера в '.date('H:i', $time); } else { return date('d', $time).' '.$arrM[date('m', $time)].' '.date('Y', $time).' в '.date('H:i', $time); }}?>
Nu3oN » 2010.10.29 17:36

есть ли более лояльные подходы?

Gemorroj » 2010.10.29 17:38

1) до идее должно нотис на labelTime выдать.
2) $labelTime[2] и $labelTime[3] вычисляются и "сегодня", и "вчера", хотя ни там, ни там не используются.
ну а так норм, единственное что лучше уже переползать на класс DateTime. В последнем своем проекте на работе огребли кучу проблем со стандартными php функциями для работы с датой.

Nu3oN » 2010.10.29 17:49

включен полный вывод ошибок, ничего не вывело...
labelTime во всех трех случаях используется...
З.ы я его и так юзаю, просто в данный момент лучше юзать ”это”
Добавлено спустя   7 минут  29 секунд:
поправил немного...

FireStorm » 2010.11.01 11:04

Кто нить дайте FAQ по загрузке файлов с Мини Опера

FireStorm » 2010.11.01 11:55

Уже сам нашел: http://maxmessage.ru/r/1902

Morgan » 2010.11.01 15:48

Проблемы какие-то с запросам.
Такой запрос
"SELECT COUNT(*) FROM `forum_topics` WHERE `last_date` > '1288607120' AND `last_date` < '1288615359'"
Сжирает 122 мсек времени, хотя все другие (и более сложные) не больше 1й мсек.
Кто в этом виноват?
MySQL сервер?

Gemorroj » 2010.11.01 16:32

Код:

1
SELECT COUNT(1) FROM `forum_topics` WHERE `last_date` BETWEEN 1288607120 AND 1288615359

а так?

Morgan » 2010.11.01 16:34

да не в этом дело(
при повторном запросе уже время в пределах разумного.

Gemorroj » 2010.11.01 16:34

и что за тип таблицы? не InnoDB случайно?

Gemorroj » 2010.11.01 16:50

вобщем, в случае с myisam количество записей берется из метаданных - это очень быстро, никаких подсчетов не ведется, в случае же с InnoDB COUNT реально высчитывается.

Morgan » 2010.11.01 19:10

MyISAM

Nu3oN » 2010.11.01 20:03

блин, а я только InnoDB заюзал...
Так что же все таки выбрать? :/

Gemorroj » 2010.11.01 20:11

InnoDB =))) при чем однозначно)) преимущества транзакций и внешних ключей с головой покрывают некоторые недостатки.

Nu3oN » 2010.11.01 21:42

ну да... Меняем скорость на надежность+удобство

Gemorroj » 2010.11.01 21:46

оппа, что это у тебя за аватарка, Nu3oN? сертификат у зенда получил?

Nu3oN » 2010.11.01 21:56

Gemorroj написал:

оппа, что это у тебя за аватарка, Nu3oN? сертификат у зенда получил?

ну нафиг гг так, поржать гг
Я слишком жадный что бы 20к отдавать...

Gemorroj » 2010.11.01 22:18

Nu3oN, насчет цены - это да, дорого штопесдец.

Nu3oN » 2010.11.01 22:24

я бы в принципе сертифицировался если бы знал что буду работать в области разработки... Но нет такой возможности, и тем более я даже не знаю где это востребованно у нас в области =)
Добавлено спустя    51 секунду:
в общем говоря мне оно не надо =)

match » 2010.11.06 19:39

Даброй ночи, подскажите пожалуйста как с помощю preg_match выделить айди в ссылке, допустим есть страница со ссылками типа
<a href="http://sait.ru/dog/?newsid=43">Фильмы</a>

Я хочу загнать страницу в цыкл и через preg_match выделять чило, в даном примере 43.
Как мне это сделать, Вот начал запрос а как продолжыть хз preg_match_all('/<a href="\/dog\/([a-z0-9\_\-\/\.\(\)]+)

Gemorroj » 2010.11.06 19:56

Код:

1
2
3
4
5
$str = '<a href="http://sait.ru/dog/?newsid=43">Фильмы</a>
s
s<a href="http://sait.ru/dog/?newsid=43">Фильмыd</a>df<a href="http://sait.ru/dog/?newsid=45">Фильмы</a>';
preg_match_all('/\?newsid=([0-9]+)">/', $str, $arr);
print_r($arr);
match » 2010.11.07 13:33

Спасибо за помощь. Если есть возможность подскажите как найти выход из ситуации, использовал код который вы дали и возникла проблема как с текста вырезать ненужный блок текста <!-- Archive-Start --><div id='news-id-46'><b>Вид</b>: Фильм<br /><br /> , проблема в том что чило ( в news-id- ) меняется и оно помещено в переменную $val . Пробовал с помощью substr но не получилось.

Profi » 2010.11.07 14:55

привет))) вот у меня есть папка, в ней ещё папки и файлы..а можно её очистить через fopen?

Gemorroj » 2010.11.07 15:45

эммм... WTF?

Profi » 2010.11.07 15:46

Gemorroj,ты мне?)) гг)))

Morgan » 2010.11.07 17:36

Profi
рекурсивный unlink и rmdir тебе поможет

Profi » 2010.11.07 19:00

Morgan, можно подробней, а то я с этим не сталкивался никогда. мне надо просто удалять содержимое папки...

Gemorroj » 2010.11.08 13:38

Код:

1
span style="color: #0000BB"><?phpfunction del_dir($directory){ //exec('rm -r ' . escapeshellarg(realpath($directory))); $dir = opendir($directory); while (($file = readdir($dir)) !== false) { if (is_dir($directory . '/' . $file) && ($file != '.') && ($file != '..')) { del_dir($directory . '/' . $file); } else { unlink($directory . '/' . $file); } } closedir($dir); return rmdir($directory);}
Profi » 2010.11.09 12:59

спасибо))) ток всё равно не вкурил..(((

Nu3oN » 2010.11.09 15:43

а что тут вкуривать?
Пишешь del_dir('./папка_которую необходимо_удалить/');

Profi » 2010.11.09 17:15

всё, разобрался))) тока пока разбирался, раз 5 денвер удалил((( у меня такая структура папок:
папка 1/
в ней этот файл и папка 2, в которой создаются другие файлы и папки...так вот, мне надо, чтоб удалялось содержимое папки 2, а она сама оставалась...а у меня или удаляется всё с папкой, или ваще вся папка home на денвере оО

Gemorroj » 2010.11.09 17:27

rmdir последний убери

Profi » 2010.11.09 19:03

тогда ничего не удаляеится..

Profi » 2010.11.10 21:54

блиииин(((

Код:

1
span style="color: #0000BB"><?phpfunction del_dir($directory){ //exec('rm -r ' . escapeshellarg(realpath($directory))); $dir = opendir($directory); while (($file = readdir($dir)) !== false) { if (is_dir($directory . '/' . $file) && ($file != '.') && ($file != '..')) { del_dir($directory . '/' . $file); } else { unlink($directory . '/' . $file); } } closedir($dir); return rmdir($directory);}del_dir('./111/');?>

сама папка 111 должна остаться, а всё содержимое - удалиться....но у меня всё удаляется...rmdir убираю - вообще ничего((

Gemorroj » 2010.11.11 00:25

Код:

1
span style="color: #0000BB"><?phpfunction del_dir($directory){ $dir = opendir($directory); while (($file = readdir($dir)) !== false) { if (is_dir($directory . '/' . $file) && ($file != '.') && ($file != '..')) { del_dir($directory . '/' . $file); rmdir($directory . '/' . $file); } else { unlink($directory . '/' . $file); } } closedir($dir); return;}del_dir('./111/');
LooK » 2010.11.11 09:56

Здравствуйте.
У меня проблемы с проверкой существования такого же файла. Реализовал структуру:
по ид определяет в какую папку ложить файл(с 1 по 1000 - папка 0; 1001 по 2000 - папка 1 и тд)
добовляет к имени файла ид

Вот так проверял при обычной структуре папок
$pat='../gruz/files/'.$dir_id.'/'.$iden.'_'.$exf[0].'.'.$ext;
$res=mysql_result(mysql_query("SELECT `id` FROM `files` WHERE `path`='$pat' LIMIT 1"),0);

if (mysql_num_rows($res)>0)
{$error=$error.'Такой файл уже существует в БД!';}


Но теперь $pat будет разное....и почему то это еще и варнинг выдает. Как же все таки правильно проверить? Заранее благодарен

Gemorroj » 2010.11.11 10:28

Код:

1
span style="color: #0000BB"><?php$pat = '../gruz/files/' . $dir_id . '/' . $iden . '_' . $exf[0] . '.' . $ext;$q = mysql_query("SELECT `id` FROM `files` WHERE `path`='" . mysql_real_escape_string($pat) . "' LIMIT 1");if (!$q) { $error .= 'Ошибка запроса';} else if (mysql_num_rows($q) > 0) { $error .= 'Такой файл уже существует в БД!';} else { $res = mysql_result($q, 0);}

это по поводу варнинга. а в целом вопроса не понял.

LooK » 2010.11.11 16:20

Мне нужно чтоб один и тот же файл не возможно было загрузить. При такой структуре остается наверно только по имени в бд проверять

Gemorroj » 2010.11.11 16:35

хз... храни md5 сумму от файла в бд, если нужно проверять конкретно данные в файле. если же одинаковое имя файла, то либо в БД проверяй, если там нету, то file_exists

Profi » 2010.11.11 22:06

всё равно папка 111 удаляется, а она должна остаться...

shift » 2010.11.13 16:23

Привет всем! у меня есть функция уменьшения изображений! мне мадо функцию которая уменьшеные изображения выводит с хорошим качеством!

Gemorroj » 2010.11.14 13:49

http://php.net/manual/en/function.image … ampled.php
http://php.net/manual/en/function.imagepng.php

ByVlad » 2010.11.16 17:46

нужно узнать сколько успешных записей произошло при использовании INSERT IGNORE.

Gemorroj » 2010.11.16 19:17

mysql_affected_rows

Nu3oN » 2010.11.21 01:08

Че та уже час втыкаю, и нихрена не пойму о_О

Вот таблица

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-- --------------------------------------------------------
 
--
-- Table structure for table `o]dEa_online`
--
 
CREATE TABLE IF NOT EXISTS `o]dEa_online` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_type` int(11) NOT NULL,
`time_click` int(11) NOT NULL,
`user_agent` text NOT NULL,
`user_ip` varchar(150) NOT NULL,
`user_login` varchar(50) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
 
--
-- Dumping data for table `o]dEa_online`
--
 
INSERT INTO `o]dEa_online` (`id`, `user_type`, `time_click`, `user_agent`, `user_ip`, `user_login`, `user_id`) VALUES
(1, 0, 1290290732, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63', '127.0.0.1', '', 0);

отправляю такой запрос

Код:

1
2
3
4
5
6
7
UPDATE `o]dEa_online` SET
`user_type` = '1',
`time_click` = '1290290732',
`user_login` = 'Nu3oN',
`user_id` = '1'
WHERE `user_ip` = '127.0.0.1'
AND `user_agent` = 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63'

time_click обновляется, а все остальное с нулевым значением...
Добавлено спустя    38 секунд:
тоже самое и при записи

З.ы это mysqli

Nu3oN » 2010.11.21 01:41

ооо блин... теперь еще хлеще история

пишу так

Код:

1
span style="color: #0000BB"><?php $mysqli -> query("INSERT INTO `online` SET `user_type` = '".$setOnline['type']."', `time_click` = '".SITE_TIME_SHIFT."', `user_agent` = '".$mConnect -> user_header('ua')."', `user_ip` = '".$mConnect -> user_header('ip')."', `user_login` = '".$setOnline['login']."', `user_id` = '".$setOnline['id']."'; ");?>

всего один запрос, а вот что выходит в итоге

Код:

1
2
3
INSERT INTO `o]dEa_online` (`id`, `user_type`, `time_click`, `user_agent`, `user_ip`, `user_login`, `user_id`) VALUES
(1, 1, 1290292681, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63', '127.0.0.1', 'Nu3oN', 1),
(2, 1, 1290292681, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63', '127.0.0.1', '', 0);

отправляю один запрос, а записывается дважды о_О

Gemorroj » 2010.11.21 13:37

воспроизвести не удалось (php 5.3.3). вероятно, тут нужно копать в сторону некорректного php кода, а не sql

Nu3oN » 2010.11.21 14:19

ошибка разрешилась сама... думаю надо удалять денвер и ставить топ сервер о_О
то при запуске еще требует какую то библиотеку avicodec.dll вроде...
Добавлено спустя   3 минуты  5 секунд:

Gemorroj написал:

воспроизвести не удалось (php 5.3.3). вероятно, тут нужно копать в сторону некорректного php кода, а не sql

нет... этот запрос отправляется в том виде, что я показал!

я специально писал такую фигню

Код:

1
span style="color: #0000BB"><?phpclass SQL extends MySQLi { public function sqlQuery($q) { if ($this -> real_query($q)) { echo $q.'<br />'; return new SQLResult($this); } else { return false; } }}class SQLResult extends MySQLi_Result {////}?>
Gemorroj » 2010.11.21 15:01

Nu3oN, так а что денвер? от него по сути только автосоздание хостов. php, apache, mysql можно руками самому обновлять из noinstall версий (ссылки могу дать, если надо). avicodec.dll для php_ffmpeg нужен вроде.

Voron » 2010.11.24 14:29

Подскажите пожалуйста как сделать вывод картинки. Есть файл img.php которий подключается на страницу
test.php через echo'<img src="image.php" alt="+"/>'; В файле img.php подключается файл-картинка c адресом http://sait.ru/AAAAAAAAAAAA . Мне нужно чтоб при запросе <img src="image.php" alt="+"/> выводилась картинка с адресом http://sait.ru/AAAAAAAAAAAA .

Пробывал так,для файла image.php, но не фурычит(
 

Код:

1
2
3
4
5
$url = 'http://sait.ru/AAAAAAAAAAAA';
 
$ooo = imageCreateFrompng("$url");
header("Content-type: image/png");
Imagepng($ooo);

Если просто выводить в файле test.php картинку через echo '<img src="http://sait.ru/AAAAAAAAAAAA"/>'; то нормально отображает ее только Opera a Google Chrome  и Internet Explorer нет.

НЕЗНАЙКА » 2010.11.24 15:45

Если она в HTML не отображается, то врядли с PHP все наладится

LooK » 2010.11.27 19:51

Вообщем такая проблема:
С этой http://mobjar.ru/games/8433 (к ресурсу отношения не имею), надо с неё регулярками вырезать экраны, да так чтоб список экранов соответствовал джар файлу. То есть я парсю данную страницу, и записываю в бд. Есть поле с экранами и надо записывать так:
176x220: MOT E398,E770,L7,E1,V3i,Vxxx\n|\n240x320: S40 3ed.\n240x320: S60 3ed.: Symbian 9.1\n
Я смог сделать только чтобы по одной строке с каждого джар файла писалось, а ведь  где одна строка, а где-то две, три, и при чем все это к одной игре относится.

Gemorroj » 2010.11.28 01:48

Код:

1
span style="color: #0000BB"><?php$str = file_get_contents('http://mobjar.ru/games/8433');$str = explode('</table>', $str);$arr = array();for ($i = 1, $all = sizeof($str); $i < $all; ++$i) { $ex = explode('</div>', $str[$i]); $arr[] = trim($ex[0]);}print_r($arr);
LooK » 2010.12.04 21:08

Gemorroj большой спс.
Вот еще небольшой вопрос созрел. Вот как устроена (организованна) страница типа: "Файл подготавливается к скачиванию, подождите 0%. Обновить"
Я так думаю буферизацию надо использовать, а вот что именно в этот момент происходит пока юзер ждет, не догоняю. Ну думаю копирование файлов, а еще что? И вообще как она устроена? Благодарю.

Gemorroj » 2010.12.04 21:32

это js. просто в фоне скачивается файл.

LooK » 2010.12.04 21:59

#802 неа только что смотрел, js'a в странице нету

Gemorroj » 2010.12.04 22:06

ссылку. флеш еще может

LooK » 2010.12.04 22:07

#802, наверное ты меня не понял немного. Вот к примеру на вап сайтах поиск музыки с вконтакта, и там такая страница присутствует. Вот я сам поиск с навигацией написал, теперь над этим думаю

LooK » 2010.12.04 22:27

Напиши там в поиске че нибудь и нажми инфо

Gemorroj » 2010.12.04 22:38

а, ну так в фоне запускается скрипт, который скачивает файл.

LooK » 2010.12.04 22:58

Ну это я понял, а вот сам процесс (0%) с помощью чего выводить, ведь он изменяется

Gemorroj » 2010.12.04 23:10

там перезагрузка страницы стоит.
получаешь размер файла через get_headers, например. скачиваешь. смотришь размер скачанных данных и сравниваешь с размером из get_headers

LooK » 2010.12.04 23:26

Неплохая идея спс, и еще надо функцию flush заюзать, чтоб отдать результат, но при этом продолжая работу)

Gemorroj » 2010.12.04 23:57

телефоны не поймут. перезагружай целиком страницу.

Sitov » 2010.12.05 20:09

Подскажите, как в Sеа идет подсчет файлов в отдельной папке, хочу на главную вывести, а как не пойму

Gemorroj » 2010.12.05 20:44

http://wapinet.ru/script/comment.php?pg … loads2.zip
второй снизу комментарий

Sitov » 2010.12.05 21:10

Не получается!... пишу так
require 'moduls/ini.php';
require 'moduls/fun.php';
require 'moduls/connect.php';


print mysql_result(mysql_query('SELECT COUNT(`id`) FROM `files` WHERE `infolder`="files/!Simbian_9.4" LIMIT 1'),0);

Sitov » 2010.12.05 21:14

вот щас заработал, но показывает только новые файлы

Gemorroj » 2010.12.05 21:24

значит работает не написанный выше sql запрос.

Sitov » 2010.12.05 21:29

Блин.. этот код папки щитает))

Sitov » 2010.12.05 21:31

А есть ведь код, где просто указываеш id папки!

Sitov » 2010.12.05 21:33

вот нащел в index

Код:

1
2
3
4
5
6
7
8
9
10
//Кол-во новых файлов в папке
$new_all="";
$stime=$time-(3600*24*$setup['day_new']);
//NOT USE//$new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` REGEXP "'.$file_info['path'].'*" AND `size` > "0";'));
if($setup['day_new']!=0) $new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` LIKE "'.$file_info['path'].'%" AND `size` > "0";'));
if($new_all[0] and $setup['day_new']!=0) $new_all = '<font color="red">+'.$new_all[0].'</font>'; else $new_all="";
//Всего файлов в папке
//NOT USE//$allinfolder = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `infolder` REGEXP "'.$file_info['path'].'*" AND `size` > "0";'));
$allinfolder = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `infolder` LIKE "'.$file_info['path'].'%" AND `size` > "0";'));
$name = str_replace('*','',$file_info['name']);

че тут переделать?

Gemorroj » 2010.12.05 22:48

Код:

1
span style="color: #0000BB"><?phpcho mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder`="files/!Simbian_9.4" AND `size` > 0 LIMIT 1'), 0);
Sitov » 2010.12.05 23:03

блин это вообще.. тоже не работае..
писал так в отдельном файле! я все это пытаюсь вывести на главной.
$65 = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder`="files/!Simbian_9.4/" AND `size` > 0 LIMIT 1'), 0);

echo '('.$65.')';

LooK » 2010.12.05 23:08

А как сделать чтоб после обновления страницы, скрипт не сначала начинал работу, а откуда надо?
И еще вопрос, так правильно сравнивать размер полученны с get_headers с размером загружаеМОГО файла
if (filesize('data/'.trim($muza[5])) != trim($siz[1]))
??

Gemorroj » 2010.12.05 23:08

переменные не могут начинаться с цифр.
Добавлено спустя   2 минуты  30 секунд:

LooK написал:

А как сделать чтоб после обновления страницы, скрипт не сначала начинал работу, а откуда надо?

скачивать файл должен другой скрипт нежели тот, который генерит страницу с процентами.

LooK написал:

if (filesize('data/'.trim($muza[5])) != trim($siz[1]))

примерно так

Sitov » 2010.12.05 23:12

я и латинскими набирал, все также

Gemorroj » 2010.12.05 23:14

Sitov, что за ошибка-то?

Sitiv » 2010.12.05 23:15

поменял на латинские буквы, показывает (0) хотя файлы есть..

Gemorroj » 2010.12.05 23:17

значит папку указал некорректно

Sitov » 2010.12.05 23:19

да нет.. папка правильная..

Gemorroj » 2010.12.05 23:21

Код:

1
SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Simbian_9.4/%" AND `size` > 0 LIMIT 1
Sitov » 2010.12.05 23:29

Не работает.. хрен с ним! устал уже, щас клаву запулю в угол, если продолжу

Gemorroj » 2010.12.05 23:32

sql запросы-то верные, ты как-то не так их используешь просто.

Sitov » 2010.12.05 23:33

Блин ты не повериш)) получилось))

Sitov » 2010.12.06 01:10

Сново заморочки.. как правильно инклудить счетчик на главной john, делаю так include 'co.php'; и пол страницы исчезаит

Sitov » 2010.12.06 02:43

Все сделал,  ток как теперь вычилить в каждой папке новые файлы %)

Sitov » 2010.12.06 04:13

Как вообще правильно смотреть если новые файлы в папке?

Gemorroj » 2010.12.06 12:38

да. нужно смотреть таймштами timeupload вроде.

Sitov » 2010.12.06 13:56

Код:

1
2
3
//NOT USE//$new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` REGEXP "'.$file_info['path'].'*" AND `size` > "0";'));
if($setup['day_new']!=0) $new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` LIKE "'.$file_info['path'].'%" AND `size` > "0";'));
if($new_all[0] and $setup['day_new']!=0) $new_all = '<font color="red">+'.$new_all[0].'</font>'; else $new_all="";

Вот брал этот код, прописывал папку, которую смотреть надо, в отдельном файле работает
записываю на главну, и показывает все файлы, так выглядит, Windows (23 23)  почему так не пойму

Sitov » 2010.12.06 13:58

вот этот код писал в index возле нужной ссылки

Код:

1
2
3
4
5
6
7
$win = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 LIMIT 1'), 0);
$new_all_files = mysql_result(mysql_query('SELECT COUNT(*) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 LIMIT 1'), 0);
 
if($new_all_files[0]!=0) $new_all = '<font color="red">+'.(int)$new_all_files[0].'</font>'; else $new_all="";
 
//echo '('.(int)$all_files[0].')<font color="red">+'.(int)$new_all_files[0].'</font>';
echo '('.$win.' '.$all_files.')';
Gemorroj » 2010.12.06 14:53

COUNT(1) и COUNT(*) - в данном случае одно и то же.

Код:

1
span style="color: #0000BB"><?php$all = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 LIMIT 1'), 0);$new = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 AND `timeupload` > ' . (time() - 86400) . ' LIMIT 1'), 0);echo $all;if ($new) { echo ' (+' . $new . ')';}
Sitov » 2010.12.06 15:36

нет все также, в файле отдельном например reo.php работает, А когда твой код ставлю прям в index показывант так (55+55) Я так понимаю, нужно к сылки инклуд счетчика делать, но на john не получается,
делаю так include 'reo.php' и нижняя часть страницы исчезает..

Fankus » 2010.12.06 23:43

Все сдел..) остался последний ворос вот на гланой страницы выводится 10 рвзделов я переделал на 15, но теперь когда открываеш папку, например видео там выводится 15 штук..
if($onpage < 3){
$onpage = 10;
вот тут место 10 поставил 15! надо что то добавить?чтоб в нутри папки например было всего на вывод файлов 7 строк

LooK » 2010.12.12 22:54

Код:

1
span style="color: #0000BB"><?phpif (isset($_GET['s'])){$f = get_headers($_GET['s']);$siz = explode(':', $f[4]);$muza = explode('/', $_GET['s']);}if (!file_exists('data/'.trim($muza[5]))){ echo 'Скачивание песни<br />Файл подготавливается к скачиванию, <b>пожалуйста <a href="?">обновите</a> страницу через 5-10 секунд!</b>';}if (filesize('data/'.trim($muza[5])) != trim($siz[1])){ copy($_GET['s'], 'data/'.trim($muza[5]));}else {echo 'Файл загружен';}?>

помогите пожалуйста реализовать, в гет содержится полный путь к файлу.
Все получается тупо, когда файл уже загрузился выводится сообщение, обновить (

Gemorroj » 2010.12.12 23:20

1) у get_headers есть 2 параметр, используй его.
2) url файла, который нужно скачать записывается в таблицу, а скрипт запускаемый кроном через каждые 5 сек читает таблицу и скачивает файлы.
3) скрипт, который описан тобой тут просто должен проверять file_exists

LooK » 2010.12.12 23:34

2) вообще не понял зачем бд юзать

Gemorroj » 2010.12.12 23:44

ну можешь в файл писать. бд просто надежнее.

LooK » 2010.12.13 08:30

А по скорости дат файл не быстрее будет?

Gemorroj » 2010.12.13 11:22

зависит от того как написано будет. разница в любом случае несущественна.

LooK » 2010.12.13 23:38

2) а вариант без крона имеется?

Gemorroj » 2010.12.13 23:54

не думаю. можно, конечно, фигню всякую нагородить с посылкой http запроса, но это оч плохой вариант. не бойся крона.

Morgan » 2010.12.22 19:45

Есть ли разница в результатах запроса при обрамлении строк двойными/одинарными кавычками?

Gemorroj » 2010.12.22 20:16

какого запроса? SQL? нет.

Nu3oN » 2010.12.24 18:44

вот думаю как лучше осуществить мультиязычность сайта?
Хранить все в массиве, или создать например энное колличество папок, с шаблонами на разных языках...
Кто, что думает по этому поводу?

Gemorroj » 2010.12.24 19:03

во первых есть php модуль gettext, использовать ли его, вопрос сложный.
а вот зачем под каждый язык отделная директория совсем не пойму. там же все равно будет по 1 файлу с массивом?

Nu3oN » 2010.12.24 20:12

Нет там будут обычные шаблоны, просто будет текст на разных языках

Gemorroj » 2010.12.24 22:18

ну тогда по любому в разных папках)

tipsun » 2010.12.26 23:23

Хотел спросить, как время мускулом чтоб добавлялось в запись сделать, похожим на time();
Я при запросе посылаю значение time(); и оно же как id записи идет :)

Gemorroj » 2010.12.26 23:41

Делай тип TIMESTAMP, на выходе обрабатывай его через UNIX_TIMESTAMP, если тебе нужен именно он, но лучше средствами mysql и получай дату в нужном виде.

Swinger » 2010.12.30 20:05

mysql:
UNIX_TIMESTAMP(CURDATE()) - говнокод?

Gemorroj » 2010.12.30 23:31

нет

tipsun » 2010.12.31 21:46

Начались какие-то непонятные проблемы с кодировкой... Выбираешь UTF-8 в браузере, в базе прописываешь вручную ТЕКСТ и на выходе <?><?><?><?><?> уже в самом движке.
И наоборот, если с движка прописываешь в базу, то в базе <?><?><?><?><?>
С чем связанно?

Gemorroj » 2010.12.31 22:16

set names

tipsun » 2010.12.31 22:17

Походу с denwer чет не то... я переустановил, все равно проблема не решена...
Везде utf-8 (utf8, utf8_general_ci)...
Добавлено спустя   3 минуты  56 секунд:
Нет, ниче не помогает((
Было вроде все норм...
В браузере ставишь UTF-8 сайт отображается корректно, вводишь с сайта данные и в базе коряво записываются
Сбрасываешь на автомат, сайт отображается не корректно, а введенные с сайта данные, в базу, корректно

Gemorroj » 2010.12.31 23:04

никогда не вини денвер) дело в руках) на основании тех данных которые ты таки не дал. сказать можно только о часто распространенных ошибках. часто - это соединение с mysql сервером с дефолтными настройками, т.е. latin1, а не utf8, решается через set names в скрипте, либо не помню какой директивой в my.cnf

tipsun » 2010.12.31 23:59

Да, точно "latin1".

Код:

1
span style="color: #0000BB"><?phpecho $mysqli->character_set_name();?>

Саму кодировку соединения <latin1> не поменять, как я понял, но все остальное поменял:

Код:

1
2
3
4
5
6
7
8
9
10
set GLOBAL character_set_client=utf8;
set GLOBAL character_set_connection=utf8;
set GLOBAL character_set_database=utf8;
set GLOBAL character_set_results=utf8;
set GLOBAL character_set_server=utf8;
set GLOBAL collation_connection=utf8_general_ci;
set GLOBAL collation_database=utf8_general_ci;
set GLOBAL collation_server=utf8_general_ci;
 
set GLOBAL init_connect=utf8;

Вроде проблема решена, СПС))

Gemorroj » 2011.01.01 01:38

все поменять и решается элементарно как описано в 863 посте

tipsun » 2011.01.01 10:14

Я не понимаю, где и чего менять.
Я сделал запрос (Пост #864) в СУБД Variable все поменялось на необходимое.
Но

Код:

1
span style="color: #0000BB"><?phpecho $mysqli->character_set_name().' and '.$mysqli->client_encoding();# latin1 and latin1?>

Хотя проблем с кодировкой сейчас нет, вроде.
Единственное при restart denwer приходится заново запрос делать на utf8
Я еще побродил по папкам denwer и понял в папке [C:\WebServers\usr\local\mysql-5.1\share\charsets\], что utf8 там и нет

Gemorroj » 2011.01.01 11:03

http://www.php.net/manual/en/mysqli.set-charset.php

tipsun » 2011.01.01 11:07

СПС, сейчас # <utf8> ))

Swinger » 2011.01.02 15:40

в поле country - записи типа RU, EN, UA и т.д..
делаю запрос к примеру WHERE `country` IN ('RU')
все ок, выводит нужные записи, но если RU заменить на на что-нить другое, всеравно выводит

tipsun » 2011.01.11 20:13

ID vs LOGIN
у меня в, уже 2жды (и после ответа подозреваю будет 3жды), говнодвижке primary key на поле LOGIN, a поля ID вообще нет, плохо ли то, что операции прохотят с использованием поля LOGIN?

Gemorroj » 2011.01.11 20:26

не может быть 2 primary ключа. он по определению может быть только 1.
если на login стоит primary и все его отличие от обычного id в типе varchar, то разница особо заметна не будет. хотя int, конечно, всегда будет быстрее varchar

tipsun » 2011.01.11 22:18

Понял. СпС.

tipsun » 2011.01.15 20:25

Вот такой парадокс:

Код:

1
span style="color: #0000BB"><?php//Столбцы: id и who - int и unsigned$array = $sql->query("SELECT `id`, `who`, `login`, `pw` FROM `users` WHERE `login`='$login' LIMIT 1;")->fetch_assoc();$_SESSION['id'] = $array['id'];$_SESSION['who'] = $array['who'];//Почему тогда?$id = isset($_GET['id']) ? abs((int)$_GET['id']) : 0;if($_SESSION['id'] !== $id and 1 < $_SESSION['who']) { header('Location: /?-=usr'); exit(); }//Работает??>

Я уже нашел выход, но все же почему так, если я везде int указал в базе?

Код:

1
span style="color: #0000BB"><?php$_SESSION['id'] = (int)$array['id'];$_SESSION['who'] = (int)$array['who'];?>
Gemorroj » 2011.01.15 23:06

потому что INT оно только в базе, а при выборке оно всегда string. это же php.

tipsun » 2011.01.15 23:18

СпС. Я думал что снова где-то при переделке ошибку допустил.

Gemorroj » 2011.01.16 00:50

зачем ты проверяешь тип переменной? не нужно оно тебе.

tipsun » 2011.01.16 11:28

Я проверяю значение.
who = 1 - админ, 2 - модер, 3 - юзер;
Чтоб получить доспук к изменению своей анкеты надо чтоб авторизация совпадала с ид (который был отправлен формой) либо это был админ
Если оба значения неверны, то выкидывает на главную

Gemorroj » 2011.01.16 15:20

проверка значения в твоем случае должна выглядеть как !=, ты же проверяешь не только значение, но и тип переменной, чего в твоем случае делать не нужно.

tipsun » 2011.01.16 16:44

АА. СПС))
А как быть с 1 < $_SESSION['who']
- Тип проверяться не будет?
- нет оказывается :)

Swinger » 2011.01.17 08:34

Надо легуляркой убрать все пробелы и переносы...
Но кроме текста тот, что в тэгах <pre> ... </pre>

Tinga » 2011.01.25 05:49

Не знаю как реализовать вывод смайлов для просмотра какие есть смайлы.
Для собственно самой функции  смайлов вот так написал:

Код:

1
span style="color: #0000BB"><?phpfunction smile($mess){ $dir = opendir ("smiles"); while ($file = readdir ($dir)) { if (ereg ("\.gif$", $file)) { $smfile[]=str_replace(".gif","",$file); } } closedir ($dir); rsort($smfile); foreach ($smfile as $smval) { $mess = str_replace (":$smval:", '<img src="smiles/'.$smval.'.gif" alt="'.$smval.'"/ >', $mess); } return $mess;}
Tinga » 2011.01.25 06:13

Ну не вписывается короче код

Gemorroj » 2011.01.25 11:58

код ужасен

Dawapanet » 2011.01.25 17:31

Как вевести с бази посетителей за сутки?
Тип даты в строке 00-00-0000 00:00:00

Dawapanet » 2011.01.25 17:46

Вот ето посетители за сутки так вивожу
<?php
$q = mysql_query("SELECT * FROM
`users` WHERE `timeob` LIKE
'".(date("Y"))."-".(date("m"))."-
".(date ("d"))." %:%:%' ORDER BY
`time` DESC LIMIT $s, 10;");
?>

Gemorroj » 2011.01.25 18:20

фак) на говнокод, срочно)

Код:

1
2
3
4
5
6
7
$q = mysql_query("
SELECT *
FROM `users`
WHERE `timeob` > DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY `time` DESC
LIMIT $s, 10;
");
Dawapnet » 2011.01.25 18:29

Огромное спасибо.

Tinga » 2011.01.25 22:08

А как можно реализовать вывод фаилов на экран, с обрезаным типом? В моем случае .gif,
тобишь заместо file.gif
писало просто file.

Gemorroj » 2011.01.25 22:34

можно)

Tinga » 2011.01.25 23:19

А как обрезать тип? У меня сейчас просто выводит содержимое.

Код:

1
span style="color: #0000BB"><?php$dir="smiles";if($OpenDir=opendir($dir)){while(($file=readdir($OpenDir)) !== false)if($file != "." && $file != "..")echo":".$file.":<br>";}closedir ($dir);?>
Dawapnet » 2011.01.25 23:34

Блин етот код виводит посетителей за сегодня. Мне нужна чтоб виводил так с теперешней 2011-01-25 23:50:00 до вчарешней 2011-01-24 23:50:00.

Gemorroj » 2011.01.26 09:41

Tinga написал:

А как обрезать тип?

Код:

1
span style="color: #0000BB"><?php$dir = 'smiles';if ($OpenDir = opendir($dir)) { while (($file = readdir($OpenDir)) !== false) { if ($file != '.' && $file != '..') { echo ':' . htmlspecialchars(pathinfo($file, PATHINFO_FILENAME), ENT_NOQUOTES) . ':<br/>'; } } closedir ($OpenDir);}

Добавлено спустя   5 минут  52 секунды:

Dawapnet написал:

Блин етот код виводит посетителей за сегодня. Мне нужна чтоб виводил так с теперешней 2011-01-25 23:50:00 до вчарешней 2011-01-24 23:50:00.

проверь еще раз. я менял знак `timeob` > DATE_SUB

Nu3oN » 2011.01.29 20:41

Код:

1
span style="color: #0000BB"><?phpDB :: $_sql -> query("UPDATE %users% u, %news% n SET u.`antiflood_time` = ?, u.`antiflood_text` = ?, n.`news_comm` = `news_comm` + 1 WHERE u.`id` = ? AND n.`id` = ?; ") -> arr(time(), $strText, $getUser -> getArr('id'), $id);?>

Что не так в запросе?

Gemorroj » 2011.01.29 22:10

может я сильно отстал от жизни, но 2 таблицы одновременно обновлять нельзя.
ну да, полез в мануал. нельзя же. http://dev.mysql.com/doc/refman/5.5/en/update.html

Nu3oN » 2011.01.29 22:41

чувак, ты отстал от жизни)))
http://ru.w3support.net/index.php?db=so&id=546879
---
З.ы ошибка была с таблицей

Gemorroj » 2011.01.30 00:32

перечитал еще раз мануал, да, отстал..)

Nu3oN » 2011.01.30 01:05

Такая глупая идея у меня... х.з реализовывать или нет!
Есть таблица users для чего она объяснять нет смысла...
так вот, она выходит у меня с кучей полей с которыми я уже запутываюсь!
и вот необходимо теперь еще штук 10 добавить со счетчиками типа колличество сообщений, постов, тем и т.д
и задумался я о создании отдельной таблицы для этого! типа:

Код:

1
id | user_id | total_comm | total_post |total_them | ...

и потом массив кэшировать в файл, и обновлять раз в час например!
Стоит ли это реализовывать? или все же лучше это держать в таблице users?

Gemorroj » 2011.01.30 10:46

ну.. можно держать в отдельной таблице, подгружать ее через INNER JOIN. Кэшировать тоже все можно. По-моему идея здравая.
Всегда же нужно отдавать предпочтение в угоду удобству и поддерживаемости в ущерб производительности.

Profi » 2011.02.01 20:50

привет) помогите плиз) пробую писать подобие парсера, допустим структура папок такая:
папка1/
.папка2/файл1
.папка3/файл1
как сделать так, чтоб каждый раз не прописывать путь к папке, а выкачать папку1 со всем содержимым?

kirill » 2011.02.04 20:56

прошу прощения за тупой вопрос но у меня такая проблема ! к примеру я создал тему для сайта и она лежит по адрессу localhost -> themes/mytheme/ и файлы там style.css header.php footer.php ! мне надо вставить ее к примеру на страницу index.php находящиюся по адрессу localhost->video/films/kino/   делал так через include '/themes/mytheme/header.php'; ....... и выводит ошибку ! много раз проьовал по всякому но ничего у меня не получалось ! подскажите пожалуйста

tipsun » 2011.02.04 21:27

kirill написал:

прошу прощения за тупой вопрос но у меня такая проблема ! к примеру я создал тему для сайта и она лежит по адрессу localhost -> themes/mytheme/ и файлы там style.css header.php footer.php ! мне надо вставить ее к примеру на страницу index.php находящиюся по адрессу localhost->video/films/kino/   делал так через include '/themes/mytheme/header.php'; ....... и выводит ошибку ! много раз проьовал по всякому но ничего у меня не получалось ! подскажите пожалуйста

Ну тут 2 способа:

Код:

1
span style="color: #0000BB"><?phpinclude $_SERVER['DOCUMENT_ROOT'].'/themes/mytheme/header.php';// ИЛИinclude '../../../themes/mytheme/header.php'; // Относительно video/films/kino/index.php// "../" = на 1 подкаталог вверх (назад)?>
LooK » 2011.02.07 22:42

Вот если в виде создавать экземпляр класса навигации, то как же тогда сформировать запрос в базу в модели??

TLENS » 2011.02.07 23:34

include 'Z:/home/localhost/themes/mytheme/header.php';
Добавлено спустя   1 минуту  1 секунду:
На сервере /home/td/tp/themes/mytheme/header.php
Добавлено спустя   6 минут  59 секунд:
а вообще это не вариант.
Попробуй так

Код:

1
span style="color: #0000BB"><?php$dir=$_SERVER['DOCUMENT_ROOT'].'/themes/mytheme/';// Открыть заведомо существующий каталог и начать считывать его содержимоеif (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { print "Файл: $file : тип: " . filetype($dir . $file) . "<br />"; } closedir($dh); }}?>

Добавлено спустя   8 минут :
И посмотри какую папку откроет

Gemorroj » 2011.02.08 12:04

лучше пользоваться константами __FILE__ и __DIR__ (начиная с php 5.3)

LooK » 2011.02.08 21:03

#902 может у кого есть какие идеи, прост ничего не выходит

Gemorroj » 2011.02.08 21:18

LooK, подробнее, какой фреймворк имеется ввиду?

LooK написал:

как же тогда сформировать запрос в базу в модели

это очень абстрактный вопрос.

LooK » 2011.02.08 22:12

Gemorroj, нет это не фреймворк. Вообщем есть два класса модели и вида. В виде создается экземпляр класса навигации и тд, так как же тогда в модели сформировать запрос такого вида "SELECT * FROM `write` GROUP BY `id` DESC LIMIT ".$navig->begin.", ".$navig->pnumber

Gemorroj » 2011.02.08 22:19

из модели у тебя должен быть доступен контроллер, через него и передавай параметры в модель

LooK » 2011.02.08 22:26

Gemorroj, а если у меня такая строка $navig->Navigation() выводит сами ссылки навигации, то как мне это дело в шаблон передать?

Gemorroj » 2011.02.08 22:54

блин... что за $navig что за класс, нихрена же не понятно.

LooK » 2011.02.08 22:57

Gemorroj, класс навигации

Gemorroj » 2011.02.14 17:42

думаю стоит сделать подзапрс, из приведенного SQL я не могу сказать как он точно будет выглядеть. в какой таблице хранятся комментарии?

LooK » 2011.02.14 19:28

Gemorroj, сделал так
SELECT `t1`.id, `t1`.*, `t2`.name AS `c_name`, `t2`.id AS `c_id`, COUNT(`t3`.id) AS `count`
FROM `write` AS `t1` LEFT JOIN `category` AS t2 ON (`t1`.category = `t2`.id)
LEFT JOIN `comment` AS t3 ON (`t1`.id = `t3`.write)
GROUP BY `t1`.id ASC LIMIT
Но выглядит жутко.
А если я вот так результат одного запроса возвращаю, то как правильно возвратить результат нескольких запросов в одном массиве?
$arr = array();
while($q = $res->fetch_array(MYSQLI_ASSOC))
{
$arr[] = $q;
}

Gemorroj » 2011.02.14 20:22

http://www.php.net/manual/en/mysqli-res … ch-all.php php5.3

LooK » 2011.02.14 21:16

Gemorroj, чет все равно не понял, как поступать если несколько запросов (

LooK » 2011.02.17 17:58

А не через эту функцию можно? Как нибудь иначе

Gemorroj » 2011.02.17 18:01

собирай в массив, как сейчас.

Dawapanet » 2011.02.22 20:01

Привет. Подскажи как зделать типа голосовую почту в чате, ну чтоб была такая кнопка "записать голосовое сообщение(аmr)" и после записи отправить сообщение

DarkDaNTe » 2011.02.22 20:51

Хех, это наверное без флеш-приложений и не сделать

Dawapanet » 2011.02.22 21:40

Нужна записать файл аmр и отправить етот файл пользователю (чтоб прослушать файл его нужна проста скачать на тел.) и ненужна думаю некакова приложения. Главное как записать голос чтоп с бравзера невиходить

Dawapanet » 2011.02.22 21:41

Нужна записать файл аmр и отправить етот файл пользователю (чтоб прослушать файл его нужна проста скачать на тел.) и ненужна думаю некакова приложения. Главное как записать голос чтоп с бравзера невиходить

Gemorroj » 2011.02.23 00:20

Dawapanet, как минимум у пользователя микрофон должен быть. далее, думаю просто то что надиктовал аплоадится как обычный файл.

Dawapanet » 2011.02.23 00:46

Ну ето нужна с бравзера телефона виходить и записивать файл а дальше загружать(так неудобно будет). А как зделать так чтоб ненужна с бравзера виходить а записать и сразу отослать?

TLENS » 2011.02.23 01:00

Я воще не слышал о таком.
Например в вебе это решается через flash а вот как на мобиле я хз

Nu3oN » 2011.02.27 11:59

Вот интересно как правильней:

Код:

1
span style="color: #0000BB"><?phpif (!myFunction() xor !$myVar) {...}if (myFunction() xor $myVar) {...}

или

Код:

1
span style="color: #0000BB"><?phpif (myFunction() == false xor $myVar == false) {...}if (myFunction() == true xor $myVar == true) {...}

По мне так удобней второй вариант, т.к я сразу вижу какое условие выполняется!

Gemorroj » 2011.02.27 12:16

по мне удобней 1 вариант, а во 2, как минимум нужно использовать не ==, а ===

Nu3oN » 2011.02.27 12:35

ты же мне в аське говорил обратное, мол лучше == чем ===
Я тебя еще спросил что плохого учитывать тип данных

nord » 2011.02.27 13:15

всем привет, у меня есть чат как мне в нем обновлять текст типо как в аське?

TLENS » 2011.02.27 15:01

nordВ смысле обновлять?
Чтобы автоматически при появлении на сервере появлялось и в браузере или c интервалом например 60сек.?

Gemorroj » 2011.02.27 17:07

Nu3oN, иногда нужно, иногда нет. в данном случае нужно

nord » 2011.02.27 17:59

чтобы как только тебе отправили сообщение  чтобы оно появлялась?

TLENS » 2011.02.27 19:47

nord
Способы общения с сервером

nord » 2011.02.28 08:40

спасибо

tipsun » 2011.02.28 22:37

Помогите пожалуйста с функцией:

Код:

1
span style="color: #0000BB"><?phpfunction online() { GLOBAL $sql; return $sql->query("SELECT COUNT(*) FROM `users`, `guests` WHERE `online`>'".(time() - 240)."'")->fetch_array(); }?>

Мне надо чтоб 1 запросом раздельно можно было получить количество юзеров и гостей - онлайн.

Ну ответ был типа такой:

Код:

1
span style="color: #0000BB"><?php$online = online();echo 'USERS: '.$online[0].'<br/>GUESTS: '.$online[1];?>

Заранее спасибо, даже просто за внимание :)

Gemorroj » 2011.02.28 23:28

Код:

1
span style="color: #0000BB"><?phpfunction online(){ global $sql; $timeout = time() - 240; $users = $sql->query('SELECT COUNT(1) FROM `users` WHERE `online` > ' . $timeout)->fetch_array(MYSQLI_NUM); $guests = $sql->query('SELECT COUNT(1) FROM `guests` WHERE `online` > ' . $timeout)->fetch_array(MYSQLI_NUM) return array('users' => $users[0], 'guests' => $guests[0]);}
tipsun » 2011.02.28 23:31

1 запросом никак не вытащить раздельно данные?
Что быстрее COUNT(*) OR COUNT(1) ?

Gemorroj » 2011.02.28 23:32

подзапросом можно. забей.

tipsun » 2011.02.28 23:34

Ладно, спасибо.

tipsun » 2011.03.05 22:00

Ошибка или же нет если в функции 2 или больше return ??

Gemorroj » 2011.03.05 22:40

все ок

tipsun » 2011.03.05 22:44

СПС))

kirill » 2011.03.11 14:49

день добрый ! я чет тут сижу и и меня не получается склеить флеш плеер с пхп !
я как только и не делал , какие функции и не писал ! смысл получается в том что мне надо чтобы из прочитанной директории сслылка файла была добывленна в эту ф-ию <script type="text/javascript">
        AudioPlayer.embed
        (
            "audioplayer_1",
            {
                soundFile: "СДЕСЬ АДРЕСС ССЫЛКИ",
                titles: "СДЕСЬ НАЗВАНИЕ ФАЙЛА",
помогите кто сможет пожалуйста

Gemorroj » 2011.03.11 15:18

и? напиши там адрес ссылки и название файла)

kirill » 2011.03.11 15:29

Gemorroj написал:

и? напиши там адрес ссылки и название файла)

смысл то в чем получается ! я просто пишу з.ц. для себя , и просто не вариант на каждый файл писать адресс ссылки
=D

kirill » 2011.03.11 21:18

все спасибо не надо уже ! я уже сам вкурил :-)

tipsun » 2011.03.13 20:28

Код:

1
2
3
SELECT COUNT(DISTINCT)
FROM messages
WHERE to='$id' or from='$id';

Как посчитать количество записей, исключая одинаковые, иначе? Этот способ чет не работает :(

Gemorroj » 2011.03.13 22:36

не работает потому что написан не верно.

Код:

1
2
3
SELECT DISTINCT COUNT(1)
FROM messages
WHERE to = '$id' OR from = '$id';
tipsun » 2011.03.13 23:16

СПС.

tipsun » 2011.03.14 17:34

от_кого | кому
.... х .........|... у
.... у .........|... х

Можно ли исключить 1 вариант при существовании 2х сразу, муслулами. Но чтоб если нет 1 из них то это бы не помешало?
Пыхом сделал, там через массив...
- Это для, как бы, открытых диалогов. Если ты или тебе написали сообщение, то у тебя отображается отправитель и у отправителя отображаешься ты

Gemorroj » 2011.03.14 17:40

нуу...

Код:

1
SELECT * FROM table WHERE `from` = $id OR `to` = $id
tipsun » 2011.03.14 17:43

Не. Это пробовал. При ответе на сообщение появляются 2 диалога в списке.

Пыхом я так и сделал, такой запрос, потом сливаю всё в массив заменяя от_кого=моему_ид на кому
и если даже я ответил на сообщение, то $chats = array_unique($chats); нормализует :)
как в одноклассниках типа получилось.
При переходе открывается переписка.
Думал если мускулами можно, то надо бы меньше пыхтеть.

Gemorroj » 2011.03.14 18:10

я ничерта не понял про 2 списка.

tipsun » 2011.03.14 18:13

Код:

1
span style="color: #0000BB"><?php$id = $_SESSION['id'];$q = $sql->query("SELECT DISTINCT from, toFROM messagesWHERE from='$id' or to='$id';");if($q->num_rows){ while($arr = $q->fetch_assoc()) { $dialog[] = $arr['from'] == $id ? $arr['to'] : $arr['from']; } $dialog = array_unique($dialog);}/*from | to | save1 /. Х | У .| Х ...\. Х | У .| У2 / У .| Х .| Х...\. У .| Х .| У1, 2 - сообщение для каждого,если он захочет очистить всё илиудалить сообщение из диалога*/?>
Gemorroj » 2011.03.14 19:09

Вместо DISTINCT лучше используй GROUP BY

tipsun » 2011.03.14 19:11

СПС. Сейчас попробую...
- - - - -
Чет пока не понял как она работает.
Сделал на пофиг:

Код:

1
2
3
GROUP BY from, to
ORDER BY id
DESC;
fokus » 2011.03.14 20:59

http://wapinet.ru/icq/registration_icq.php не работает пишет
Ошибка!
Проверте правильность данных и попробуйте еще раз


и так много раз в чем косяк ?

Gemorroj » 2011.03.14 23:54

fokus, спс

tipsun » 2011.03.15 22:28

tipsun написал:

Код:

1
span style="color: #0000BB"><?php$id = $_SESSION['id'];$q = $sql->query("SELECT DISTINCT from, toFROM messagesWHERE from='$id' or to='$id';");if($q->num_rows){ while($arr = $q->fetch_assoc()) { $dialog[] = $arr['from'] == $id ? $arr['to'] : $arr['from']; } $dialog = array_unique($dialog);}/*from | to | save1 /. Х | У .| Х ...\. Х | У .| У2 / У .| Х .| Х...\. У .| Х .| У1, 2 - сообщение для каждого,если он захочет очистить всё илиудалить сообщение из диалога*/?>

----

Код:

1
span style="color: #0000BB"><?php$id = $_SESSION['id'];$q = $sql->query("SELECT from, toFROM messagesWHERE from='$id' or to='$id'GROUP BY from, toORDER BY from;");if($q->num_rows){ while($arr = $q->fetch_assoc()) { $dialog[$arr['from'] == $id ? $arr['to'] : $arr['from']] = null; } $dialog = array_keys($dialog);}?>

Стыдно за предыдущий код, аайй....
- - - -
В этот раз выдает упорядоченный, без копий, список ИД тех, с кем переписывался, так сказать...

Код:

1
2
3
4
5
6
7
Array
(
[0] => 2
[1] => 7
[2] => 14
[n] => m
)
Nu3oN » 2011.03.18 21:37

гемор, выстави в вап версии margin от левого края пунткта так на 3 хотя бы в подсветке кода

Gemorroj » 2011.03.21 13:44

почитай что такое cron

Gemorroj » 2011.03.22 16:25

POFIGISST, так я вообще не понимаю в чем дело? SQL запрос с удалением составить? Сделать cron задание?
tipsun, это ужасно. LIKE для работы с датами - это верх некомпетентности.

Код:

1
2
3
4
SELECT COUNT(1)
FROM `messages`
WHERE `user_id` = '$user_id'
AND DATE(`date`) = CURDATE()
tipsun » 2011.03.22 16:31

Стыдно мне, стыдно... :(
Внизу написано, что я из себя представляю.
VVVVV

Gemorroj » 2011.03.22 17:04

делай 11 запросов.

tipsun » 2011.03.22 17:07

11 так 11...

Код:

1
span style="color: #0000BB"><?php//Тут оставил свой говнокод БЫДЛОкодер: TiPsun//$_i = 11;$_t0day = 0;$_uid = abs((int) $_GET['uid']);$_today = $_SERVER['REQUEST_TIME'] - 86400;while(0 < $_i) { $_t0day += mysql_result(mysql_query("SELECT COUNT(*) FROM `chat$_i` WHERE aid='$_uid' AND `seconds`>'$_today';"), 0); $_i -= 1; }//Тут оставил свой говнокод БЫДЛОкодер: TiPsun//?>
POFIGISST » 2011.03.23 10:44

tipsun Спасибо те,все работает,и обнуляет ночью ;)

POFIGISST » 2011.03.23 13:12

Возник у меня еще один вопрос)) у меня в чате один чел делал подарки,ник его писать не буду,так как это не столь важно)) Но он сделал,что юзеру можно подарить тголько 1 подарок,он заносится в базу,и вывод идет уже из базы,а я хочу чтоб в базу заносились все подарки,но для каждого подарка (250шт.) создавать отдельное поле в базе это ИМХО,поэтому возник вопрос как сделать в базе,чтоб в одно поле заносились все подарки?)))

Gemorroj » 2011.03.23 13:40

это связь многие ко многим (пользователи к подаркам). стандартная схема - таблица пользователей, таблица подарков, таблица связей пользователей и подарков.

POFIGISST » 2011.03.23 13:42

Сейчас прикреплю страничку которая отвечает за подарки)) а то я полный лох в этом((
Добавлено спустя   4 минуты  33 секунды:
Эт страницы,отвечающие за подарки))

Gemorroj » 2011.03.23 20:08

ага, все бросились переписывать тебе что-то..) задавай вопросы по программингу, а не проси делать что-то за тебя

POFIGISST » 2011.03.23 20:33

а я не просил переделать,я спросил только как это сделать)

tipsun » 2011.03.24 19:27

Что лучше: MySQL, MySQLi, PDO?
На MySQL и MySQLi простецкие алгоритмы смогу составить...
PDO вообще не знаю...

И хорош ли http://code-igniter.ru/?

Akdmeh » 2011.03.24 22:52

Говорят, PDO помогает не зависеть от базы данных.
Лично я понял, что не скоро откажусь от mysqli, поэтому на ПДО переходить не буду.
Хотя можешь перейти)

tipsun » 2011.03.25 00:00

MySQLi удобно. Сам пользуюсь.
Но в страшном PDO есть свои + я чуть просмотрел доки))
- - - -
Мда, PDO - супер вэСЧЬ. То что на MySQLi надо самому придумывать там уже заложено.

Gemorroj » 2011.03.25 08:38

что в PDO страшного? не страшнее php_mysql.
CodeIgniter, не смотря на выход 2 версии, безнадежно устарел. Есть куча более интересных фреймворков.

tipsun » 2011.03.25 09:10

Gemorroj написал:

что в PDO страшного?

код :)

POFIGISST » 2011.03.26 15:34

У мя такая шняга в скрипте,перехожу на страницу реги,а там "Can not open new session file." Не удалось открыть новую сессию,хотя на денвере ставил,все норм был((а на хосте такая фигня((( как её можно исправить?)

Gemorroj » 2011.03.26 17:42

указать директорию с правами на запись для сессий. а администрации сервера надавать по рукам

POFIGISST » 2011.03.26 17:51

Ну если первое можно сделать,то администрации сервера я не как не смогу надавать по рукам)))Спс)))

tipsun » 2011.03.27 18:24

PDO рулит. Gemorroj, спс.

Gemorroj » 2011.03.27 18:32

бредовые тесты, и так ведь ясно было что PDO быстрее, т.к. это нативный php модуль. Написан, на C/C++, а сравниваемые решения на PHP.
Да не в скорости совсем дело. Скорость успеет 100 раз потеряться на плохой архитектуре.

iceman12 » 2011.03.30 22:00

Всегда использую PDO. Сейчас перешел на xPDO... Это конечно зверь...

Gemorroj » 2011.03.30 22:28

iceman12, чем оно лучше Doctrine или Propel?

iceman12 » 2011.03.31 10:48

Gemorroj написал:

iceman12, чем оно лучше Doctrine или Propel?

Эти ORM никогда не приходилось использовать. А хPDO зверь по-сравнению с чистым PDO, я имел ввиду:)

Вот вопросец. Как вы реализуете настройки в ваших приложениях? Т.е. какая-то определенная функция, например, set(key), куда передается ключ, и она возвращает true либо false[или какие-то другие значения, в зависимости от типа данных].
Или как-то иначе?

Gemorroj » 2011.03.31 12:17

настройки... как правило - это что-то не изменяемое, т.е. никаких set нету..
если имелись ввиду какие-то пользовательские настройки, то обычная работа с БД

iceman12 » 2011.03.31 12:22

Gemorroj написал:

настройки... как правило - это что-то не изменяемое, т.е. никаких set нету..
если имелись ввиду какие-то пользовательские настройки, то обычная работа с БД

Ну, а, к примеру, количество объектов для пагинации на страницу(указываемое из Админки)? Или ВКЛ/ВЫКЛ Регистрации? И т.д.
То, что работа с БД - понятно, а как используете в скрипте? Просто через массив?

Gemorroj » 2011.03.31 14:43

тут много факторов на архитектуру могут влиять. зависит от ситуации.
иногда - это объект, иногда массив.
больше делаю массивами.

ERRTT » 2011.04.02 23:57

Подскажите пожалуйта как можно организовать систему мультизагрузки файлов в обменник (с русскими именами файлов).
Допустим есть файл Картинка.jpg а сохранялась как kartinka.jpg на сервере. Использую класс fileupload-class.php, но там если названия файла ььь.jpg то получим файл с названием .jpg Что делать?

Gemorroj » 2011.04.03 00:05

прикрутить транслит

POFIGISST » 2011.04.06 12:44

Тряма всем)))У меня такой вопрос,поставил се на сайт скрипт соцки, phpbb переделанный в соцку)) При установке там должна была быть папка install но её не оказалось,ну вродь так нашел где прописывать базу и пользователя,после того как прописал сделал себя админом через базу))Но вопрос такой,там на главной,стоят ссылки " Форум" "Блоги " и т.д. все работает норм,кроме ссылки на " Фотогалерея" адрес идет там такой http://vcemu.ru/album.php?action=personal_index и я незнаю как исправить,чтоб был мой адрес,откуда там идет  include я х\з ((( http://вапсеть.рф это адрес самой соцки))Помогите плиз(((( Выкладываю index.php )))))))

Gemorroj » 2011.04.06 13:51

по проекту найди текст vcemu.ru и замени на $_SERVER['HTTP_HOST']

POFIGISST » 2011.04.06 14:10

Gemorroj спс,ща буду phpDesigner"ом  юзать файлы))

POFIGISST » 2011.04.06 21:30

какая тут ошибка в 4 строке кода?

Код:

1
span style="color: #0000BB"><?php$url = "http://pic.sever.ru/dc3.php?dir=pic/128x128/3D_grafika/2008_Aprelq"; $images = array(); preg_match_all('/(img|src)=("|')[^"'>]+/i', $data, $media); unset($data); $data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3" ,$media[0]); foreach($data as $url) { $info = pathinfo($url); if (isset($info['extension'])) { if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png)) array_push($images, $url); } }?>
DarkDaNTe » 2011.04.06 21:57

одинарная кавычка посередине
Добавлено спустя   9 минут  14 секунд:
и ошибки еще выскакивать будут

POFIGISST » 2011.04.07 04:38

Эту ошибку исправил,еще показывает что там ошибка(((((

Syngularity » 2011.04.08 00:12

Хочу сделать сайт типа waplib.net
какой скрипт лучше использовать?
Может есть какие библы по работе fb2 ? А может быть есть веб библиотека с нужным функционалом?

Gemorroj » 2011.04.08 08:28

POFIGISST написал:

Эту ошибку исправил,еще показывает что там ошибка(((((

нефиг пользоваться всякими говнофтп. явно видно что отсутствуют обратные слеши.
Добавлено спустя   4 минуты  38 секунд:
Syngularity, сходу находится в гугле http://conferdigit.ru/page/model-dlja-p … fb2-na-php. а вообще, если это xml формат, то проблем с парсером быть не должно.

POFIGISST » 2011.04.08 15:23

Gemorroj написал:

POFIGISST написал:

Эту ошибку исправил,еще показывает что там ошибка(((((

нефиг пользоваться всякими говнофтп. явно видно что отсутствуют обратные слеши.
Добавлено спустя   4 минуты  38 секунд:
Syngularity, сходу находится в гугле http://conferdigit.ru/page/model-dlja-p … fb2-na-php. а вообще, если это xml формат, то проблем с парсером быть не должно.

Я не пользовался говнофтп,я редко использую фтп,и только 2 пользуюсь,на твоем сайте,и еще на одном))Этот код парсера я посмотрел на 4масе,всунул его в phpdesingner(о ктором кстати тож от тебя узнал,спс за это) а там показало что ошибка,я в пыхе лох,поэтому незнал что там за ошибка(((

Gemorroj » 2011.04.08 15:32

Код:

1
span style="color: #0000BB"><?php$url = 'http://pic.sever.ru/dc3.php?dir=pic/128x128/3D_grafika/2008_Aprelq';$images = array();preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $data, $media);unset($data);$data = preg_replace('/(img|src)("|\'|="|=\')(.*)/i', '$3', $media[0]);foreach ($data as $url) { $info = pathinfo($url, PATHINFO_EXTENSION); if ($info == 'jpg' || $info == 'jpeg' || $info == 'gif' || $info == 'png') { array_push($images, $url); }}?>
POFIGISST » 2011.04.08 15:46

Gemorroj Спасибо за помощь,сейчас буду искать различия,а потом буду стараться почему именно так сделано ))

POFIGISST » 2011.04.08 17:33

Такой вопрос возник по мускул,как что нужно выставить в базе,чтоб в поле заносилось не одно название файла))Например,подарки в чате,в базу заносится только название 1 подарка,например 112.jpg ,а я хочу чтоб заносилось например штук 30,и чтоб они выводились если в базе поле не пустое,например если в базе 10 подарков у юзера,то чтоб они все выводились)

Gemorroj » 2011.04.08 18:18

создаешь таблицу куда заносишь подарки и ID пользователей.

Nu3oN » 2011.04.08 22:04

гуманно ли такое решение?
В общем суть функции в том, что когда в цикле выводятся сообщения, и нужно получать информацию о юзере!

Код:

1
span style="color: #0000BB"><?phpfunction user_info($id){ global $getFunction; static $stat = array(); if (!empty($stat[$id])) return $stat[$id]; $set = $return = array(); if ($getFunction -> cacheArray('users_info', 7200) -> life() < time()) { $getUsers = DB :: $dbh -> query("SELECT `user_id`, `user_login`, `user_level`, `user_points`, `user_click` FROM %users%;"); while ($row = $getUsers -> fetch()) { $set['login'] = $row['user_login']; if ($row['user_level'] == 50) { $set['level'] = 'Управляющий'; } else if ($row['user_level'] == 100) { $set['level'] = 'Помощник'; } else if ($row['user_level'] == 200) { $set['level'] = 'Зам.Босса'; } else if ($row['user_level'] == 300) { $set['level'] = 'Босс'; } else { $set['level'] = 'Местный'; } $set['point'] = $row['user_points']; if ($row['user_click'] > time() - 120) { $set['click'] = 'Онлайн'; } else { $set['click'] = 'Оффлайн'; } $result[$row['user_id']] = $set; } $getFunction -> cacheArray('users_info', $result) -> set(); } else { $result = $getFunction -> cacheArray('users_info') -> get(); } if (!empty($result[$id])) { $return = $result[$id]; } return $stat[$id] = $return;}
Gemorroj » 2011.04.08 22:16

в смысле сама функция user_info выполняется в цикле?
есть же кеширование, как я вижу, норм значит)
еще совет, замени везде time() на $_SERVER['REQUEST_TIME'] либо вынеси в константу и юзай ее...

Nu3oN » 2011.04.08 23:23

Gemorroj написал:

в смысле сама функция user_info выполняется в цикле?
есть же кеширование, как я вижу, норм значит)
еще совет, замени везде time() на $_SERVER['REQUEST_TIME'] либо вынеси в константу и юзай ее...

да, это в цикле все происходит! Заменил) я че то даже как то не задумывался о этом))

Gemorroj » 2011.04.08 23:38

а что такое 7200 ? время жизни кэша? вынеси это в настройки какие-нить, заманаешься потом с такими захардкожеными значениями.

Nu3oN » 2011.04.08 23:43

Gemorroj написал:

а что такое 7200 ? время жизни кэша? вынеси это в настройки какие-нить, заманаешься потом с такими захардкожеными значениями.

ну так оно и планируется, просто на время отладки пишу так

tipsun » 2011.04.08 23:45

Функция мега продуманно написана. :)
Возьму на заметку.
- - - -
time() - реальное время.
$_SERVER['REQUEST_TIME'] - время клика.
--
Если ставить $_SERVER['REQUEST_TIME'], то смело из цикла всё махинации с лимитом тунеянства (-120), наверно что-ли...

Gemorroj » 2011.04.09 08:29

tipsun, поскольку скрипт, как правило работает менее секунды, то time() и $_SERVER['REQUEST_TIME'] отличаться не будут. и в любом случае, нам достаточно $_SERVER['REQUEST_TIME'].

Syngularity » 2011.04.09 10:29

#996 скопируйте пожалуйста в .txt

tipsun » 2011.04.09 10:41

TxT #996 utf-8

Syngularity » 2011.04.09 12:03

Я имел ввиду скопировать код с ссылки которую дал Gemorroj в 996 посту, а не сам пост
http://conferdigit.ru/page/model-dlja-parsinga-fb2-na-php

tipsun » 2011.04.09 12:25

Syngularity написал:

#996 скопируйте пожалуйста в .txt

Как написал, так и понял.
Я лично тут про ссылку ничего не вижу. :)

Syngularity » 2011.04.09 12:37

tipsun, и зачем мне файл со ссылкой?
Второй раз я однозначно написал что надо скопировать, и если бы я мог скопировать, так бы и не просил

tipsun » 2011.04.09 13:19

Виноват. Вот код с ссылки.

POFIGISST » 2011.04.09 14:03

Gemorroj написал:

создаешь таблицу куда заносишь подарки и ID пользователей.

У меня создано поле для подарка в базе,но туда только 1 подарок заносится,а делать в базе 300 полей для каждого подарка отдельное поле,то эт не вариант))

Gemorroj » 2011.04.09 14:45

таблицу отдельную делай, а не поле.

POFIGISST » 2011.04.09 14:47

Gemorroj написал:

таблицу отдельную делай, а не поле.

Сейчас сделаю)) Там указать только 2 поля? ид и подарок?)) или еще что-то нужно?))

tipsun » 2011.04.09 15:11

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--Промежуточная таблица------------------------------------------------------------
| oid | from_user_id | from_user_login | to_user_id | present_id | date |
| 1 | 15 | Kinder | 42 | 1 | 08-12-31 23:59 |
| n | x | name | y | z | -------------- |
-----------------------------------------------------------------------------------
 
--Таблица подарков----------------
| present_id | price | about |
| 1 | 100500 | эпилятор |
| z | 9000 | описание |
----------------------------------
 
Каталог подарков:
<img src="/presents/'.$present_id.'.gif" alt="'.$about.'" title="'.$price.'" />
 
Подарки юзера:
<img src="/presents/'.$present_id.'.gif" alt="Подарок" title="От '.$from_user_login.'" />
Или функцию подключай, которая все данные пользователя достает...
 
Мне осталось только колыбельную спеть... xD
Gemorroj » 2011.04.09 15:50

как минимум еще от кого и кому подарок

POFIGISST » 2011.04.09 16:34

я сделаю 5 полей)) 1=id 2=ot 3=komu 4=text(текст к подарку) 5=data думаю вроде все учел))

tipsun » 2011.04.09 17:18

POFIGISST, смотри пост #1018.

tipsun » 2011.04.21 22:00

MemCache by OZ_: http://xwab.ru/forum/topic28301

Gemorroj » 2011.04.21 22:09

я бы не советовал это использовать. поддержи не будет, комментариев нет, стиль кода не PEAR и не Zend

tipsun » 2011.04.22 19:55

Писал с расчетом на защиту от всякой гадости в $_GET['dir'] в моем зц

Норм?

еще чуть наговнокодил

Код:

1
span style="color: #0000BB"><?phpfunction url_dir($dir=0) { return str_replace('//', '/', preg_replace(array('/[^a-z0-9\_\-\/]/i', '/\/{3,}/'), array(null, '/'), $dir)); }/*- - До - -В адресной строкеhttp://test.ru/dls/?dir=..///////.../'////Images///Wallpapers/128x128///../Screensavers/%D1%8D%D0%AD%D0%AD%E2%84%'"дп\\\\\%22/240x320>>- - После - -В переменной $dir будет /Images/Wallpapers/128x128/Screensavers/240x320*/?>
Gemorroj » 2011.04.22 20:00

бред, 100 раз уже сказано, что нет функций "и от запора, и от поноса". можно найти 100500 случаев, когда эти функции пытающиеся защитить от всего неприменимы.

tipsun » 2011.04.22 23:26

Я там еще поговнокодил, вроде от запоропоноса должна помочь.
- - - -
Если нет, то как тогда?
Так:

Код:

1
span style="color: #0000BB"><?php$dir = empty($_GET['dir']) ? '.' : htmlspecialchars(trim($_GET['dir']), ENT_QUOTES);if(false !== strpos($dir, '..') or false !== strpos($dir, '/.')) { header('Location: ?dir='); //знаю про полный адрес, потом укажу у себя exit(); }?>
Gemorroj » 2011.04.22 23:59

что это вообще такое? предлагаешь это на форуме вставить например, штоля?

tipsun » 2011.04.23 00:02

tipsun написал:

Писал с расчетом на защиту от всякой гадости в $_GET['dir'] в моем зц

Норм?

Ну при opendir/readdir без всякой защиты могут ведь прописать /. или /../../ и посмотреть папки, которые находятся выше. Я этого хочу избежать.
+
папки со спец символами я всё равно использовать не буду, значит спец символы тоже исключаем из принятых из $_GET['dir'] данных.
А как же файлы, там же точка и расширение. Ну сделаю прямую ссыль на файлы, а на папки как обычно ?dir=/audio/mp3/

Gemorroj » 2011.04.23 08:26

ну так это очень кастомная вещь. htmlspecialchars там не нужен. и strpos($dir, '/.') тоже не понятно зачем

tipsun » 2011.04.23 08:37

Понял. Спс.

tipsun » 2011.04.23 12:45

Вот додумался так сделать, по-моему самая простая/примитивная защита.

Код:

1
span style="color: #0000BB"><?php$dir = (empty($_GET['dir']) or strpos($_GET['dir'], '..')) ? '.' : trim($_GET['dir']);$files = array();if(is_dir('./'.$dir) and $ondir = opendir('./'.$dir)) { while(false !== ($read = readdir($ondir))) { //ляля } //люлю }?>
Gemorroj » 2011.04.23 22:45

ну да вроде, все ок)

tipsun » 2011.04.24 19:34

Как лучше считать количество эл массива?

Код:

1
span style="color: #0000BB"><?phpwhile(false !== ($read = readdir($ondir))) { //ляля $count += 1; }//или в конце sizeof($array); ??>
Gemorroj » 2011.04.24 20:03

конкретно по твоему вопросу - sizeof
по примеру, у тебя считается кол-во файлов/директорий/ссылок в папке. что совсем не массив.

tipsun » 2011.04.24 20:37

Спс.

POFIGISST » 2011.04.25 11:38

как сделать номера?
вот мой код

Код:

1
span style="color: #0000BB"><?php//подключение к базе$db = mysql_connect("localhost","ололо","олололо");mysql_select_db ("ололоол",$db);//выбор из базы,сортировка,лимит(сколько юзеров выводить)$result = mysql_query("SELECT * FROM chat_users ORDER BY posts DESC LIMIT 4 ",$db);$myrow = mysql_fetch_array ($result);$glavn = "http://x4atix.ru";//Главная// вывод данныхecho'<div class="hdrs">Топ активных</div>'; echo'<div class="dt">'; do{ printf("Ник: %s - %s<br><br>",$myrow ["nickname"],$myrow ["posts"]); }while ($myrow = mysql_fetch_array ($result));echo'<div class="gb">';echo "<a href=\"$glavn\">Главная</a>"; ?>

у меня выводит вот так как на первой картинке ,а я хочу сделать чтоб под номерами выводило,как на второй картинке )) как такое можно сделать?))

Gemorroj » 2011.04.25 11:45

Код:

1
span style="color: #0000BB"><?php//подключение к базе $db = mysql_connect("localhost", "ололо", "олололо");mysql_select_db("ололоол", $db);$glavn = "http://x4atix.ru";//Главная//выбор из базы,сортировка,лимит(сколько юзеров выводить)$result = mysql_query("SELECT * FROM chat_users ORDER BY posts DESC LIMIT 4 ", $db);// вывод данныхecho '<div class="hdrs">Топ активных</div>'; echo '<div class="dt">'; $i = 0;while ($myrow = mysql_fetch_assoc ($result)) { printf(++$i . ') Ник: %s - %s<br><br>', $myrow['nickname'], $myrow['posts']);}echo '<div class="gb">';echo '<a href="' . $glavn . '">Главная</a>';?>
POFIGISST » 2011.04.25 11:50

Gemorroj спс)))Работает тема)))))

POFIGISST » 2011.04.25 12:17

Блин,теперь оно где то теряет 1 юзера(( самого первого не выводит,то есть ставлю лимит 4,а оно выводит 3,ставлю 5,а выводит 4 ((

Gemorroj » 2011.04.25 12:52

логика не поменялась в сравнении с оригиналом. возможно, что-то ты не так скопипастил.

POFIGISST » 2011.04.25 12:56

Код:

1
span style="color: #0000BB"><?php//подключение к базе$db = mysql_connect("localhost","ооо","оооо");mysql_select_db ("000",$db);//выбор из базы,сортировка,лимит(сколько юзеров выводить)$result = mysql_query("SELECT * FROM chat_users ORDER BY posts DESC LIMIT 5 ",$db);$myrow = mysql_fetch_array ($result);$glavn = "http://x4atix.ru";//Главная// вывод данныхecho'<div class="hdrs">Топ активных</div>'; echo'<div class="dt">'; $i = 0;while ($myrow = mysql_fetch_assoc ($result)) { printf(++$i . ') %s - %s<br>', $myrow['nickname'], $myrow['posts']);} echo '<div class="gb">';echo '<a href="' . $glavn . '">Главная</a>';?>

вродь все так)))

Gemorroj » 2011.04.25 13:22

да вот кАк раз и не так.  скопируйПолностьюИзамениТолькоДанныеДляПодключенияКбд

POFIGISST » 2011.04.25 13:33

Точн чет не так я скопировал((((ща все нормик выводит)))))))

Nu3oN » 2011.04.30 17:29

Почитал сегодня о такой возможности в php phar...
Собственно решил обернуть в такой "архив" свои классы типа MVC_BaseController, MVC_Router, DB_ClassBase, DB_Statement
что бы не вносить их в отдельные категории... Что думаете?

Gemorroj » 2011.04.30 18:37

я лично пока смысла не вижу. вообще.

Nu3oN » 2011.04.30 20:17

SILEX имеет такую фичу, всего один файл на весь фрейм

Nu3oN » 2011.05.01 00:01

Задумал такой автолоадер, что думаете?

Код:

1
span style="color: #0000BB"><?php/*** __autoload* * Автоматическая подгрузка классов.** @param string $name Название класса.* @return bool**/function __autoload($name) { // Проверяем подключен ли необходимый класс или нет. if (class_exists($name, false)) { return false; } // Разбиваем название класса по ключу. $arrNameClass = explode('_', $name); $intNameClass = count($arrNameClass) - 1; // Проверяем нужно ли искать класс. if (empty($intNameClass)) { $fileClass = $name; } else { $fileClass = null; for ($i=0; $i<=$intNameClass; ++$i) { if ($i == $intNameClass) $fileClass .= $arrNameClass[$i]; else { $fileClass .= $arrNameClass[$i].'/'; } } } $fileClass = PATH_SYSTEM . 'classes/' . $fileClass . EXPANSION_CLASS; if (! is_file($fileClass)) { trigger_error('No file class: '.$name, E_USER_ERROR); } require_once($fileClass); return true;}
POFIGISST » 2011.05.01 14:26

У мя в phpmyadmin при создании нового поля есть такая тема "Collation" переводит это слово как "Сопоставление" и там идет выбор разных кодировок )) какую кодировку нужно поставить,чтоб там был текст на русском языке,и его нормально выводило?))а то разные кодировки пробовал,а текст все равно выводит квадратиками((или знаками вопроса((

tipsun » 2011.05.01 14:43

utf8_general_ci - вроде + прописываешь при подключении к бд:

Код:

1
span style="color: #0000BB"><?phpmysql_set_charset('utf8', $dbnet);?>
POFIGISST » 2011.05.01 14:48

Код:

1
span style="color: #0000BB"><?php$db = mysql_connect("localhost","ололо","олололо");mysql_select_db ("ололоол",$db)mysql_set_charset('utf8', $db);?>

Эт вот так делать подключение?)))

tipsun » 2011.05.01 14:50

Да.

POFIGISST » 2011.05.01 14:56

tipsun
спс))))

Gemorroj » 2011.05.01 16:59

Nu3oN написал:

    // Проверяем подключен ли необходимый класс или нет.
    if (class_exists($name, false)) {
        return false;
    }

то не понял, автолоадер вызывается только тогда, если класс не найден

POFIGISST » 2011.05.02 03:24

Код:

1
2
3
4
5
do
{
printf("Название статьи - %s<br>Статья:%s<br>Дата написания:%s<br>Автор:%s<br><br>",$myrow['nazv'],$myrow['stat'],$myrow['data'],$myrow['autor']);
}
while ($myrow = mysql_fetch_assoc($result));

как тут дивы прописать?чтоб они были между маркерами %s ?)))

Gemorroj » 2011.05.02 08:59

ну напиши дивы между %s

POFIGISST » 2011.05.02 22:14

Блин,я уже и так

Код:

1
Название статьи - %s<div class="main"><br>Статья:%s......

пробовал ставить дивы,и так

Код:

1
Название статьи - %s echo '<div class="main">'<br>Статья:%s....

а оно ошибку выдает(((

Gemorroj » 2011.05.04 10:59

какую ошибку. не телепаты же.

POFIGISST » 2011.05.04 12:26

Код:

1
<div class=\"main\">Название статьи: %s </br>%sДата:%s<br.....

так надо было дивы прописывать))сейчас уже все норм работает)))

Gemorroj » 2011.05.04 12:29

мде.... бери текст в одинарные кавычки и убери обратные слеши. а так же замени </br> на <br />

POFIGISST » 2011.05.04 12:35

Код:

1
printf("<div class='main'>Название статьи: %s

Вот так?)))

Gemorroj » 2011.05.04 14:13

printf('<div class="main">Название статьи: %s

POFIGISST » 2011.05.04 14:53

Gemorroj
блин пропустил ту кавычку((

Wenwap » 2011.05.06 01:21

Здарова. Подскажи как определить бравзер телефона если юзер с оперы?

TLENS » 2011.05.06 04:16

Wenwap написал:

Но опера передает его в заголовке Usrer-agent

wenwaps » 2011.05.06 19:28

Неважно где. Как определить модель телефона если человек с оперы?

tipsun » 2011.05.06 21:20

Код:

1
span style="color: #0000BB"><?phpecho $_SERVER[HTTP_X_OPERAMINI_PHONE_UA];//или просто:echo '<pre>';print_r($_SERVER);echo '</pre>';//там видно будет, заходи с оперы-мини.?>
Gemorroj » 2011.05.06 22:30

tipsun написал:

$_SERVER[HTTP_X_OPERAMINI_PHONE_UA];

заменить на $_SERVER['HTTP_X_OPERAMINI_PHONE_UA'];

Владислав1 » 2011.05.09 19:45

Всем привет, кто может поправить вот этот полу граб, полу витрину http://upwap.ru/1487462 . Проблема в том что ссылка для скачивания не правильная выдается. Ссылка на скачку должна передаваться через файл load.php, но ссылка идет как на сайте который грабим, из-за скачка не работает :( Пожалуйста помогите.

POFIGISST » 2011.05.10 12:28

Прив народ))такой вопрос возник,как сделать вычет из одного поля в базе определенного кол-во  единиц,и записывало в другое поле тож определенное кол-во единиц?)) например чтобы за монетки можно было покупать рейтинг)) например чтоб снимало за 1% рейтинга 3 монетки))

Gemorroj » 2011.05.10 12:41

рассказать как вычитание делается чтоли?

POFIGISST » 2011.05.10 12:47

Да))как вычитание,и занос в поле в базе)) должно вычитать при покупке рейтинга монетки из поля "monet" и записывать кол во рейтинга который юзер купил в поле "rejting" )

LooK » 2011.05.12 16:31

ID3v2 found. Be aware that the ID3 tag is currently lost when transcoding.
Can't init outfile 'new.mp3'
Это в логах при выполнении лэйма из proc_open, библа для чтения ид3 поставлена. В чем проблема?

Gemorroj » 2011.05.12 16:32

хотелось бы видеть код. Can't init outfile 'new.mp3' намекает о том, что нет прав на запись.

LooK » 2011.05.12 23:00

$descriptorspec = array(
0 => array("pipe", "r"),// stdin это канал, из которого потомок будет читать
1 => array("pipe", "w"),// stdout это канал, в который потомок будет записывать
2 => array("file", "/tmp/error-output.txt", "a"), // stderr это файл для записи
);
$process = proc_open("lame -b 128 /var/www/down/files/test.mp3 new.mp3", $descriptorspec, $pipes);
Ну и тд.
Добавлено спустя   2 минуты  33 секунды:
С терминала подобные команды выполняются без проблем

Gemorroj » 2011.05.12 23:23

new.mp3 создается вообще? с терминала ты работаешь под другим пользователем.

LooK » 2011.05.13 00:36

Не создается

Gemorroj » 2011.05.13 10:09

ну знач прав на запись нет.

LooK » 2011.05.13 15:52

Gemorroj написал:

ну знач прав на запись нет.

Так как же их поставить если я на локале?

Gemorroj » 2011.05.13 16:50

lame -b 128 /var/www/down/files/test.mp3 /var/www/down/files/new.mp3
и папке /var/www/down/files/ дай права 777

DarkRiDDeR » 2011.05.13 16:51

LooK, на локале? Ты же наверно сам устанавливал сервер? Прав нет. Давай операционную систему. И у тебя Apache или что?

LooK » 2011.05.13 20:36

Спс, проблема решена)

LooK » 2011.05.13 21:23

А как лучше создавать превьюшки для мп3 файлов при аплоаде или при переходе по ссылке например "Файл для прослушивания" нарезать?

Gemorroj » 2011.05.13 23:59

хз как лучше.. я бы при аплоаде делал

DarkRiDDeR » 2011.05.14 12:46

При upload ты сам нарезаешь: откуда и куда; но может пользователю что-то по другому охото. Нагрузка на сервер меньше будет зато. А если делать нарезку на сервере, пользователю удобнее будет, хотя не всегда: ты можешь вырезать лучший кусок из песни, а пользователь неизвестно что; и тут надо думать, как лучше сделать и т.д. К тому же нагрузка на сервер больше. Я бы выбрал upload.

LooK » 2011.05.15 11:29

Ну значит при аплоаде.
А как такое меню ссылок организовать при бесконечной вложенности: категория1/подкат/подподкат/статья1 ? Покажите пожалуйста пример кода, может функцию рекурсивную написать?

LooK » 2011.05.15 17:51

Чет тишина совсем... Мож я вопрос не так сформулировал?

Gemorroj » 2011.05.16 10:33

как хранятся в бд эти категории?

DADO » 2011.05.16 11:11

Gemorroj приветы. Помоги пожалуйста с запросом.
//Если пользователь не был в чате за показанную время то снять с поста и отнять все //
Правилен ли такой запрос?
$time = time()-604800;
mysql_query ("UPDATE FROM `users` SET level = '3', bal = '0', posts = '0', status = 'Chatter' WHERE time<$time");

Gemorroj » 2011.05.16 11:13

FROM убери

DADO » 2011.05.16 11:16

Ок. Спосибо.

LooK » 2011.05.16 15:27

Gemorroj написал:

как хранятся в бд эти категории?

`categories`
id | id_cat | name

Gemorroj » 2011.05.16 16:03

и как определяется какая категория родитель, а какая ребенок?

LooK » 2011.05.16 18:50

Gemorroj написал:

и как определяется какая категория родитель, а какая ребенок?

Не понял вопроса, нужно дополнительное поле?

Gemorroj » 2011.05.16 18:51

вообще-то да. parent_id или как-то так. иначе как строится иерархия директорий?

LooK » 2011.05.16 19:03

Gemorroj написал:

вообще-то да. parent_id или как-то так. иначе как строится иерархия директорий?

Так у меня же id_cat играет эту роль

DADO » 2011.05.16 19:45

Gemorroj запрос не пашет с временем. Подумал вставить в инфу там есть отличный точный показатель онлайна. Вот сделал такое но эт тож не сработал.

LooK » 2011.05.19 21:34

В чем может быть проблема? При аплоаде файла есть переменная которая содержит имя, которое будет у файла в папке, так вот в папке оно в ужасной кодировке, а в базу оно же записывается норм

Gemorroj » 2011.05.19 22:02

DADO, что такое $nk? ник чтоли?
LooK, каким образом просматриваешь имя файла? не все клиенты поддерживают отображение имен файлов в utf-8

LooK » 2011.05.19 22:14

$file['name_file'][$i] = pathinfo(mb_strtolower(basename(mb_substr($_FILES['add_file']['name'][$i],0,300))), PATHINFO_FILENAME) . '_' . mt_rand(1, 99) . '.' . $ext;

Gemorroj » 2011.05.20 10:18

что в $file['name_file'][$i] в итоге? посмотри через var_dump(); в какой кодировке строка.

LooK » 2011.05.20 20:00

Gemorroj написал:

что в $file['name_file'][$i] в итоге? посмотри через var_dump(); в какой кодировке строка.

Проверил, вывело в нормальной кодировке

POFIGISST » 2011.05.21 02:50

у меня идет в foot счетчик,прописан он не из админки,и немогу найти откуда его тянет((( вот код foot

Код:

1
span style="color: #0000BB"><?phpif ( !defined('IN_PHPBB') ){ die('Hacking attempt');}global $do_gzip_compress;$admin_link = ( $userdata['user_level'] == ADMIN ) ? '<a href="admin/index.' . $phpEx . '?sid=' . $userdata['session_id'] . '">' . $lang['Admin_panel'] . '</a><br /><br />' : '';//niz_all$q="SELECT `id`, `link`, `name`, `time`, `color`, `all_verh`, `all_niz`, `verh`, `niz`, `teg_b` FROM `phpbb_reklama` WHERE all_niz='1'";$res=mysql_query($q);while($row=mysql_fetch_array($res)) {if (empty($row['color'])) {$color = "<a href='http://".$row['link']."'>".$row['name']."</a>";}else{$color = "<a href='http://".$row['link']."'><font color='".$row['color']."'>".$row['name']."</font></a>";}if ($row['teg_b'] == '1'){$niz_all = "<b>".$color."</b><br/>";}else{$niz_all ="".$color."<br/>";}$t=time();if ($row['time'] < $t){mysql_query("DELETE FROM phpbb_reklama WHERE id = '".$row['id']."'");}else{echo "<br/>$niz_all";}}$template->set_filenames(array( 'overall_footer' => ( empty($gen_simple_header) ) ? 'overall_footer.tpl' : 'simple_footer.tpl'));$template->assign_vars(array( 'TRANSLATION_INFO' => (isset($lang['TRANSLATION_INFO'])) ? $lang['TRANSLATION_INFO'] : ((isset($lang['TRANSLATION'])) ? $lang['TRANSLATION'] : ''), 'PROF' => append_sid('http://'.$board_config['sitename'].'/profile'.$userdata['user_id']), 'LIST' => append_sid('http://'.$board_config['sitename'].'/id'.$userdata['user_id']), 'ANKET' => append_sid('http://'.$board_config['sitename'].'/anketa'.$userdata['user_id']), 'BLOGI' => append_sid('http://'.$board_config['sitename'].'/blog'), 'CHAT' => append_sid('http://'.$board_config['sitename'].'/chat'), 'FORUM' => append_sid('http://'.$board_config['sitename'].'/forum'), 'SOO' => append_sid('http://'.$board_config['sitename'].'/soo.php'), 'FOTO' => append_sid('http://'.$board_config['sitename'].'/foto'), 'SHOP' => append_sid('http://'.$board_config['sitename'].'/shop.'.$phpEx), 'ADMIN_LINK' => $admin_link));$template->pparse('overall_footer');$db->sql_close();if ( $do_gzip_compress ){ $gzip_contents = ob_get_contents(); ob_end_clean(); $gzip_size = strlen($gzip_contents); $gzip_crc = crc32($gzip_contents); $gzip_contents = gzcompress($gzip_contents, 9); $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; echo $gzip_contents; echo pack('V', $gzip_crc); echo pack('V', $gzip_size);}exit;?>

Где тут идет код счетчика? или откуда его инклудит?))

TLENS » 2011.05.21 03:07

Счетчик чего? посетителей?
Добавлено спустя   1 минуту  10 секунд:
Если их то его здесь нет ищи выше ето последний инклюд
Добавлено спустя   2 минуты  11 секунд:
А что за двиг ротор?
Добавлено спустя   5 минут  27 секунд:
правда 43 строка подозрительная
Добавлено спустя   8 минут  45 секунд:
лан я спать

POFIGISST » 2011.05.21 03:20

счетчик ваплога стоит на всех страницах,а где он прописан я х\з (( двиг,это соцка сделанная из phpBB ))счетчик точно гдет в этой странице заныкан,если её удалить,или переименовать,то он исчезает))) ПРиятных снов)))З.Ы. в 6 утра конец света :D так что отсыпайся,вдруг на том свете будет очередь :D

Gemorroj » 2011.05.21 08:34

LooK, ну а чем файлы смотришь? попробуй гменеджером)
Добавлено спустя   1 минуту  12 секунд:
POFIGISST, ну пройдись по темплейтам, да найди

DADO » 2011.05.21 14:26

Gemorroj $nk эт ид пользователя. infophp?id=$id&amp;ps=$ps&amp;nk=$nk&amp;ref=$ref
просто подумал что включая этот запрос в этом внутри этого онлайна будеть еще проще но по моему не робит такой запрос.

POFIGISST » 2011.05.21 14:44

POFIGISST, ну пройдись по темплейтам, да найди

А это как?)))

Waperwen » 2011.05.21 15:00

Привет. Подскажи как зделась чтоб в чате можна покупать посты по смс (например: 500 постов 20 рублей и т.д)?

LooK » 2011.05.21 16:36

POFIGISST написал:

POFIGISST, ну пройдись по темплейтам, да найди

А это как?)))

Просто просмотри все шаблоны и найдешь код счетчика

Windler » 2011.05.21 18:24

Waperwen написал:

Привет. Подскажи как зделась чтоб в чате можна покупать посты по смс (например: 500 постов 20 рублей и т.д)?

Тоесть?
-----
Типо отправсь смс для размещения вашего сообщения? гг

POFIGISST » 2011.05.21 20:53

LooK написал:

POFIGISST написал:

POFIGISST, ну пройдись по темплейтам, да найди

А это как?)))

Просто просмотри все шаблоны и найдешь код счетчика

Ты имеешь в виду по всем страницам пройтись поиском?)))

LooK » 2011.05.21 21:16

Почему ид3 теги обрезает, не целиком вытаскивает?

Gemorroj » 2011.05.22 00:36

LooK, потому что гладиолус. конкретнее давай.

Windler » 2011.05.22 15:08

Gemorroj написал:

LooK, потому что гладиолус. конкретнее давай.

ID3 класс (который читает Тэги из mp3 файла) обрезает тэги на 30 символов, почему?гг

Gemorroj » 2011.05.22 15:53

что за класс? из PEAR который? IDv2? или IDv1? или PECL модуль?

LooK » 2011.05.22 18:20

Windler написал:

Gemorroj написал:

LooK, потому что гладиолус. конкретнее давай.

ID3 класс (который читает Тэги из mp3 файла) обрезает тэги на 30 символов, почему?гг

Да, именно так

Gemorroj » 2011.05.23 11:09

у меня все ок. код давай, которым данные пишешь.

LooK » 2011.05.23 12:36

Gemorroj написал:

у меня все ок. код давай, которым данные пишешь.

$id3=new MP3_Id();
$id3->read($_FILES['add_file']['tmp_name'][$i]);
$id3->study();
echo $id3->getTag('album');

Gemorroj » 2011.05.23 12:50

где тут запись?

LooK » 2011.05.23 12:57

Gemorroj написал:

где тут запись?

Речь то не о записи, а о том что он выводит их обрезанными

Gemorroj » 2011.05.23 13:07

ммм.... странно. все mp3? и в какой кодировке теги? там же ограничение на размер вроде есть все-таки. а UTF-8 в кириллице больше в 2 раза занимает места

LooK » 2011.05.25 08:36

Вообщем теги пока ладно.
Как правильно организовать таблицу песен и таблицу имполнителей, если у одной песни может быть несколько исполнителей?

Gemorroj » 2011.05.25 10:50

таблица песен, таблица исполнителей, таблица связей между таблицами песен и исполнителей.

LooK » 2011.05.25 11:03

Gemorroj написал:

таблица песен, таблица исполнителей, таблица связей между таблицами песен и исполнителей.

Вот как должна выглядеть эта таблица связей?

Gemorroj » 2011.05.25 11:18

id id_author id_song

LooK » 2011.05.26 22:10

"SELECT t1.id, t1.filename, t1.name, t2.id_author, t2.id_song FROM `files` AS t1 LEFT JOIN `svaz` AS t2 ON(t1.id=t2.id_song AND t2.id_author='$id') ")
Где тут че не так? Выводит не то...

Gemorroj » 2011.05.26 22:29

нужно получить все песни исполнителя?

Код:

1
2
3
4
5
6
7
8
SELECT t2.id,
t2.filename,
t2.name,
t1.id_author,
t1.id_song
FROM `svaz` AS t1
LEFT JOIN `files` AS t2 ON (t2.id = t1.id_song)
WHERE t1.id_author = '$id'
LooK » 2011.05.26 22:32

Да все ок, спс

LooK » 2011.05.26 23:08

Код:

1
span style="color: #0000BB"><?phpforeach(array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Э', 'Ю', 'Я', '0-9') AS $value) echo '<a href="'.$config['url'].'/letter.php?let='.rawurlencode($value).'">'.$value.'</a> '; echo '<br/>'; foreach(range('A', 'Z') AS $value) echo '<a href="'.$config['url'].'/letter.php?let='.rawurlencode($value).'">'.$value.'</a> ';

А как вывести подобно этому, но только чтоб как на скрине?

TLENS » 2011.05.26 23:12

используй оператор и счетчик

Код:

1
span style="color: #0000BB"><?phpif($i==7) echo '<br />';

Добавлено спустя   3 минуты  14 секунд:
Или просто в ручную

Код:

1
span style="color: #0000BB"><?phpecho <<<LINK<a href="?page=name&amp;name=0-9">0-9</a><br><a href="?page=name&amp;name=%D0%90">А</a><a href="?page=name&amp;name=%D0%91">Б</a><a href="?page=name&amp;name=%D0%92">В</a><a href="?page=name&amp;name=%D0%93">Г</a><a href="?page=name&amp;name=%D0%94">Д</a><a href="?page=name&amp;name=%D0%95">Е</a><a href="?page=name&amp;name=%D0%96">Ж</a><a href="?page=name&amp;name=%D0%97">З</a><a href="?page=name&amp;name=%D0%98">И</a><a href="?page=name&amp;name=%D0%9A">К</a><br><a href="?page=name&amp;name=%D0%9B">Л</a><a href="?page=name&amp;name=%D0%9C">М</a><a href="?page=name&amp;name=%D0%9D">Н</a><a href="?page=name&amp;name=%D0%9E">О</a><a href="?page=name&amp;name=%D0%9F">П</a><a href="?page=name&amp;name=%D0%A0">Р</a><a href="?page=name&amp;name=%D0%A1">С</a><a href="?page=name&amp;name=%D0%A2">Т</a><a href="?page=name&amp;name=%D0%A3">У</a><a href="?page=name&amp;name=%D0%A4">Ф</a><br><a href="?page=name&amp;name=%D0%A5">Х</a><a href="?page=name&amp;name=%D0%A6">Ц</a><a href="?page=name&amp;name=%D0%A7">Ч</a><a href="?page=name&amp;name=%D0%A8">Ш</a><a href="?page=name&amp;name=%D0%A9">Щ</a><a href="?page=name&amp;name=%D0%AD">Э</a><a href="?page=name&amp;name=%D0%AE">Ю</a><a href="?page=name&amp;name=%D0%AF">Я</a><a href="?page=name&amp;name=%D0%81">Ё</a><br><a href="?page=name&amp;name=a-z">a-z</a><br><a href="?name=zhanr">Жанры саундтреков</a></br>LINK;

Добавлено спустя   5 минут  13 секунд:
Но это я скриптом набрал далее просто подправил и готово

LooK » 2011.05.31 17:55

Как здесь определяются размеры если файлы еще не созданы?

Gemorroj » 2011.05.31 19:20

хм, вероятно, заданы примерные значения на сколько процентов уменьшается файл, если ему понизить битрейт.

POFIGISST » 2011.06.06 14:02

решил поставить фо себе на сайт,выбрал скрипт,на денвере его посмотрел,все оки было,начал ставить на хост,выдает ошибку при заливке базы(( выкладываю скрин с ошибкой((
Добавлено спустя   1 минуту  13 секунд:
как исправить эту ошибку?

tipsun » 2011.06.06 15:53

Ответ...
Таблица 'категория' уже существует.
- - - -
Почисти базу, если там ничего нужного нет.

POFIGISST » 2011.06.06 16:07

Все,базу почистил,теперь нормик залилась))все работает)))

LooK » 2011.06.07 14:48

Вывожу альбом трека так: iconv('windows-1251','UTF-8', $id3->getTag('album', 'Неизвестный'))
Но у многих песн все равно кракозябры. Пробывал сначала определять кодировку из которой изменять, но так вообще альбом выводится перестал.

POFIGISST » 2011.06.07 14:59

из базы берет название трека?

TLENS » 2011.06.07 15:00

POFIGISST
Не с базы а с треков

POFIGISST » 2011.06.07 15:01

аа,сорри,чуть не так прочитал пост((((

TLENS » 2011.06.07 15:45

а что ты от этой строчки хочешь? iconv('windows-1251','UTF-8', $id3->getTag('album', 'Неизвестный'))

LooK » 2011.06.07 16:05

Она выводит альбом композиции - ид3 тэг

TLENS » 2011.06.07 16:07

А зачем ты во второй параметр пинешь неизвестный?

LooK » 2011.06.07 16:14

А это дефолтное значение

TLENS » 2011.06.07 16:20

попробуй те что иероглифами на другой кодировке показать например в орегинальной на ютф8.
Я ког то работал с ними то не помню что бы перекодирував с вин

LooK » 2011.06.07 16:23

не понял тебя... я же их и так в ютф8 вывожу

TLENS » 2011.06.07 16:24

а это что iconv('windows-1251','UTF-8' убери

LooK » 2011.06.07 16:26

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

TLENS » 2011.06.07 16:28

ну ты просто utf переводил в utf

LooK » 2011.06.07 16:29

ага

Nu3oN » 2011.06.07 23:04

Есть такой запрос

Код:

1
span style="color: #0000BB"><?php$getPost = DB :: $dbh -> query("( SELECT * FROM `nu3on_inbox` WHERE `inbox_in` = ? AND `inbox_out` = ? ) UNION ALL ( SELECT * FROM `nu3on_outbox` WHERE `outbox_in` = ? AND `outbox_out` = ? ) ORDER BY `inbox_time` DESC LIMIT ".$start.", ".$config['privatpost']."; ", array($id, $udata['users_id'], $id, $udata['users_id']) );?>

Но по какой то причине иногда сортируются сообщения в неправильном порядке!
грубо говоря 5 пост может оказаться третьим при выводе, а третий четвертым и т.д!
в чем причина не догоняю... пытался сортировать по id, но получается еще хуже

Gemorroj » 2011.06.08 10:07

так у тебя же там 2 таблицы, а сортировка идет только по полю из одной таблицы

Nu3oN » 2011.06.08 12:39

так после все поля из nu3on_outbox потом имеют имена таблицы nu3on_inbox

Gemorroj » 2011.06.08 13:53

не совсем понял, имена колонок в таблицах одинаковые? зачем тогда такая выборка из 2-х таблиц?

POFIGISST » 2011.06.09 00:19

Вот у меня идет постраничная навигация

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if($all>1){
echo '<div class="iblock">Страницы: ';
$asd = $page - 2;
$asd2 = $page + 3;
if($asd<$all && $asd>0 && $page>3) echo '<a href="index.php?id='.$id.'&amp;page=1">1</a> ... ';
for ($i=$asd; $i<$asd2; $i++) {
if ($i<$all && $i>0) {
if ($i > $pages ) break;
if ($page==$i) {
echo '<strong>['.$i.']</strong> ';
} else {
echo '<a href="index.php?id='.$id.'&amp;page='.$i.'">'.$i.'</a> ';
}
}
}
if($i <= $pages)
{
if($asd2<$all) echo ' ... <a href="index.php?id='.$id.'&amp;page='.$pages.'">'.$pages.'</a>';
}
echo '<br>';

и её выводит примерно так "Страницы: 1 [2] 3 " а как сделать чтобы было просто вот так "Назад | Далее" или если это 1 страница то так "... | Далее"  подскажите пожалуйста)

POFIGISST » 2011.06.09 00:41

а как можно сделать в сеа,чтоб на главной странице выводило например все папки на 1 странице,например 10,20 папок,все чтоб они шли на 1 странице,а на страницах с выводом файлов чтобы так и оставался лимит вывода файлов который настроен в админке,например чтоб на 1 страницу выводило 10 или 20 файлов,ну как в админке заданно)) потому что если вот эту 

Код:

1
$onpage = get2ses('onpage');

строку изменить например так

Код:

1
$onpage = 5;

то и на главной странице зц будет выводить 5 папок(((

TLENS » 2011.06.09 00:44

ну на главной поставь 10 в чем проблема?

POFIGISST » 2011.06.09 00:48

ну на главной идет вот такая

Код:

1
2
3
$query = mysql_query('SELECT `id` FROM `files` WHERE `infolder` = "'.$d['path'].'" ORDER BY '.$MODE.' LIMIT '.$start.', '.$onpage);
while ($list_sw = mysql_fetch_row($query)) {
$array_id[] = $list_sw[0];

вытаска файлов,и если я изменяю значение переменной $onpage,или заменяю её на другую переменную,то это влияет на все страницы сайта((а мне нужно чтобы только на главную страницу влияло(((

TLENS » 2011.06.09 00:51

ну подключи оператора $onpage = (Главная) ? 10 : 5;

POFIGISST » 2011.06.09 00:53

а как его подключить?))там где ты написал (Главная),  писать index ?

TLENS » 2011.06.09 00:58

$onpage = (($_SERVER['SCRIPT_NAME'] == '/index.php' && empty($_GET['id'])) ? 10 : 5);

POFIGISST » 2011.06.09 01:01

Бля,работает :O спасибо огромнейшее :o  ;)

Nu3oN » 2011.06.10 23:12

Gemorroj написал:

не совсем понял, имена колонок в таблицах одинаковые? зачем тогда такая выборка из 2-х таблиц?

ну попробуй, и сам все увидишь))

Nu3oN » 2011.06.10 23:35

Хрен с ним... решил я сделать так:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `rotorcms`.`nu3on_privat` (
`privat_id` int NOT NULL AUTO_INCREMENT,
`privat_type` enum('in', 'out') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`privat_inbox` varchar(21) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`privat_otbox` varchar(21) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`privat_time` int NOT NULL,
`privat_text` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`privat_read` bool NOT NULL,
PRIMARY KEY (`privat_type`, `privat_inbox`, `privat_otbox`, `privat_id`),
INDEX ( `privat_id` )
)
ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
Gemorroj » 2011.06.10 23:47

`privat_inbox` varchar(21) - что тут такое хранится интересное на 21 символ?
`privat_read` bool NOT NULL - на сколько я помню, в mysql нет буля, технически там enum подставляется.

Nu3oN » 2011.06.10 23:58

Gemorroj написал:

`privat_inbox` varchar(21) - что тут такое хранится интересное на 21 символ?
`privat_read` bool NOT NULL - на сколько я помню, в mysql нет буля, технически там enum подставляется.

Ну вообще по принципу идет bool как tinyint в один символ!
а varchar(21) это на роторе логин везде используется вместо id.
Я в прошлый раз пытался обойтись одними id, но это накладно! часто приходится делать запрос к базе что бы по логину узнать id пользователя

POFIGISST » 2011.06.17 22:49

Как вырезать из этого

Код:

1
span style="color: #0000BB"><?phpini_set('display_errors',0); ini_set ('register_globals', 0);session_name('SID'); session_start();############################################################################################$host= "gamerix.ru"; $path="/sms/?".$_SERVER ['QUERY_STRING'];$fp=fsockopen($host,80,$errno, $errstr,10);if(!$fp) { echo "$errstr ($errno)<br/>\n"; }else{$data = "";$post=0; foreach($_POST as $key=>$value){$post=1; $data.="&$key=$value";} if($data)$data=substr ($data,1);if($post) $headers = "POST $path HTTP/1.0\r\n";else$headers = "GET $path HTTP/1.0\r\n"; $headers.= "Host: $host\r\n";$headers.= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n";$headers.= "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1*;q=0.1\r\n";$headers.= "Accept-Encoding: utf-8\r\n";$headers.= "Accept-Language: ru, en;q=0.9\r\n";$headers.= "User-Agent: ".$_SERVER ['HTTP_USER_AGENT']."\r\n";if($post){ $headers.= "Content-type: application/x-www-form-urlencoded\r\n";$headers.= "Content-Length: ".strlen ($data)."\r\n";$headers.= "\r\n"; $headers.= $data;}else $headers.="\r\n";@fwrite($fp, $headers); while($file != "\r\n") $file = @fgets($fp, 128);$file = ''; while(!feof($fp)) $file.= @fgets($fp, 4096); @fclose($fp); }############################################################################################$file=preg_replace('|<!DOCTYPE(.*?)<hr class="dotted" />|is','</div>',$file);$file=preg_replace('|<img src="imgs/add(.*?)</div>|is','</div>',$file);$file=preg_replace('|<img src="imgs/top(.*?)</div>|is','</div>',$file);$file=preg_replace('|<img src="../themes/(.*?)</body>|is','</br><a href="/">На главную</a>',$file);$file = str_replace('<img src="imgs/accept_page.png" alt="img"/>','',$file);$file = str_replace('<img src="imgs/','<img src="http://gamerix.ru/sms/imgs/',$file);echo $file;?>

грабба рекламу которая в верху, вот пример ,и заменить фавиконку на свою?))

DADO » 2011.06.19 00:35

Приветы. Одинь вопрос. Если корень станицы хtml и еще филтируется в inc.php то такую ссылку можно вставить?
test.php?ver=wml&amp;id=$id&amp;ps=$ps&amp;ref=$ref\"> или убрать из урла ver=wml?
Посоветуйте пожалуйста.

POFIGISST » 2011.06.19 07:25

а  как это корень страницы хtml ?))корень это если я не ошибаюсь,то это папка а не страница))

DADO » 2011.06.19 07:45

echo "<!DOCTYPE html PUBLIC \"-//WAPFORUM//DTD XHTML Mobile 1.0//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
echo "<head>";
echo "<title>$url-($num)</title>";
if ($avr==0) echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>";
else echo "<META HTTP-EQUIV=\"Refresh\"  версия xhtml

POFIGISST » 2011.06.19 07:49

ну и в php так же))вот например страница вывода юзеров из базы в чате

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!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" xml:lang="en" lang="en">
 
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="" />
 
<title>Неназванный 3</title>
</head>
 
<body>
 
<?php
 
//подключаемся к базе
$db = mysql_connect("localhost","test","123456");
mysql_select_db ("test",$db);
//выбор из базы,сортировка,лимит(сколько юзеров выводить)
 
result = mysql_query("SELECT * FROM stat",$db);
$myrow = mysql_fetch_array($result);
 
echo $myrow ["nazv"];
 
 
?>
 
</body>
</html>
DADO » 2011.06.19 07:51

У мя там Все Комнаты в чате в хhtml верси для цветного шрифта. А все другие страницы в wml версии.

POFIGISST » 2011.06.19 07:52

а че за чат?))какой скрипт?))

DADO » 2011.06.19 07:56

Регион 56. Толь с нуля модлю

POFIGISST » 2011.06.19 08:04

как Паша бы сказал php.su тебе в руки  =D

DADO » 2011.06.19 09:59

Гг. Учусь. Еще раз но в странице уже
$ver = trim(addslashes(htmlspecialchars($ver)));
        $ver = check($ver);
поставил так. Норм вродь
Добавлено спустя   8 минут  58 секунд:
POFIGISST ну вот еще как  этот код изменить чтоб user не вылетел из онлайна а то при обнове страницы пользователь выходить из онлайна.  Из за этого чудо юды.В инфе показывает Последный раз был: 15152 дней назад.
А usеr реально находится в чате. Вот
<?
   
mysql_connect($DBhost,$DBuser,$DBpass,$DBname);
$link1 = connect_db();
$link2 = connect_db();
$link3 = connect_db();
$baza = mysql_connect($DBhost,$DBuser,$DBpass,$DBname);
?>

POFIGISST » 2011.06.19 10:16

ну если инфа о том когда юзер был последний раз в чате храниться в базе,то просто вытаскивай её из базы в переменку,и выводи примерно так  echo "Последный раз был: .$твоя переменка." если не ошибаюсь,то так))а если инфа не храниться в базе,то там уже нужно наверно сортировку какую то делать,но я х\з какую(((

DADO » 2011.06.19 10:27

Показ такой:
$onl = $inf["onl"];

if($onl+300>=time()){
echo "<img src=\"css/online.gif\" alt=\"onl\"/> в онлайне<br/>\n";

}
Добавлено спустя   1 минуту  9 секунд:
Я шас с трубы. Не могу показать весь код

POFIGISST » 2011.06.19 10:31

$onl = $inf["onl"]; - это тащит из базы если не ошибаюсь,хотя могу ошибаться,if($onl+300>=time()){ а это если юзера больше 300сек нет в чтае,то показывает что он в оффе))вродь так))

DADO » 2011.06.19 10:50

if($onl+300>=time()){
echo "<img src=\"css/online.gif\" alt=\"onl\"/> в онлайне<br/>\n";

}
else
{
$tkick = time() - $onl;
if($tkick < 60 && $tkick > 0)
{
$vrem = "секунду\n";
}
elseif($tkick < 3600 && $tkick > 60)
{
$new = $tkick;

$tkick = $new/60;
$vrem = "минуты\n";
}
elseif($tkick < 86400 && $tkick > 3600)
{
$new = $tkick;
$tkick = $new/3600;
$vrem = "часа\n";
}
elseif($tkick > 86400)
{
$new = $tkick;
$tkick = $new/86400;
$vrem = "дней\n";
}
$tkick = round($tkick);

echo "<img src=\"css/offline.gif\" alt=\"off\"/>\n";
echo "(Вышел из чата $tkick $vrem назад)<br/>\n";
}

TLENS » 2011.06.19 10:56

DADO
Это что за крокодил?

TLENS » 2011.06.19 11:07

Код:

1
lt;?//--------------------------- Функция перевода секунд в дни -----------------------------//function makestime($string) { $day = floor($string / 86400); $hours = floor(($string / 3600) - $day * 24); $min = floor(($string - $hours * 3600 - $day * 86400) / 60); $sec = $string - ($min * 60 + $hours * 3600 + $day * 86400); return sprintf("%01d дн. %02d:%02d:%02d", $day, $hours, $min, $sec); }echo 'Провел на сайте: '.makestime(15152).'<br />';

Добавлено спустя   1 минуту  38 секунд:
Если тебе так не подойдет. Тогда  используй switch

DADO » 2011.06.19 11:12

Ну эт крокодил африканский. Из bigchata форма показа выпнутого. Изменяя ставил как показатель онлайна. Есть идеи по лучше? Мож есть более точный? Одна голова лучше а две вообше супер

TLENS » 2011.06.19 11:14

Ну у тебя используются показатель онлайна всего и в секундах так?

DADO » 2011.06.19 11:16

А это с перемменой онлайна будеть работать?
$onl = $inf ["online"];
Добавлено спустя   1 минуту  2 секунды:
Да.

TLENS » 2011.06.19 11:21

Код:

1
lt;?function makestime($string) { $day = floor($string / 86400); $hours = floor(($string / 3600) - $day * 24); $min = floor(($string - $hours * 3600 - $day * 86400) / 60); $sec = $string - ($min * 60 + $hours * 3600 + $day * 86400); return sprintf("%01d дн. %02d:%02d:%02d", $day, $hours, $min, $sec); }if($onl+300>=time()){ echo "<img src=\"css/online.gif\" alt=\"onl\"/> в онлайне<br/>\n";} else { echo "<img src=\"css/offline.gif\" alt=\"off\"/>\n"; echo '(Уже нет в чате '.makestime(time() - $onl).')<br/>'."\n";}

Попробуй так

DADO » 2011.06.19 11:23

А этот твой код не знаю как прикрепить к инфе пользователя. Он очь нужный мне. Так как думаю онл рейтинг создать. Кто больше времени был в чате. А эт код по моему идеально для таких форм
Добавлено спустя   2 минуты  13 секунд:
Оо. Большое спосибо. Благодарю
Добавлено спустя   4 минуты  20 секунд:
Ок. Спосибо большое. Попробую.

TLENS » 2011.06.19 11:28

Функция просто переводит секунды в дни часы минуты секунды

DADO » 2011.06.19 11:48

Код отличный то что нужно. Рабочий на все 2000%
+++

Gemorroj » 2011.06.19 11:51

так, тема разрослась. открываем новую http://wapinet.ru/forum/viewtopic.php?id=1478