[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Курс PHP. Урок №4 от IRBIS-team
twin
Если ты тут впервые, прочитай это!!!

Урок здесь



Спустя 1 час, 58 минут, 21 секунда (23.11.2009 - 21:58) Argnist написал(а):
/**
* News generation by id
* Генерация новости по id
*/

if ($GET['rem'] == 'full')
{
$tpl = get_tpl('news/full_news'); // шаблон целой новости
$sql = "SELECT `id`, `date`,`subtitle`,`public`,
DATE_FORMAT(`date`,'%d') AS `day`,
DATE_FORMAT(`date`,'%m') AS `month`,
DATE_FORMAT(`date`,'%Y') AS `year`,
`text`
FROM `"
. DB_PREFIX ."news`
WHERE `id`= "
. $GET['id'];

$res = query($sql);
if (mysql_num_rows($res) > 0)
{
while($row = mysql_fetch_assoc($res))
{
$data['date'] = $row['day'] .' '. $month_string[$row['month']] .' '. $row['year'];
$data['subtitle'] = $row['subtitle'];
$data['text'] = stripslashes($row['text']); // не понял зачем strip_tags тут делать? тогда уж в базу сразу без них писать, скорее stripslashes, ведь в новости могут быть кавычки, а они должны быть экранированы для записи в базу
}
$news .= parse_tpl($tpl,$data);
}
else
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents(ROOT . '/404.html'));
}
}

что-то такое требуется?)

Спустя 1 час, 15 минут, 28 секунд (23.11.2009 - 23:13) levitaly написал(а):

/**
* News generation by id
* Генерация новости по id
*/

if ($GET['rem'] == 'full')
{
$tpl = get_tpl('news/full_news'); // шаблон целой новости

$res = query("SELECT `id`, `date`,`subtitle`,`public`,
DATE_FORMAT(`date`,'%d') AS `day`,
DATE_FORMAT(`date`,'%m') AS `month`,
DATE_FORMAT(`date`,'%Y') AS `year`,
`text`
FROM `"
. DB_PREFIX ."news`
WHERE `id`= "
. intval($GET['id']));
if (mysql_num_rows($res) > 0)
{
$row = mysql_fetch_assoc($res);
$data['date'] = $row['day'] .' '. month_string($row['month']) .' '. $row['year'];
$data['subtitle'] = $row['subtitle'];
$data['text'] = $row['text'];

$news = parse_tpl($tpl,$data);
}
else
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents(ROOT . '/404.html'));
}
}



Цитата (twin @ 23.11.2009 - 16:59)
$month_string[$row['month']]

Не совсем понял, что это значит!

Спустя 1 месяц, 12 дней, 15 часов, 56 минут, 58 секунд (6.01.2010 - 15:10) Lenarfate написал(а):
обязательно ли в свитче в конце дефолта ставить break?

Спустя 1 минута, 25 секунд (6.01.2010 - 15:11) twin написал(а):
Не знаю. Я обычно не ставил, а вот стандарт ZEND вроде как требует.

Спустя 1 месяц, 25 дней, 17 часов, 58 минут, 24 секунды (2.03.2010 - 09:10) KonstantinK написал(а):
Осмелюсь указать на одну ошибочку в тексте лекции.
Там где в config.php определяем настройки соединения с бд
/**
* Database name.
* Название базы
*/
define('IRB_DATABASE', 'test');

у нас название бд 'basa' а не 'test'

Спустя 32 минуты, 10 секунд (2.03.2010 - 09:42) KonstantinK написал(а):
Возник вопрос - а почему мы тут применяем конструкцию include_once а раньше применяли только include , это как то связано с применением бд?

Спустя 14 минут, 24 секунды (2.03.2010 - 09:56) twin написал(а):
Точно... Спасибо, исправил. smile.gif

А по поводу include_once - если уверен, что файл подключается один раз, то лучше использовать без _once - быстрее. Но модулей к странице может быть подключено несколько. Допустим новости и счетчик посетителей. Оба используют базу данных. Если просто include, то будет два соединения с сервером БД, а нам того не надо.
То есть для подстраховки.

Спустя 2 часа, 9 минут, 28 секунд (2.03.2010 - 12:06) KonstantinK написал(а):
Ага понял спасибо.

Спустя 1 месяц, 19 дней, 10 часов, 40 минут, 30 секунд (21.04.2010 - 21:46) gomer505 написал(а):
Простите за глупые вопросы - я наверное тупой, как чайник. Но я так и не понял когда файл ru.php принял такой вид
<?php 

/**
* Language file (Russian)
* Языковой файл (русский)
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////

/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../404.html'));
}


define("IRB_NO_CONNECT", "В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.");
define("IRB_NO_DB_SELECT", "В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.");



В www3.zip он еще имел такой вид :
<?php 

/**
* Варианты модуля приветствия
* Variants of the module of a greeting
*/

define('IRB_WHO_FIRST', 'Мир');
define('IRB_WHO_SECOND','Солнце');
define('IRB_WHO_THIRD', 'Небо');
define('IRB_WHO_FOURTH','Вася');
define('IRB_WHO_FIFTH', 'Петя');
/**
* Массив месяцев
* The month array
*/

$month = array(
'01' => 'января',
'02' => 'февраля',
'03' => 'марта',
'04' => 'апреля',
'05' => 'мая',
'06' => 'июня',
'07' => 'июля',
'08' => 'августа',
'09' => 'сентября',
'10' => 'октября',
'11' => 'ноября',
'12' => 'декабря'
);



Простите я просто пытаюсь разобраться. Непонятно дальше по тексту :"Теперь нужно установить кодировку соединения, то есть договориться, на каком языке будут общаться наши сервера:" И дальше код ... Вопрос - где мы это все делаем? В каком файле?


Спустя 20 минут, 59 секунд (21.04.2010 - 22:07) freed-master написал(а):
Цитата
Простите за глупые вопросы - я наверное тупой, как чайник
Цитата
Мы все учились по-немногу, чему нибудь и как нибудь

