[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите толковые практик курсы по PHP
denisOg
Ребята, подскажите хорошие прктик курсы по PHP.
Включают в себя ООП.
Хочу повысить квалификацию. Самому можно читать книги, но когда никто не проверяет, не показывает/подсказывает/помагает. Когда нет, так сказать ответственности, то учеба идет не теми темпами. И к тому же есть шанс "не туду пойти")

Так что, жду информации о курсах, тренингах, проектах.
wink.gif



Спустя 8 часов, 25 минут, 49 секунд (16.08.2011 - 10:25) alex12060 написал(а):
denisOg

Напиши свой блог, сайт, с 0.
Напиши обертку под что-то - cURL или MySQL и будет тебе практикум smile.gif

Спустя 10 минут, 8 секунд (16.08.2011 - 10:35) Zerstoren написал(а):
А сюда пиши, чтоб тебя проверяли.
Если код будет читабельным - обязательно оставят отзывы и рекомендации.

Не хватает идей на практикум, аналогично, спрашивай.

Спустя 22 минуты, 53 секунды (16.08.2011 - 10:58) denisOg написал(а):
Цитата (alex12060 @ 16.08.2011 - 07:25)


Напиши свой блог, сайт, с 0.

Таких работ делал много. Работал на веб студии.
Цитата (alex12060 @ 16.08.2011 - 07:25)

Напиши обертку под что-то - cURL или MySQL и будет тебе практикум smile.gif

А что такое обертка? И что такое обертка cURL или MySQL?

Спустя 2 минуты, 27 секунд (16.08.2011 - 11:00) denisOg написал(а):
Цитата (Zerstoren @ 16.08.2011 - 07:35)
А сюда пиши, чтоб тебя проверяли.
Если код будет читабельным - обязательно оставят отзывы и рекомендации.

Не хватает идей на практикум, аналогично, спрашивай.

Спасибо. Буду писать на форум tongue.gif

Спустя 3 минуты, 35 секунд (16.08.2011 - 11:04) alex12060 написал(а):
denisOg

Обертка - это как миграция с MS Dos в Windows 98.

В общем, пишешь класс, который облегчит жизнь для работы с cURL или MySQL

Допустим, есть коннект к mysql -


$db = mysql_connect('localhost', 'root', 'root') or die(mysql_error());
mysql_select_db('db', $db);

mysql_query('SET NAMES `utf8`');


И это все тебе нужно обернуть, этот участок, чтобы не писать все время эти 3 строки.


function connect($p=false) {
if ($p)
$db = mysql_pconnect('localhost', 'root', 'root') or die(mysql_error());
else
$db = mysql_connect('localhost', 'root', 'root') or die(mysql_error());

mysql_select_db('db', $db);
mysql_query('SET NAMES `utf8`');

return $db;
}


И далее упрощаем жизнь с разными вещами.

Спустя 6 минут, 18 секунд (16.08.2011 - 11:10) neadekvat написал(а):
Здесь, на форуме, есть проект - соц. сеть для разработчиков php. Можешь к ним присоединиться.

alex12060, мне кажется это избыточним. Обычно к базе подключаются в начале скрипта и отключаются только в конце - зачем ради <1 сек. несколько раз это делать?
Кроме того, я не понимаю логику, почему в mysql_select_db линк передан, а в mysql_query нет. Да и вообще, самая важная обертка - она для самого mysql_query, а не для коннекта.

Спустя 10 минут, 33 секунды (16.08.2011 - 11:21) alex12060 написал(а):
neadekvat

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

А коннект просто так накалякал, не будет же он копипастить, если опытный программист, и вообще, этих замечаний ждал не от тебя, а от него sad.gif

Спустя 2 минуты, 7 секунд (16.08.2011 - 11:23) neadekvat написал(а):
Цитата (alex12060 @ 16.08.2011 - 12:21)
если опытный программист

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

Спустя 3 часа, 27 минут, 52 секунды (16.08.2011 - 14:51) denisOg написал(а):
alex12060
Спасибо за пример. Теперь понятно теперь, что такое обертка. Из повторяющихся действий делаешь функцию или класс)


neadekvat Подключение к БД я делаю вверху на сайтах и скриптах.
В файле конфига, там и константы определяю.
А потом конфиг инклюдю к скраничкам.

Насчет обертки для SQLзапроса я использую вот такой код:
//функция, которая делает запросы к БД
function db_query($sql)
{
global $dbcnx;
$k=0;
while(!@$res=mysql_query($sql))
{
if($k>5)
{
$f=fopen(dirname(__FILE__).'/tmp/error.log','a');
fwrite($f,"\n".mysql_error().' in '.$sql."\n");
fclose($f);
die();
}
@mysql_close($dbcnx);
MysqlConnect();
$k++;
}
return $res;
}


что скажите?


Спустя 15 минут, 54 секунды (16.08.2011 - 15:07) alex12060 написал(а):
прости, но это гк.


@mysql_close($dbcnx);
MysqlConnect();


мама не горюй...