Цитата
где мы это все делаем? В каком файле?

в mysql.php:
mysqlQuery('SET NAMES utf8');          
mysqlQuery('SET CHARACTER SET utf8');
mysqlQuery('SET COLLATION_CONNECTION="utf8_general_ci"');

Спустя 7 минут, 33 секунды (21.04.2010 - 22:15) gomer505 написал(а):
В конце урока я так и не понял какую красоту нам выдал скрипт, потому что мне он выдал ошибку :

Parse error: syntax error, unexpected '<' in U:\home\my-site.ru\www\config.php on line 33

при обновлении сайта.




Похоже здесь одним упорством не возьмешь. Хреново быть тупым - это я о себе. Слишком все это сложно... А может раза с 25-го и получится? Прийдется опять копировать то, что на блюдечке. Поделитесь кто-нибудь, как это все можно пробить?

Спустя 5 минут, 48 секунд (21.04.2010 - 22:21) twin написал(а):
Не отчаивайся))) Курс этот совсем сырой и постоянно правится. Там много сейчас нестыковок, потому что кардинально был на днях переписан и видимо не как нужно. Я разберусь, завтра обязательно.

Спустя 1 минута, 17 секунд (21.04.2010 - 22:22) freed-master написал(а):
gomer505, вы не один такой, нас как минимум двое biggrin.gif , но чем дольше смотришь на код, пытаешься что-то сделать сам, спрашиваешь, получаешь не всегда понятные ответы от профи, лопатишь мануал и гугл... потихоньку начинает что-то проявляться... rolleyes.gif

Спустя 5 минут, 17 секунд (21.04.2010 - 22:27) gomer505 написал(а):
Спасибо всем за поддержку. Немного полегчало...Теперь начну наверное сначала.

Спустя 2 месяца, 10 дней, 53 минуты, 25 секунд (1.07.2010 - 23:21) .:JIexa:. написал(а):
$error_log = date("Y-m-d h:i:s") .' '. $head .' 
<b>Query: </b><br>
<pre><span style="color:#CC0000">'
. $trace[0]['args'][0] .'</pre></span><br><br>
<b>File: </b><b style="color:#660099">'
. $trace[0]['file'] .'</b><br>
<b>Line: </b><b style="color:#660099">'
. $trace[0]['line'] .'</b>';

тут тег pre "мешается" со span`ом ... Если не ошибаюсь, то теги html помещаются один в один. Тогда будет
<pre><span></span></pre>
Но это, в принципе, не существенно...
Еще вот хотел спросить по поводу ковычек при написании аргументов к функциям или чего-то подобного.
Вот SQL запрос в mysql_query() писать лучше в одинарных кавычках? или двойных? (тему по безопасности читал, там все понял. Но как насчет запросов, в которые ничего не "вставляется" в тело запроса из переменных???)
Где-то в каком-то блоге однажды вычитал, что при присвоении значений string переменным или вот таких вот запросах и т.п. все-таки лучше использовать одинарные кавычки.
Причем там было так написано, как буд-то автор об этом сам не давно узнал, но из достоверных источников: " ... вот я как чуял, что лучше использовать одинарные ковычки, вместо двойных ...". Дальше автор пытался это объяснить.
Давно это было, уже не помню вовсе чем он это обосновал. Но вот смотря на код некоторых специалистов я теряюсь. Каждый по-разному пишет. Кто-то пишет в одинарных, кто-то в двойных. Кто-то пишет и так и так ))
Не подскажете, как все же лучше\рациональнее?
Сам привык использовать одинарные ковычки. Двойные использую редко. Вот и интересуюсь smile.gif

Спустя 6 часов, 43 минуты, 8 секунд (2.07.2010 - 06:04) twin написал(а):
С точки зрения безопасности никакой разницы нет. В итоге все равно получается обычная строка. А вот с точки зрения рациональности предпочтительнее двойные кавычки.

Почему. Потому что апострофы входят в штатный синтаксис SQL. А это значит их придется экранировать. Вот сравним:
'INSERT INTO `table` SET `text` = \'text\''

и
"INSERT INTO `table` SET `text` = 'text'"

Спустя 5 дней, 5 часов, 27 минут, 38 секунд (7.07.2010 - 11:31) ReggiN написал(а):
у меня вопрос - когда не создаем отдельный сервер для ядра, а ставим, например в localhost/irbis-test/ то ссылки на стили и яваскрипты не работают. Они запускаются только относительно $_SERVER['DOCUMENT_ROOT']. Пробовал это решить, подставляю автоматом путь, но потом зашел в админку - а там тоже самое, все картинки редактора не проставляются. Всё менять не хочется. В чем может быть проблема? Почему всё загружается не относительно index.php?

Спустя 1 день, 8 часов, 59 минут, 25 секунд (8.07.2010 - 20:31) ReggiN написал(а):
Ответьте, пожалуйста, а то у меня уже ломка, когда не выходит!!!

Спустя 1 час, 9 минут, 39 секунд (8.07.2010 - 21:40) twin написал(а):
Ну вообще то это касается верстки...
Но для универсальности можно воспользоваться такой функцией к примеру:

/**
* Функция формирования путей к картинкам
*/

function srcImg($img)
{
return IRB_HOST .'skins/img/'. $img;

}

и тогда в тег писать так:
<img src="<?php echo srcImg('pic.gif'); ?>" />


Аналогично со стилями и скриптами. Тогда можно безболезненно переносить на любой уровень, предварительно прописав путь в конфиге
    define('IRB_HOST', 'http://'. $_SERVER['HTTP_HOST'] .'/irbis-test/');

Спустя 20 часов, 23 минуты, 6 секунд (9.07.2010 - 18:04) ReggiN написал(а):
скрипты работают нормально. А вот стили и изображения - ни в какую. Я уже сделал чтобы подставлять путь, но - почему так? Мне уже больше интересней из любопытства. Да и в редакторе страниц не очень хочется менять это всё...

Спустя 2 минуты, 7 секунд (9.07.2010 - 18:06) ReggiN написал(а):
а если в .htaccess задать исключения для стилей и зображений вот здесь "RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]"?

Спустя 3 минуты, 28 секунд (9.07.2010 - 18:09) twin написал(а):
Ну а кто мешает попробовать? smile.gif
Вообще там это есть.
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d


Спустя 16 дней, 14 часов, 57 минут, 33 секунды (26.07.2010 - 09:07) VintoreZ написал(а):
Подскажите в чем проблема может быть? всё также делал как по уроку.
2010-07-26 10:03:18 MySQL error:

Unknown column 'count' in 'field list'

Query:

SELECT count
FROM `irbis_test`


File: C:\xampp\xampp\htdocs\www\language\ru.php
Line: 57

Спустя 4 минуты, 27 секунд (26.07.2010 - 09:11) twin написал(а):
Ну стоит перевести ошибку на русский язык. Станет понятно, что нет поля 'count'

Вообще почитай внимательно - там написано, что запрос заведомо ошибочный. Дабы посмотреть в действии вывод ошибок.

Спустя 23 дня, 7 часов, 54 минуты, 41 секунда (19.08.2010 - 17:06) Rasty написал(а):
Из БД на страницу выводится вместо буков вот это (чтоб его) - ???????????????
Понимаю, проблема в кодировке, я всё сделал как в курсе,
БД - utf8_general_ci
поля - utf8_general_ci

в корне сайта - .HTACCESS с текстом:
AddDefaultCharset UTF-8 
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag register_globals Off
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
Options -Indexes


в главном индексе это

header("Content-Type: text/html; charset=utf-8");  
error_reporting(E_ALL);


Слова на страницах самого сайта - всё ок, кодировку в редакторе сменил на Юникод(UTF-8), файлы пересоздал, со страниц всё выводится, с БД - неД.
БД создал полностью новую.

Денвер версия: Denwer3_Base_2010-03-18_a2.2.4_p5.3.1_m5.1.40_pma3.2.3,
настроил по Вашему уроку.

В чём может быть причина? huh.gif

Спустя 2 часа, 8 минут, 35 секунд (19.08.2010 - 19:14) twin написал(а):
Вопросики обычно возникают из-за несответствия кодировок бд и самого сайта. Просто нужно все еще раз аккуратно проверить.
Кодировка соединения установлена?
Вот тут подробнее

Спустя 1 час, 18 минут, 53 секунды (19.08.2010 - 20:33) Rasty написал(а):
Цитата (twin @ 19.08.2010 - 16:14)
Вопросики обычно возникают из-за несответствия кодировок бд и самого сайта. Просто нужно все еще раз аккуратно проверить.
Кодировка соединения установлена?
Вот тут подробнее


вот так у меня

user posted image

Спустя 8 часов, 45 минут, 22 секунды (20.08.2010 - 05:19) twin написал(а):
Я имел ввиду не это. Там, где коннект к базе, есть такие строки:
    mysqlQuery('SET NAMES utf8');          
mysqlQuery('SET CHARACTER SET utf8');
mysqlQuery('SET COLLATION_CONNECTION="utf8_general_ci"');
?

Спустя 2 дня, 3 часа, 23 минуты, 50 секунд (22.08.2010 - 08:42) Rasty написал(а):
у меня вот так было

 mysql_query("SET NAMES ‘utf8′");
mysql_query("SET CHARACTER SET ‘utf8′");


не работало, нехватало третьей строки

 mysqlQuery('SET COLLATION_CONNECTION="utf8_general_ci"');


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

mysql_Query


а то

Fatal error: Call to undefined function mysqlQuery() in Z:\home\stena.kr.ua\www\modules\bd\bd.php on line 4


Спасибо, twin. Думаю эта проблема кодировки (если можно так сказать) в настройках денвера, также, вероятно, в некоторых русских хостингах.

зы По ссылке все ещё раз внимательно изучил и всё теперь понял, и про коннект и про подчеркивание в функции.. Нужно быть мне внимательнее..

Спустя 15 минут, 40 секунд (22.08.2010 - 08:58) twin написал(а):
Если было именно так, то стоит обратить внимание на кавычки. Какие то они кривенькие. Вот так правильно:
    mysql_query('SET NAMES utf8'); 
а не так
    mysql_query("SET NAMES ‘utf8′");


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

Спустя 2 дня, 9 часов, 44 минуты, 2 секунды (24.08.2010 - 18:42) Слава написал(а):
Вибачайте, а це може значити:

2010-08-24 06:41:38 MySQL error:
You have an error in your SQL syntax near 'NAMES utf8' at line 1

Query:
SET NAMES utf8


File: w:\home\kurs_php\www\libs\mysql.php
Line: 69

Спустя 2 дня, 2 часа, 29 минут, 52 секунды (26.08.2010 - 21:12) Rasty написал(а):
а покажи код, пишет синтакстическая обшибка в коде запроса к бд ph34r.gif

Спустя 9 часов, 50 минут, 45 секунд (27.08.2010 - 07:03) Слава написал(а):
Я в принципе это уже исправил. У меня стоял Мускул от Попова (где то 2004 года, денвер-2). Скорее та версия не принимает функцию mysqlQuery. (см.Ядро Шаг 4), точнее запрос где указывается кодировка. Поставил Денвер-3
2010, только там весь Мускул на английском правда, а так ниче, заработало

Спустя 7 дней, 16 часов, 1 минута, 30 секунд (4.09.2010 - 23:04) Слава написал(а):
Сделал, да что там сделал, просто скопировал Вашу модель Сайта. Так вот прицепил файл ЦСС и все вроде нормально. Но вот решил просмотреть ИНДЕХ в ИЕ и стили работают отчасти. Точнее практически работает процентов 30 прописанных стилей. Как такое возможно...?

Работают на все 100 только шрифты. А разметка вообще отключилась...

Я в растерянности, да что там, я в шорохе...)

Это как то правится?

дуже дякую за допомогу

Спустя 7 часов, 25 минут, 41 секунда (5.09.2010 - 06:30) twin написал(а):
Вообще то верстка там не рассматривалась, это отдельная тема. Ты же не будешь на своем сайте использовать ту верстку, которая в образце.
Хотя я сейчас проверил в IE - все на месте и вполне даже ровно.

Спустя 2 часа, 50 минут, 5 секунд (5.09.2010 - 09:20) Слава написал(а):
Ваша верстка на месте и работает без проблем. Я прицепил свой фал CSS, у меня там прописаны фоны, отступы, вставки картинок, так же расположение блоков ну и т.д.

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

Если можно, я Вам отправлю файл ЦСС (только не знаю как), проверите его у себя. Может просто у меня глючит, а может что другое...

Спустя 17 минут, 1 секунда (5.09.2010 - 09:37) twin написал(а):
Открой исходный код страницы и посмотри, нет ли пробела или переноса строки до доктайпа.
Вот тут<!DOCTYPE HTML PUBLIC "..........

Спустя 7 часов, 10 минут, 48 секунд (5.09.2010 - 16:48) Слава написал(а):
Странная штука, пробела не было, я его добавил, затем убрал... сохранил... заработало

Спустя 58 минут, 32 секунды (5.09.2010 - 17:46) twin написал(а):
Значит где то BOM затесался.

Спустя 25 дней, 19 часов, 28 минут (1.10.2010 - 13:14) inpost написал(а):
twin
А зачем в констатны отправлять имя БД, пароль? Ведь повторное обращение к нему не будет, это надо для первого коннекта.
Сама константа, как я понимаю, попадает в память, а значит добавляет нагрузку серверу (По этой же причине ведь и пишем assoc, а не array - меньше информации в память).
Собственно, мне не понятен смысл назначения констант ради еденичного вывода.

Спустя 2 часа, 11 минут, 12 секунд (1.10.2010 - 15:26) twin написал(а):
Установочные данные должны быть в конфигурационном файле. Так что записывать их придется. А куда - не так важно.
Константу видно в функции, и она гораздо приятнее глобальной переменной.

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


Спустя 1 месяц, 13 дней, 16 часов, 26 минут, 49 секунд (15.11.2010 - 08:52) vahrammer написал(а):
Здравствуйте, уважаемые:
В этом фрагменте у меня возник вопрос по разметке:

$error_log = '...
<b>Query: </b><br>
<pre><span style="color:#сс0000">'
. $trace[0]['args'][0] .'</pre></span><br><br>
...'
;

В $error_log несколько раз используется перенос строки, правильно ли я понял, что он записывается в строки, т.е. в итоге получается так:
'...<b>Query: </b><br>'."\n".'<pre><span style="color:#сс0000">...' ?
Спасибо.

Спустя 19 минут, 42 секунды (15.11.2010 - 09:12) twin написал(а):
В лог пишется только текст, без тегов.
file_put_contents(IRB_ROOT .'log/mysql.log', strip_tags($error_log) ."\n\n", FILE_APPEND); 

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

Спустя 8 часов, 26 минут, 17 секунд (15.11.2010 - 17:38) vahrammer написал(а):
Наверно я не очень хорошо объяснил, я хотел выяснить кое-что другое, например я пишу так:

$str = 'Привет1 привет2 привет3
привет4 привет5'
;
file_put_contents($some_file_path, $str, FILE_APPEND);

Когда я открою файл $some_file_path, запись будет такая:
Привет1 привет2 привет3
привет4 привет5

или такая:
Привет1 привет2 привет3 привет4 привет5 ?

*******
Но я сам проверил (почему сразу это не сделал - не знаю :)), получилось так:
Привет1 привет2 привет3
привет4 привет5


Спасибо.

Спустя 9 минут, 39 секунд (15.11.2010 - 17:48) twin написал(а):
Ну а что мешает запустить и посмотреть? smile.gif

Спустя 5 минут, 8 секунд (15.11.2010 - 17:53) vahrammer написал(а):
Хы хы, не успел я пост свой исправить smile.gif
Сам не знаю, что мне мешало...
Спасибо.

ЗЫ: Кстати, у Вас в функции date() везде кавычки стоят, тоже, думаю, стоит поменять на апострофы.

Спустя 1 месяц, 16 дней, 47 минут, 57 секунд (1.01.2011 - 18:41) Evilsoul написал(а):
Может я чего не уразумел или упустил, но столкнулся вот с такой штукой в пагинаторе:
при вводе в адресную строку большего числа чем кол. станиц он переходит на страницу которая равна кол. строк вытянутых с базы
if($this->NumPage > $this->TableTotal) 
$this->NumPage = $this->TableTotal;

переделал так:
if($this->NumPage > $this->TableTotal) 
$this->NumPage = round($this->TableTotal / $this->NumRows);

Спустя 33 минуты, 40 секунд (1.01.2011 - 19:15) twin написал(а):
smile.gif

Спустя 6 минут, 8 секунд (1.01.2011 - 19:21) Evilsoul написал(а):
blink.gif Тоисть правильно я сделал или нет ? smile.gif

Спустя 39 минут, 44 секунды (1.01.2011 - 20:01) twin написал(а):
Тоисть новый год. biggrin.gif

Все, что ты делаешь - правильно. А если еще и работает - вообще круто.

А потом уже сам поймешь, что так, а что нет.

И на 99% я уверен, что через пару месяцев ты скажешь - ирбисы:лохи. Я гораздо круче умею).

Спустя 14 минут, 47 секунд (1.01.2011 - 20:15) Evilsoul написал(а):
biggrin.gif С Новым Годом.
Мне ещё срать и срать что бы так сказать smile.gif

Спустя 2 дня, 17 часов, 17 минут, 28 секунд (4.01.2011 - 13:33) Evilsoul написал(а):
Во блин ohmy.gif , тут подвох есть, данная комбинация не годится если в админке использовать скрыть/показать huh.gif

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

может в пагинатор добавить какой-то параметр, что бы отличить админа от юзера... ээээх unsure.gif

Спустя 31 минута, 53 секунды (4.01.2011 - 14:05) Evilsoul написал(а):
а нет, всё ок, просто испугался того что на 3й странице была одна новость а при вводе в адресную строку страницу подобного характера 466864341654 меня перекинуло на вторую, а всего навсего нужно было добавить единицу, вот так:
if($this->NumPage > $this->TableTotal) 
$this->NumPage = round(($this->TableTotal+1) / $this->NumRows);

Всё, я счастлив :rolleyes: , теперь за следующие лессоны...

Спустя 19 дней, 22 часа, 32 минуты, 42 секунды (24.01.2011 - 12:38) Ulan написал(а):
не понятен один момент. для чего в функции доступа к БД
mysqlQuery($sql, $print = false)
переменная
$print = false
?

Спустя 2 минуты, 37 секунд (24.01.2011 - 12:40) twin написал(а):
А поставь туда единичку.

$res = mysqlQuery('SELECT.....', 1);

Спустя 18 дней, 8 часов, 41 минута, 56 секунд (12.02.2011 - 21:22) Georg-71 написал(а):
Если кто может поскажите пожалуйста я чет застрял на 4 уроке и ни че не могу понять у меня выдает ошибки

Warning: include_once(Z:/home/localhost/www/libs/mysql.php) [function.include-once]: failed to open stream: No such file or directory in Z:\home\localhost\www\yadro\modules\main\read_controller.php on line 25

Warning: include_once() [function.include]: Failed opening 'Z:/home/localhost/www/libs/mysql.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\localhost\www\yadro\modules\main\read_controller.php on line 25

Fatal error: Call to undefined function mysqlQuery() in Z:\home\localhost\www\yadro\modules\main\read_controller.php on line 33

А вот как их победить.

Спустя 1 час, 35 минут, 5 секунд (12.02.2011 - 22:57) twin написал(а):
Файла нету. libs/mysql.php который.

Спустя 17 часов, 14 минут, 41 секунда (13.02.2011 - 16:12) Georg-71 написал(а):
Да и файл вроде есть

Спустя 6 минут (13.02.2011 - 16:18) twin написал(а):
Так а ты путь не прописал в конфиге. У тебя скрипт не в корне же. Надо сюда папку добавить:
/** 
* Establishes a path to a script root for HTTP
* Устанавливает путь до корневой директории скрипта
* по протоколу HTTP
*/

define('IRB_HOST', 'http://'. $_SERVER['HTTP_HOST'] .'/yadro/');

/**
* Establishes a physical path to a root directory of a script
* Устанавливает физический путь до корневой директории скрипта
*/

define('IRB_ROOT', str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/yadro/');

Спустя 42 минуты, 4 секунды (13.02.2011 - 17:00) Georg-71 написал(а):
Ок понято недоглядел. Учиться всегда тяжело особенно если недавно начал. Зато есть такие уроки где можно и научиться. Спасибо огромное

Спустя 3 месяца, 3 дня, 23 часа, 24 минуты, 17 секунд (17.05.2011 - 15:24) Vseonet написал(а):
Объясните пож-та следующие моменты:
function mysqlQuery($sql, $print = false) 
{
$result = mysql_query($sql, IRB_CONNECT);

if($result === false || $print)

Зачем мы здесь проверяем false или $print. Мы уже по умолчанию присвоили $print значение false. Значит проверяем что то такое false || false. Для чего это нужно?

$head = $error ?'<b style="color:red">MySQL error: </b><br> 
<b
style="color:green">'. $error .'</b><br><br>':NULL;

Не могу понять, что мы тут проверяем. Нет ни isset ни empty.

У Вас в листингах mysql.php нигде нету <?php. Это вроде не принципиально, но если кто то будет копировать и не углядит, то посыпятся не нужные вопросы :) Да и во всех листингах вы вроде ставили это

Спустя 1 час, 44 минуты, 17 секунд (17.05.2011 - 17:08) twin написал(а):
Все просто... Для того, чтобы посмотреть запрос, если он прошел.

Спустя 2 месяца, 21 день, 17 часов, 59 минут, 51 секунда (9.08.2011 - 11:08) devon написал(а):
Судя по описанию структуры MVC в википедии, контроллер в Вашем случае принимает вид толстого, тупого, уродливого контроллера и содержит практически всю бизнес-логику?smile.gif

Спустя 15 минут, 21 секунда (9.08.2011 - 11:24) twin написал(а):
Именно так. Только в википедии описывается не MVC, а всего лишь частный случай применения этой архитектуры. А менно ZEND-фреймворк.

Так что аббревиатуру ТТУК уместно применять только к их продукту.

Спустя 11 дней, 35 минут, 49 секунд (20.08.2011 - 11:59) Гость_Денис написал(а):
Привет всем ! Спасибо twin Курс замечательный! smile.gif
Правда у меня почему то в ядре на четвертом шаге начало выдавать - 404, т.е. при заходе на сайт я как будто запрашиваю несуществуующий индекс.. Почему так??

Спустя 19 дней, 20 часов, 28 минут, 1 секунда (10.09.2011 - 08:27) iM0S написал(а):
Такая же ошибка libs/mysql.php - существует
есть read_controller.php там есть инклюд libs/mysql.php, всё работает отлично
но когда рядом создаю test_controller.php c инклюд libs/mysql.php
то выдает ошибку
Warning: include_once(./libs/mysql.php) [function.include-once]: failed to open stream: No such file or directory in

куда копать что упустил?

Спустя 17 минут, 28 секунд (10.09.2011 - 08:45) iM0S написал(а):
Выяснил что когда задаю такой путь в инклюде -

include_once '../../libs/mysql.php'; то ошибка уходит о том что он якобы не видит
данный файл, вопрос в том почему так?

И появляется следующая ошибка -

Warning: file_get_contents(../404.html) [function.file-get-contents]: failed to open stream: No such file or directory in C:\xampp\htdocs\libs\mysql.php on line 17

Спустя 3 минуты, 34 секунды (10.09.2011 - 08:49) iM0S написал(а):
Вот сам код контроллера с применением ajax

if ($txt = isset($_POST['txt'])?$_POST['txt']:NULL)
{
include_once '../../libs/mysql.php';

$textarea = htmlspecialchars($txt);

mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."msg`
SET
`msg` = '"
. $textarea ."'"
);
}
sleep(1);