Спустя 39 минут, 4 секунды (16.08.2011 - 15:46) neadekvat написал(а):
denisOg, название функции неудобное.
Я таковую назвал msql. А для mysq_real... сделал обертку mres. Запаришься ж так постоянно выписывать названия. А так я набираю быстрее, чем IDE подсказку делает.

Вот моя:
/**
* Обертка для запросов к базе данных
*
*
@param string текст sql-запроса к бд
*
*
@return resource дескриптор запроса к бд
*/

function msql($sql)
{
$query = mysql_query($sql, KTE_CONNECT);

if ($query !== false)
return $query;
else {
$trace = debug_backtrace();

$error_log = date("Y-m-d h:i:s")
.
"\n Error: ". mysql_error()
.
"\n Query: ". $trace[0]['args'][0]
.
"\n File: ". $trace[0]['file']
.
"\n Line: ". $trace[0]['line'];

file_put_contents(str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/logs/mysql.log', strip_tags($error_log) ."\n\n", FILE_APPEND);
header('HTTP/1.1 503 Service Unavailable');
die(file_get_contents(str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']) .'/errors/503.html'));
}
}


Обрати внимание, дескриптор коннетка - константа, так я избавляюсь от global.

Кстати, по твоей функции. Зачем там вызывается MysqlConnect();?

Спустя 9 часов, 9 минут, 15 секунд (17.08.2011 - 00:55) denisOg написал(а):
Цитата (neadekvat @ 16.08.2011 - 12:46)
Кстати, по твоей функции. Зачем там вызывается MysqlConnect();?

там идет переподключение к БД:
вот функция:

//функция подключенияк БД
function MysqlConnect()
{
//назначаю глобальную переменную
global $dbcnx;
//подключение файла config.php, который лежит в той же папке что и данный скрипт. используя конструкцию dirname(__FILE__)
//(реккомендует php.info)

include dirname(__FILE__).'/config.php';
//подключение скрипта к хосту с базами и запись результата в $dbcnx
$dbcnx=@mysql_connect($dbhost,$dbuser,$dbpass);
//ПРоверя подключение с БД

if (!$dbcnx)
{
//если запись не прошла успешно, то отрываеться файл error.log и в нем делаеться запись Соединение с бд не установлено
// запись в конец файла.

$f=fopen(dirname(__FILE__).'/tmp/error.log','a');
fwrite($f,"Соединение с бд не установлено\n");
fclose($f);
//окончание работы ВСЕГО скрипта. запись перед окончанием "Соединение с бд не установлено"
die("Соединение с бд не установлено");
}
//подключаюсь к нужной БД
if (!@mysql_select_db($dbname, $dbcnx))
{
$f=fopen(dirname(__FILE__).'/tmp/error.log','a');
fwrite($f,"БД не найдена\n");
fclose($f);
die("БД не найдена");
}
//после соединения с БД всегда устанавливать кодировку выборки из БД
mysql_query("set names cp1251");
return $dbcnx;
}



Цитата (neadekvat @ 16.08.2011 - 12:46)

str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT'])


ради интереса, а в каких случаях в пути к корневой папке может быть "\\" ?:huh:

Спустя 9 часов, 53 минуты, 48 секунд (17.08.2011 - 10:49) alex12060 написал(а):
denisOg

Ну зачееееееееееееееееееееем закрывать соединение и заного его открывать????? В цикле при том??? ><

Цитата
ради интереса, а в каких случаях в пути к корневой папке может быть "\\" ?:huh:


Виндоус, там пути такие: C:\Windows\System32
А в Линуксах такие пути: /usr/local/www/

Если тебя смущают 2 косые черты, то одна экранирует другую, и в итоге это превращается в одну черту, так как если оставить одну черту, то она будет экранировать кавычку, так примерно:


define('DS', '\'); // Syntax Error
echo DS;


Спустя 2 дня, 7 часов, 49 минут, 43 секунды (19.08.2011 - 18:38) denisOg написал(а):
alex12060 Спасибо. Теперь понятно. rolleyes.gif

Спустя 20 минут, 14 секунд (19.08.2011 - 18:59) denisOg написал(а):
Ребята помогите разобраться с регулярными Выражениями.
Есть не большие сложности.....


//текст в котором буду искать шаблонные строки
$data="Машина Apple I изначально предлагалась по «привлекательной» стартовой цене в 666.66 долларов США (через год её снизят до 475 долларов) и представляла собой готовую печатную плату с уже смонтированными компонентами. Сборкой занимались Возняк и Джобс, руководство написал Рональд Уэйн. К ней пользователь должен был подключить клавиатуру, дисплей (в этой роли мог выступать обычный телевизор), магнитофон (для работы с которым позже за дополнительные 75 долларов предлагалось приобрести ещё одну плату), блок питания и «облачить» все это в корпус. Разумеется, ни магазинов по продаже комплектующих и программного обеспечения, ни самих персональных компьютеров, кроме, пожалуй, Xerox Alto и IBM 5100 (о нем мы поговорим позже), а также MITS Altair 8800 и его прямого конкурента IMSAI 8080, тогда практически не было. Так что это почти наверняка означало «сделай сам». За полтора года (по октябрь 1977) было продано около двухсот машин. Теперь все они являются раритетами и представляют большую коллекционную ценность: до сегодняшнего дня в целости и сохранности дожило не более пятидесяти оригинальных Apple I.

Между прочим, сегодня любой желающий может пройти по пути Возняка и Джобса и, с паяльником наперевес, собрать полноценный аналог Apple I "
;
[
php]
1. Найти любые цифры и записать их в массив.

[
php]$pattern="([0-9.\])+";
$result=ereg($pattern,$data,$array_result);
echo "RESULT-".$result."<br>";
print_r($array_result);

Результат:
RESULT-6
Array ( [0] => 666.66 [1] => 6 )

Почему найдено 6-ть, а в массиве только 2 ?
И ввообще их на самом деле совпадений должно быть...

2. Найти подряд пять латинских букв. Регистр не учитывать. Записать в Массив.
$pattern="([a-Z]){5}";
$result=ereg($pattern,$data,$array_result);
echo "RESULT-".$result."<br>";
print_r($array_result);

Результата вообще нет. :(

3. Найти все фамилии и записать их в массив.
$pattern="([А-Я][а-Я]+)+";
$result=ereg($pattern,$data,$array_result);
echo "RESULT-".$result."<br>";
print_r($array_result);


Результата нет

4. И итоговый вопрос, ради которого стал вспоминать-это обработка поиска:
4а.Найти: 100 любых символов до + нужное слово+100 символов после.
4б. Убрать теги из этого выражения.
4в. Добавить "......" с обоих сторон.
4г Найти и выделить нужное слово желтым фоном.
Это все для вывода результатов поиска.

Вот возникли трудности с регулярными выражениями....

Спустя 42 секунды (19.08.2011 - 18:59) denisOg написал(а):
Сорри, что шаблон сайта порвал dry.gif

Спустя 1 час, 14 минут, 7 секунд (19.08.2011 - 20:13) DySprozin написал(а):
denisOg
немного не по теме, но все же: ereg юзать не надо - устаревшая функа (; preg_match() и preg_match_all() (;

Спустя 2 часа, 54 минуты, 59 секунд (19.08.2011 - 23:08) Guest написал(а):
DySprozin спасибо. Сейчас буду юзать.
Просто с ребятами решили, что сюда буду скидывать код. Это как бы курсы smile.gif

Спустя 1 минута, 56 секунд (19.08.2011 - 23:10) denisOg написал(а):
DySprozin
спасибо. Сейчас буду юзать.
Просто с ребятами решили, что сюда буду скидывать код. Это как бы курсы

Спустя 3 часа, 45 минут, 9 секунд (20.08.2011 - 02:56) denisOg написал(а):
Вот что на юзал, оцените ребята, насколько верно:
//$data- это некоторый текст.

1. поиск цифр.
preg_match_all("/[0-9\.]+/",$data,$mass);

В тексте есть цифры с точками. Чтобы избавить от точек в найденном массиве, я перегоняю из одного в массива в другой все, кроме точек:
$tochka=".";
foreach($mass[0] as $key=>$value){
if(strcmp($value,$tochka )){
$mass2[]=$value;
}}


2.пять подряд латинских букв в массиве
preg_match_all("#[a-z]{5}#i",$data,$mass3,PREG_SET_ORDER);


3. ищу фамилии
preg_match_all("#[А-Я][а-я]+#",$data,$mass4,PREG_SET_ORDER);


4.найти товары и заменить их ссылками товар.com
$pattern="#([A-Z][a-z]+)#";
$replacement="<a href='http://www.\\1.com'>\\1</a>";
$data2=preg_replace($pattern,$replacement,$data);
echo $data2;


5. Самое интересное. Найти в тексте слово. Взять с этим словом от 0 до 100 символов справа и слева, потом добавить убрать теги, добавить многоточия и выделить желтым фоном. Это для результатов поиска:
$search="аналог";
$pattern1="#[a-z0-9а-я\s,.:-—<>\/]{0,200}\b".$search."\b[a-z0-9а-я\s,.:-—<>\/]{0,200}#i";
preg_match($pattern1,$data,$mass6);
$mass6[0]=strip_tags($mass6[0]);
$mass6[0]="....".$mass6[0]."....";
$pattern="#(".$search.")#i";
$replacement="<span style='background-color:#000000;'>\\1</span>";
$result_str=preg_replace($pattern,$replacement,$mass6[0]);
echo $result_str;

Вопрос: в
$pattern1="#[a-z0-9а-я\s,.:-—<>\/]{0,200}\b".$search."\b[a-z0-9а-я\s,.:-—<>\/]{0,200}#i";

хотел упростить шаблон в
 [a-z0--я\s,.:-<>\/]
но ни [[:alnum:]] ни \w не выдавали результат. В чем проблема может быть?
:)

Спустя 2 дня, 13 часов, 53 минуты, 14 секунд (22.08.2011 - 16:49) denisOg написал(а):
Вот проблемка с preg_match


_____________
ICQ 444699163
del-denis@rambler.ru
Skype denisOg1
Нужен сайт знакомств, за деньги!
Быстрый ответ:

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