echo "<input class='textfield' type='text' value=".$textarea."><br>";

Спустя 19 минут, 23 секунды (10.09.2011 - 09:08) iM0S написал(а):
Когда в /libs/mysql.php убираю строки ради эксперемента -

/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../404.html'));
}

то вываливается следующая ошибка -

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'IRB_DBSERVER' (11004) in C:\xampp\htdocs\libs\mysql.php on line 73
IRB_NO_CONNECT

Спустя 13 минут, 53 секунды (10.09.2011 - 09:22) Игорь_Vasinsky написал(а):
а чё там ниже ещё? покажи, по ошибке видно, что ты вроде как константу 'IRB_DBSERVER в Mysql_connect() - записал в ковычках.

а кусок который ты вырезал - говорит, что если не предопределена константа IRB_KEY (либо не подключен файл где она подключена) - 404

Спустя 9 минут, 54 секунды (10.09.2011 - 09:32) iM0S написал(а):
Кажется начинаю догонять, у меня получается ajax запросом генерится новая страница вне системы, соответсвенно не срабатывает mysql.php. Как же обойти? Пример ajax взят с вашего сайта, мне необходимо чтобы инфа введенная в поле помимо вывода вставлялась в таблицу базы, как лучше сделать?

Спустя 4 минуты, 33 секунды (10.09.2011 - 09:36) iM0S написал(а):
Вот код mysql.php

<?php

/**
* Library of functions for work from DB MySQL
* Библиотека функций для работы с БД MySQL
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../404.html'));
}
/////////////////////////////////////////////////////////
/**
* Function of processing of literal constants for SQL
* Функция обработки литеральных констант для SQL
*/

function escapeString($data)
{

if(is_array($data))
$data = array_map("escapeString", $data);
else
$data = mysql_real_escape_string($data);

return $data;
}

/**
* Function for inquiry to DB MySQL.
* Функция для запроса к БД MySQL.
*/

function mysqlQuery($sql, $print = false)
{
$result = mysql_query($sql, IRB_CONNECT);

if($result === false || $print)
{

$error = mysql_error();
$trace = debug_backtrace();

$head = $error ?'<b style="color:red">MySQL error: </b><br>
<b style="color:green">'
. $error .'</b><br><br>':NULL;

$error_log = date("Y-m-d h:i:s") .' '. $head .'
<b>Query: </b><br>
<pre><span style="color:#CC0000">'
. $trace[0]['args'][0] .'</pre></span><br><br>
<b>File: </b><b style="color:#660099">'
. $trace[0]['file'] .'</b><br>
<b>Line: </b><b style="color:#660099">'
. $trace[0]['line'] .'</b>';

/**
*
@TODO To clean in release
*/

//-----------------------------
die($error_log);
//-----------------------------

file_put_contents(IRB_ROOT .'log/mysql.log', strip_tags($error_log) ."\n\n". FILE_APPEND);
header("HTTP/1.1 404 Not Found");
die(file_get_contents(IRB_ROOT .'/404.html'));
}
else
return
$result;
}

/**
* Connection and installation of chaeset of connection
* Подключение и установка кодировок соединения
*/

$db_irbis = mysql_connect( IRB_DBSERVER, IRB_DBUSER, IRB_DBPASSWORD ) or die(IRB_NO_CONNECT);

define('IRB_CONNECT', $db_irbis);

mysql_select_db( IRB_DATABASE, IRB_CONNECT )or die(IRB_NO_DB_SELECT);

mysqlQuery('SET NAMES utf8');
mysqlQuery('SET CHARACTER SET utf8');
mysqlQuery('SET COLLATION_CONNECTION="utf8_general_ci"');



Всё ровно. В других контроллерах работает.

Спустя 17 минут, 6 секунд (10.09.2011 - 09:53) iM0S написал(а):
код контроллера я привел, а вот код самой tpl -

<html> 
<head>
<script
type="text/javascript" language="javascript">

var
req = Create();

function ge(id)
{
return document.getElementById(id);
}

function Create()
{
if(navigator.appName == "Microsoft Internet Explorer")
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
req = new XMLHttpRequest();
}
return req;
}

function Request(query)
{
req.open('post', '/modules/services/ajax_controller.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}

function Refresh()
{
var a = req.readyState;

if( a == 4 )
{
var b = req.responseText;
document.getElementById('ajax').innerHTML = b;
}
else
{
document.getElementById('ajax').innerHTML = '<img src="/skins/img/loading1.gif" />';
}
}


function Pusk()
{
var query;

query ='txt='+encodeURIComponent(ge('myid').value);

Request(query);
}

</script>
</head>
<body>
<input
class="textfield" type='text' id='myid' >
<input
type="button" name="ok_msg" value="Отправить" onClick="Pusk()">
<img
src="/skins/img/loading1.gif" width="1" height="1" />
</body>
</html>

Спустя 34 секунды (10.09.2011 - 09:54) Игорь_Vasinsky написал(а):
обрамляйте код тегами. пользуйте bb-code

Спустя 2 минуты, 14 секунд (10.09.2011 - 09:56) iM0S написал(а):
если из контроллера убрать эти строки то ajax работает как часики -

include_once '../../libs/mysql.php';

$textarea = htmlspecialchars($txt);

mysqlQuery("INSERT INTO `". IRB_DBPREFIX ."msg`
SET
`msg` = '"
. $textarea ."'"
);

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

Спустя 12 минут, 46 секунд (10.09.2011 - 10:09) iM0S написал(а):
ОК, в будущем обязуюсь обрамлять код.

Спустя 2 минуты, 8 секунд (10.09.2011 - 10:11) Игорь_Vasinsky написал(а):
а сейчас отредактировать?

Спустя 1 минута, 36 секунд (10.09.2011 - 10:13) iM0S написал(а):
Короче в итоге я добился вывода 404 ошибки (без нотисов и варнингов), так и не заработала идея.

Спустя 9 минут, 18 секунд (10.09.2011 - 10:22) iM0S написал(а):
Дык не могу я его обрамить пока не зареген.

Спустя 2 минуты, 26 секунд (10.09.2011 - 10:24) iM0S написал(а):
Походу помощь в вышеописанных вопросах долго ещё буду ждать, жаль... рассчитывал на совет.

Спустя 6 минут, 11 секунд (10.09.2011 - 10:31) twin написал(а):
Нужно просто читать внимательно. Вот эти строчки для чего нужны, прочитай тут и будет счастье.

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../404.html'));
}


UPD Не буду мучать.
Первой строчкой в файле, к которому асинхронный запрос, поставь это:
    define('IRB_KEY', true);

Спустя 9 минут, 36 секунд (10.09.2011 - 10:40) iM0S написал(а):
На счет этих строк всё в норме, мне ясно для чего они нужны, и они везде где необходимо имеются -

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../404.html'));
}

Попробую кратко сформулировать свой вопрос -

я использовал пример ajax на вашем сайте, то есть клиентскую часть засунул в tpl,
а серверную в контроллер. Всё работает. Но теперь при попытке сделать добавление записи в таблицу базы наткнулся на вот такие грабли с подключением mysql.php

Совершенно ясно что получаемая страница не существует с точки зрения системы отсюда и 404, (конечно после изменения пути для mysql.php), как сделать чтобы получаемая страница всё таки не отвергалась системой? Может быть несколько сумбурно но всё же?

Спустя 1 минута, 28 секунд (10.09.2011 - 10:42) twin написал(а):
Я ответил выше. Нужно ключ добавить.

Спустя 8 минут, 31 секунда (10.09.2011 - 10:50) iM0S написал(а):
Сделал первой строкой -


define('IRB_KEY', true);


в итоге ошибка -

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'IRB_DBSERVER' (11004) in C:\xampp\htdocs\libs\mysql.php on line 77
IRB_NO_CONNECT

Спустя 1 минута, 32 секунды (10.09.2011 - 10:52) twin написал(а):
Конфигу тоже нужно подключить

Спустя 6 минут, 21 секунда (10.09.2011 - 10:58) iM0S написал(а):
Вот спасибо smile.gif , а то я я не много в ступор впал.

Спасибо за совет, всё заработало, удачи Вам.

Спустя 29 дней, 6 часов, 1 минута, 52 секунды (9.10.2011 - 17:00) ceil100 написал(а):
а чем принципиально отличаются:
if(!defined('IRB_KEY')) {
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../404.html'));
}
от
defined('IRB_KEY') or die (file_get_contents('../404.html');

хотелось бы знать разницу, ведь вроде одно и то же делают?

Спустя 6 минут, 18 секунд (9.10.2011 - 17:06) Игорь_Vasinsky написал(а):
в первом случае отправляется заголовок, потом выводиться страница с ошибкой
во втором просто страница ошибки, без заголовка

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


Спустя 6 месяцев, 20 дней, 23 часа, 57 минут, 48 секунд (30.04.2012 - 17:04) Гость_prox написал(а):
2012-04-30 04:39:06 MySQL error:
Unknown column 'count' in 'field list'

Query:
SELECT count
FROM `irbis_test`


File: Z:\home\kernex\www\modules\main\read_controller.php
Line: 34
Вот такая вот ошибочка! Если поставить вместо 'count' '*' ошибка пропадает.
Причем копировал полностью ядро с урока и все та же фигня dry.gif

Спустя 28 дней, 23 минуты, 41 секунда (28.05.2012 - 17:28) oleg_n написал(а):
Прошу помощи вот в таком вопросе:
Если инклюдить файл с подключение к БД в индекс, то подключение проходит без проблем, а если подключение вложить по-глубже ( в индексе инклюдится допустим main, в котором в свою очередь инклюдится подключение к БД), то подключения не происходит и выдает кучу ошибок :(
Warning: main(../libs/mysql.php) [function.main]: failed to open stream: No such file or directory in /home/mastersa/public_html/club/modules/main.php on line 4

Warning: main(../libs/mysql.php) [function.main]: failed to open stream: No such file or directory in /home/mastersa/public_html/club/modules/main.php on line 4

Warning: main(../libs/mysql.php) [function.main]: failed to open stream: No such file or directory in /home/mastersa/public_html/club/modules/main.php on line 4

Warning: main() [function.include]: Failed opening '../libs/mysql.php' for inclusion (include_path='.:/usr/php4/lib/php:/usr/local/php4/lib/php')
in /home/mastersa/public_html/club/modules/main.php on line 4

С чем это связано? Почему подключение к БД нельзя вкладывать так глубоко, а только на один уровень вниз?
Заранее благодарен :rolleyes:

Спустя 13 минут, 18 секунд (28.05.2012 - 17:41) inpost написал(а):
пути проверь, тебе же написали: "No such file or directory"

Спустя 13 минут, 13 секунд (28.05.2012 - 17:54) twin написал(а):
Считать пути подключений нужно от исполняемого файла, а не от подключаемого. Вот тут может понятнее станет.

Спустя 16 часов, 24 минуты, 4 секунды (29.05.2012 - 10:18) oleg_n написал(а):
Цитата (twin @ 28.05.2012 - 17:54)
Считать пути подключений нужно от исполняемого файла, а не от подключаемого. Вот тут может понятнее станет.

Спасибо!!! Я действительно указывал путь не от исполняемого файла, а от подключаемого - убрал лишнюю точку и все заработало rolleyes.gif

Спустя 20 минут, 19 секунд (29.05.2012 - 10:39) oleg_n написал(а):
И ещё - почему при подключении не работает путь IRB_HOST, а абсолютный IRB_ROOT работает? blink.gif Не подскажите где можно об этом почитать? Спасибо cool.gif

Спустя 2 дня, 23 часа, 59 минут, 28 секунд (1.06.2012 - 10:38) oleg_n написал(а):
twin
Николай, разбирал модуль формирования метаданных, и нашел ошибку, по крайней мере я так думаю :rolleyes:
При формировании ассоциативного массива, вы используете в качестве ключа значение $GET['rem'], но на мой взгляд нужно использовать $GET['page'], ведь именно в нем находится значение страницы на которой мы находимся в данный момент. Или я не прав? :unsure:
$POST['value1'] = !empty($meta[$GET['rem']]['title']) ?       $meta[$GET['rem']]['title'] : IRB_LAND_NO_TITLE;      
$POST['value2'] = !empty($meta[$GET['rem']]['keywords']) ? $meta[$GET['rem']]['keywords'] : IRB_LANG_NO_KEYWORDS;
$POST['value3'] = !empty($meta[$GET['rem']]['description']) ? $meta[$GET['rem']]['description'] : IRB_LANG_NO_DESCRIPTION;

Спустя 22 минуты, 33 секунды (1.06.2012 - 11:01) oleg_n написал(а):
Вроде бы разобрался rolleyes.gif Со мной сыграло злую шутку одинаковость используемых названий ключей в $_GET для админки и в индексе. В индексе rem - это доп. параметр, а в админке формируется новое меню, где уже rem - является основным, в котором перечисляются названия страниц smile.gif

Спустя 1 месяц, 16 дней, 3 часа, 34 минуты (17.07.2012 - 14:35) oleg_n написал(а):
Эх, беда, на все провайдеры одинаково полезны хороши, некоторые до сих пор сидят на PHP 4-й версии :blink: Приходится менять функции array_combine и file_put_contents на конструкции из других функций :(
В случае с file_put_contents все довольно просто:
$fh = fopen($filename, "w+");
$success = fwrite($fh, serialize($meta));
fclose($fh);

А с array_combine просто так не получиться, нужно создавать массив через цикл :rolleyes:

Спустя 2 дня, 2 часа, 16 минут, 10 секунд (19.07.2012 - 16:51) oleg_n написал(а):
Блин :( :( :( беды с неподержанием хостером ПХП 5.0 продалжаются, подскажите плиз, как правильно заменить функцию str_ireplace?
$text = str_ireplace($bb_open, $tmp_open, $text);

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

Спустя 1 час, 28 минут, 6 секунд (19.07.2012 - 18:19) pak написал(а):
oleg_n
меняй хостера)

Спустя 14 часов, 57 минут, 9 секунд (20.07.2012 - 09:16) oleg_n написал(а):
Цитата (pak @ 19.07.2012 - 18:19)

меняй хостера)

Сказал, как отрезал biggrin.gif biggrin.gif biggrin.gif
Более толкового предложения нет? Я не верю, что эту функцию нельзя заменит средствами ПХП ниже 5.0 rolleyes.gif

Спустя 13 минут, 4 секунды (20.07.2012 - 09:29) Placido написал(а):
Цитата (oleg_n @ 20.07.2012 - 09:16)
Цитата (pak @ 19.07.2012 - 18:19)

меняй хостера)

Сказал, как отрезал biggrin.gif biggrin.gif biggrin.gif
Более толкового предложения нет? Я не верю, что эту функцию нельзя заменит средствами ПХП ниже 5.0 rolleyes.gif

Есть пакет PEAR PHP_Compat для обеспечения совместимости со старыми версиями PHP: http://pear.php.net/package/PHP_Compat/

Спустя 3 дня, 14 часов, 50 минут, 28 секунд (24.07.2012 - 00:20) newBook написал(а):
Здравствуйте!
В уроке "статические страницы" возникла проблема:
скачал финальный вариант, на всех страницах, кроме главной, не подцепляет .css и .js указанные в шаблоне индекса. Происходит это потому, что источник указан не абсолютным путем (./skins/css/style.css). При переходе меняется адрес и происходит перерасчет пути к файлам (исходя из адреса http://localhost/atk1/main/read/first например).
Это у меня что-то коряво прикрутилось или ошибка в исходниках?

Пока что вылечил подстановкой полного пути. Можно еще впихнуть IRB_ROOT . '/path/style.css'.

Спустя 6 часов, 29 минут, 34 секунды (24.07.2012 - 06:49) twin написал(а):
Точку не нужно было ставить тут:

./skins/

Спустя 16 часов, 16 минут, 33 секунды (24.07.2012 - 23:06) newBook написал(а):
Спасибо.
Действительно у меня косяк.
А можете объяснить почему если путь через ./ указывается, то происходит перерасчет пути, а если чере /, то не происходит?
Ну или фразу для гугла подсказать.

Я так понимаю что если через слеш, значит происходит абсолютный расчет от корня (www).
Правильно?

Спустя 7 часов, 46 минут, 59 секунд (25.07.2012 - 06:53) twin написал(а):
Нужно понимать разницу между физическим путем и путем по протоколу HTTP.
Физические пути тут. А протокол... Ну где-то в гугле наверное)))


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

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