Контакты

Изучаем PHP и MySQL правильно. Учим PHP «с нуля»: тренировочный режим

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

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

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

Причина 1

Ответьте мне на такой вопрос: вы знаете, что такое динамический сайт? Смотрите! Различные выпадающие меню и окошки, которые вы можете видеть на веб-странице – это графические эффекты. Что такое динамика веб-страницы? Это когда ее содержимое будет меняться в зависимости от различных условий. Ну, или, например, в зависимости от запросов пользователей. Возьмем, например, страницу в Яндексе с результатами поиска. Она является динамической. Введем запрос « » и получим одну страницу. А если введем запрос «файлообменники», то страница будет другой.

Но если возьмем, к примеру, фотогалерею со сменой кадров, то это будет всего лишь статическая страница с графическими эффектами. Если вам будет нужно создать динамические страницы, то это в принципе будет невозможно без знаний скриптового языка php. Причина проста. Основой динамических страниц является код скрипта. Он-то и выполняется на веб-сервере, и образует содержимое сайта. А уже это обработанное нужным образом содержимое и передается в браузер пользователя. Поэтому, если хотите создавать динамические сайты, то здесь только один выход — изучать php с нуля

Причина 2

Сегодня существует немеряно различных движков, с помощью которых можно управлять динамическими сайтами. Поэтому, с одной стороны, вроде как и не нужно. Но ведь сайт нужно развивать, а, значит, со временем, по-любому возникнет необходимость сделать какую-то функцию, которая не реализована в модуле. Вот именно здесь и помогут знания php. Конечно, можно обратиться к какому-нибудь кодеру, но ведь лучше, если вы будете уметь это делать сами. Верно? Просто возьмете, и реализуете нужную функцию сами.

А сколько проблем иногда возникает при работе CMS. Тут я вообще молчу. И что? Каждый раз искать программиста и платить ему деньги? Не лучше ли самому изучить php с нуля?

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

Причина 3

Это больше касается тех, кто планирует сделать себе карьеру в области веб-программирования. Я тут уже не буду читать лекцию, сколько денег сегодня зарабатывают веб-программисты. Думаю, вы это и сами знаете. Так вот, веб-программист обязательно должен изучить php с нуля. Без знаний php он не программист

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

Если посмотреть статистику использования различных CMS, то мы увидим, что более 60% сайтов используют для функционирования самописные движки. Что это значит? А то, что программисты написали для этих сайтов скрипты на PHP, на которых этих сайты и работают.

Короче, что тут говорить? Элементарно, находите одного заказчика. Делаете с нуля, или дорабатываете ему CMS. Если работать с головой, то работа обязательно устроит заказчика, и он, разумеется, изъявит желание работать с вами и далее. Потом попросит вас подправить еще какой-нибудь сайт. А потом еще и порекомендует вас своим друзьям, а те в свою очередь еще кому-то. В итоге получится, что вы будете обеспечены работой чуть ли не до пенсии. В общем, рябят, если вы хотите двигаться вперед как профессионал, то рекомендую изучать PHP с нуля!

Особую благодарность за информационную поддержку выражаю Евгению Попову – автору ряда видеокурсов по сайтостроению . В том числе и видеокурса «PHP + MySQL для начинающих»

Язык программирования PHP на сегодняшний день является, определенно, самым популярным языком веб-разработки. Имеет как огромную армию почитателей, так и достаточно большое количество недоброжелателей (в особенности представителей «серьезных» языков программирования, таких как Java, Python или Perl). Так или иначе, с его появлением процесс создания динамических веб-сайтов перестал быть уделом «избранных». В этом компасе представлены основные сведения о PHP для начинающих его изучать.

Что такое PHP? Краткая справка.

Для начала. Крупные интернет проекты, разработанные c помощью PHP

Для тех, кто считает, что c помощью PHP нельзя сделать ничего серьезного. Стоит, однако, отметить, что большие проекты, как правило, используют несколько различных языков программирования.

История возникновения.

Первые шаги. Что делать?

Вы решили начать изучать PHP, с чего начать? Сначала - прочитать руководство «самые основы» и «Хочу изучать PHP и Mysql. С чего начать?» Потом - установить PHP на вашем локальном компьютере. Дистрибутив PHP можно скачать с официального сайта (во вступительных статьях описан процесс пошаговой установки), или, проще - установить Денвер. Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») - проект Дмитрия Котерова , набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине без необходимости выхода в Интернет. Главная особенность Денвера - удобство при удаленной работе сразу над несколькими независимыми проектами и возможность размещения на Flash-накопителе. Этот пакет имеет очень широкую известность в России, по некоторым данным, им пользуются 80% разработчиков на PHP. На сайте есть подробная инструкция по установке и настройке этого дистрибутива.

От автора: Носящий гордый титул «номер один», PHP – самый популярный язык в среде разработчиков. Хотя сейчас многие предпочитают разные языки. Ваш покорный слуга, например, наиболее комфортно себя чувствует при разработке в среде ASP.NET. Однако по причине огромного успеха WordPress все больше и больше разработчиков решают расширить свои горизонты и изучить еще один язык.

В череде следующих нескольких статей я собираюсь создать «тренировочный режим» для всех нас. Если вы намеревались учиться, но всерьез еще не занимались этой идеей, теперь самое время! И наоборот, тех из вас, кто уже ниндзя в PHP, я почтительно прошу активно участвовать и помогать советами всем остальным. Если вы получили пользу от дюжин учебников этого сайта, потратьте несколько минут и вернитесь назад, в секцию примечаний. Это будет ваш ресурс, содержащий все необходимое для PHP. Каждую среду я буду размещать тренировочную статью и список ресурсов, помогающих объяснить принципы, раскрытые в статье. Разгадка в том, что я здесь тоже, относительно говоря, новичок, как и все прочие. Мы можем мотивировать друг друга учиться так быстро и эффективно, как только можно.

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

Что такое PHP?

PHP – аббревиатура словосочетания Hypertext Preprocessor (гипертекстовый препроцессор). В то время как другие языки, вроде Javascript, работают на стороне клиента, ваш PHP-код будет выполнять команды на уровне сервера. Он незаметно работает с HTML. Более того, ваш PHP может быть встроен в HTML, и наоборот. Помните, что неважно, насколько сложен ваш PHP, в конце концов будет получаться простой HTML.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Почему я предпочитаю использовать PHP?

HTML на 100% статичен. Используя PHP в коде, мы можем создавать динамические сайты, которые изменяются в зависимости от заданных условий. Опирающийся на первоклассное сообщество, этот язык с открытым исходным кодом с годами доказал, что является одной из лучших опций для динамических веб-приложений.

Безусловно. Я был приятно удивлен, когда начал обучение. Если вы обладаете хотя бы самым скромным объемом знаний о ASP.NET, Perl, Javascript или C#, то окажется, что вы быстро улавливаете основы синтаксиса.

Что нужно, чтобы начать работать?

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

Web Browser (браузер)

Text Editor (текстовый редактор)

WAMP, MAMP

Да, должен признать, что необходимо знать некоторые акронимы (звуковые аббревиатуры). «WAMP» расшифровывается как «Windows-Apache-MySQL-PHP». Это – проект с открытым исходным кодом, который позволит нам загрузить все, что нужно для начала работы в одном дистрибутиве. Если вы пользователь Windows, посетите WampServer.com . С другой стороны, если вы пользуетесь Mac (MAMP), вам необходимо нанести визит на Mamp.info

Основы

Для того, чтобы информировать сервер о том, что мы работаем с PHP, вам необходимо использовать следующий синтаксис при добавлении PHP в ваши HTML-документы:

Мы начинаем и заканчиваем каждую инструкцию PHP соответственно «». Вернитесь обратно к своему коду и добавьте следующее:

Обратите внимание, что во втором примере мы записали все в одну строку. Запомните, PHP не зависит от символов-разделителей. Здесь мы говорим серверу «echo» (отобразить), или писать строку «This is PHP in action» (Это — PHP в действии) на нашу страницу. Каждая инструкция в нашем коде должна завершаться точкой с запятой в конце. Если HTML может снисходительно отнестись к случайно пропущенной скобке, то PHP, к сожалению, нет. Если вы не будет использовать правильный синтаксис, то получите ошибку. В случае, когда мы имеем только одну инструкцию, мы технически могли бы выйти из трудного положения, убрав точку с запятой. Но это очень важно — всегда следовать самым лучшим практикам.

Определяем переменные

Мы можем довольно легко установить значения переменных. Вместо использования ключевого слова «var» (C# и Javascript), или «dim» (VB), мы можем объявлять переменную в PHP, используя символ префикса «$». Допустим, что я хочу присвоить предыдущую строку переменной, названной «myVariable». Я бы написал так…

Этот пример произведет точно такой же результат, как и предыдущий. Однако в этом сценарии мы присвоили строку переменной, а затем «echoed» (отобразили) вместо нее переменную. А что, если я бы захотел соединить содержимое переменной и другую строку?

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

Вставка комментариев в код

Если вы знакомы с CSS и Javascript, то найдете, что комментирование в PHP фактически такое же.

Комбинирование HTML с нашим PHP

Помните то, о чем уже говорилось — PHP и HTML могут работать в сочетании. Только то, что мы уже в середине предложения PHP, не означает, что мы не можем вставлять такие элементы, как разрыв строки или тэг strong.

This text is bold."; ?>

Определение вашей первой функции Function()

Создание функций в PHP почти идентично их реализации в Javascript. Основной синтаксис таков…

Если бы мы хотели создать функцию, которая отображает («echo») 10 плюс 5, мы могли бы написать…

Мы создаем простую функцию, которая даст выходные данные «15″. Мы вызываем функцию с помощью «addNumbers(). В этом случае мы не используем никаких параметров. Давайте посмотрим, как можно реализовать их, чтобы сделать нашу функцию более общей.

Теперь наш код уже гораздо гибче. Создав функцию «addNumbers()», мы добавили два параметра — $firstNumber и $secondNumber. Функция будет просто отображать сумму этих двух переменных. При вызове функции нам придется передавать два числа — addNumbers(10, 5). В общей ситуации значения этих переменных могли бы быть взяты из пары текстовых полей.

От автора: Вполне достаточно для этой недели. Если эти понятия вам все еще не ясны, вернитесь к началу и прочтите статью еще раз. Также удостоверьтесь, что отметили следующие ресурсы, которые помогут вам в будущем понять синтаксис PHP. Пожалуйста, не стесняйтесь задавать вопросы или размещать советы в секции комментариев. Я обязательно помещу ваши мысли в Части 2. Если вам понравилась эта статья, пожалуйста, разместите ее на своем любимом сайте социальных сетей!

Перевод и редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

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

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

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

Общие принципы

До начала изучения языка нужно однозначно определиться с терминологией и пониманием общих принципов работы сети Интернет. Начнём с принципов работы сети и сайтов.

Сеть Интернет состоит из огромного количества соединённых между собой компьютеров, маршрутизаторов и прочего железа, нужного для правильной работы. Каждый элемент сети Интернет (узел) обладает уникальным описателем - IP-адресом. Зная IP-адрес узла можно попробовать подключиться к нему, а имея небольшие навыки можно определить кому этот адрес принадлежит и в каком регионе мира находится. IP-адреса принято записывать в виде четырёх групп цифр, разделённых точками, например

192.168.100.003 или 10.10.0.123

Согласитесь, запомнить адреса всех часто посещаемых страниц - задачка не из лёгких. Поэтому в сети Интернет существуют специальные сервера DNS (Domain Name Resolution), на которых хранятся списки сопоставления IP-адресов и символьных имён. Именно благодаря эти серверам пользователь всегда попадает по нужному IP-адресу, набрав в браузере только имя странички.

После того, как мы ввёли в строку браузера имя нужной странички, браузер самостоятельно получает из DNS IP-адрес нужного сервера и посылает по этому адресу специальный запрос на получение странички (HTTP-запрос). Работающая на сервере специализированная программа (т.н. Web-сервер) обрабатывает этот запрос и возвращает в браузер требуемую страницу.

Очевидно, что все действия по отображению страницы можно однозначно разделить на две категории: выполняемые на стороне клиента (клиентский код или front-end ) и выполняемые на стороне сервера (серверный код или back-end ). Причем сервер ничего не знает о текущем состоянии клиента, а клиент - о текущем состоянии сервера. При разработке алгоритмов обмена надо всегда помнить об этом и своевременно передавать нужные данные, описывающие состояние или требуемое действие.

В зависимости от места применения различаются и средства реализации частей. На стороне клиента как правило используется только HTML, JavaScript (AJAX), CSS и Flash. Разработчики серверной части менее стеснены в средствах, т.к. большая часть существующих языков позволяет создавать или описывать HTML-страницы. Наиболее широко распространённы сейчас Java, Perl, PHP, Python, Ruby, C# и VB.NET. Каждый из них имеет свои сильные и слабые стороны, поэтому разработчик должен сделать выбор исходя из стоящих перед ним задач.

Почему именно PHP?

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

  1. Простота. Язык очень легко воспринимается, особенно начинающими программистами.
  2. Скорость разработки. Благодаря простоте и интуитивной понятности, PHP позволяет очень быстро создавать довольно сложные сайты.
  3. Наличие библиотек Существует огромное количество готовых примеров и библиотек классов. Созданы и проверены сотни библиотек, существенно упрощающих жизнь разработчика.
  4. Поддержка Практически любой сервер в Интернете поддерживает PHP
  5. Безопасность PHP позволяет создавать действительно защищённые сайты благодаря встроненной поддержке шифрования данных при хранении и передаче.

Однако за свои преимущества PHP платит некоторыми органичениями. Например, использовать PHP для доступа к системным функциям очень неудобно по сравнению с Perl или Python (поэтому многие сисадмины так любят Perl).Есть ещё несколько ограничений, о которых мы поговорим при изучении соответствующих разделов.

Сейчас PHP прочно занимает своё место среду других web-языков. Если Вы в будущем не планируете заниматься созданием огромных порталов, поисковых систем и особо защищённых сайтов, то PHP - лучший выбор для начинающего web-программиста.

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


alexperec » 31 июл 2011, 10:51

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

Как это относится к сео? Да очень даже прямо. Порой бывает нужно выполнить груду однотипной рутинной работы, и не большой скриптик мог бы очень помочь и сэкономить кучу времени. Я уже не говорю за то, что порой бывают, нужны более серьезные модули или программы, заказывать которые стоит порой не по карману. Но это уже более сложные задачи, которые тут мы рассматривать не будем. Если вы действительно заинтересуетесь, то в Интернет полно умных книжек, которые так и просятся чтоб их прочли) Здесь же мы рассмотрим только основы, помогающие вникнуть в суть и перейти к самостоятельному обучению более сложных этапов.

Речь пойдет о программировании на языке PHP.
Ну приступим…

Что же такое программирование? Чем оно отличается, например от языков разметки?
Разметка – это правила, применяемые к содержимому тега.
< a href="">текст
Т.е. правила показывает браузеру, что содержимое тега - ссылка. И оформлять и выводить пользователю её следует тоже как ссылку.
Языком разметки мы можем только применять какие любо правила, но не можем динамически изменять данные. Т.е. мы меняем только одежду, но сделать из человека обезьяну мы не можем.

Программирование же – это написание скриптов, или иначе сценариев. Сценариев по которым будут обрабатываться входящие данные (данные которые мы предоставим программе). Писать сценарии намного сложнее чем форматировать текст. Ведь для этого мало знать синтаксис языка, нужно самому этот сценарий спланировать и реализовать средствами языка.

Перед началом изучения, нам нужно обзавестись веб сервером, с установленным PHP интерпритатором. Интерпретатор – это программа, которая читает наш код и «переводит» его на машинный язык. В качестве сервера может быть хостинг. А лучше скачать и установить денвер, тот тот же хостинг только локальный (доступен только вашему компьютеру, или вашей локальной сети). Скачать можно тут там же почитать про установку и инструкцию по работе с ним.

Теперь перейдем к началу изучения PHP.

В php, как и в других языках все, так сказать, инструменты можно разделить на несколько групп:

Переменные
– переменная это участок памяти, где хранится какая-либо информация. Переменная имеет имя, по которому к ней обращаются, что бы прочитать или изменить её содержимое. По самому названию «переменная» можно догадаться что данные в ней можно изменять в ходе выполнения программы. Переменные бывают разных типов: числовые, строковые, массивы и т.д. Чтобы показать интерпретатору что данный символ(ы) являются именем переменной используется знак доллара $.

$peremennaya –это переменная
peremennaya –а это просто бессмысленный набор символов

Переменные чувствительны к регистру (заглавным и строчным символам). Т.е. $a и $A совсем разные вещи. Тип переменной PHP определяет сам, поэтому во избежание путаницы не делайте действий с переменными разных типов. Например не прибавляйте число к массиву, ибо результат не предсказуем.

Константы – постоянные. Смысл тот же что и переменная, только константы нельзя изменять. Т.е. то что в них один раз записали, то там и будет. Этими данными можно только пользоваться.

Операторы – действия. Например: +, -, *, /, = и т.д. Полный список можно почитать справочник. Следует заметь что выражение:

Означает не то, что значение переменной «а» равно значению переменной «b». А то что значению переменной «a» присвоили значение «b». То есть если было:
Код: $a = 1;
$b = 2;
$a = $b;
То в итоге выполнения этой программы значение $a будет равно 2.

А для сравнивания есть другие операторы: == и ===

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

Оператор вывода : echo "" или echo"", одинарные и двойные кавычки имеют несколько разный смысл. Для вывода значений переменных кавычки не используются (одних переменных без текста). Покажу на примере:

Объекты .Так же есть еще объекты, но это уже намного сложнее, и для начала совсем не обязательно.

Есть еще переменные окружения . Эти переменные пользователю изменять нельзя. Можно только пользоваться данными. Их значение изменяет сам интерпретатор. Для получения данных из таких переменных есть специальная функция getenv(). Переменная SERVER_ADDR содержит айпи адрес пользователя исполняющего сценарий, например просматривающего например сайт. Например мы хотим чтоб на нашем сайте пользователи могли видеть свой IP, то мы создадим «модуль» примерно такого содержания:

Код: $ip = getenv("SERVER_ADDR");
echo "ваш IP: $ip";

мы сначала присвоили переменной $ip значение IP адреса пользователя, а потом его вывели на экран с помощью оператора.

В функции getenv() имя переменной нужно указывать в кавычках, как в примере.

Таких переменных очень много, найти можно в справочниках.

Теперь еще хотел бы сказать отдельно за переменные типа массив. Массив это как бы таблица.
В одной строке которой содержаться индексы (номера или имена ячеек), в во второй строке соответственно значения.

Создать такой массив можно с помощью функции array(), назовем его mass:
Код: $mass = array ("привет", "пока",2+3, $ip = getenv("SERVER_ADDR") , cos($a));
Массивы можно создавать и непосредственно присвоением значений элементам (читайте дополнительную лит.ру). Только в случае, если содержимое - выражение или функция как в ячейках 2, 3 и 4 кавычки не пишутся. Иначе это уже будет не выражение а просто строка.

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

Элементы массива нумеруются с нуля. Не один, два,три. А ноль, один, два и т.д.

Обращаться к элементам массива можно так:
Код: Echo $mass;
На экран будет выведено значение косинуса, а не строка «cos($a);».

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

Например в файле test.txt у на такое содержание:
Код: Вася
Пошел
В магазин

$text = file("text.txt");

Переменная $text становится массивом из трех элементов. Элемент с индексом 0, содержит «вася», с индексом 1 «пошел», и 2 «в магазин». Функции file() мы передаем путь к файлу. Путь должен быть верным! Данный путь действителен, только если файл лежит в одной папке со скриптом!

Вроде бы все..

Теперь давайте рассмотрим пару небольших примеров реального применения наших знаний.

Пример 1.

На днях я столкнулся с небольшой проблемой. Мне нужно было скачать все изображении со страницы . их там очень много. По одной я бы сидел очень долго. С учетом моей скорости интернета. Подумав как можно автоматизировать задачу, вспомнил что в тоталкомандере можно автоматически загружать файлы по списку ссылок. Но опять загвоздка, как этот список от сюда вытащить. Сидеть выделять столько ссылок мышкой из исходного кода мучительно, в конце обязательно на нервах рука дрогнет и все насмарку. Посмотрев исходный код мы видим что содержание страницы – таблица. А значит, зажав кнопку ctrl мы сможем выделить столбец. Нас больше интересует столбец имен файлов.

Предварительно наведя на имя(ссылку) мы видим что имена совпадают с именами на сервере. Это уже очень хорошо. Теперь скопировав столбец имен в блокнот, получаем текстовый файл, где с каждой строки имя файла с расширением. Сохраняем файл к примеру text.txt. все фотки находятся в одном каталоге, что уже облегчает работу. Теперь нам нужно понять что же нам надо дальше делать. А делать надо следующее, с помощью функции file() мы прочитаем документ и имя каждого файла окажется в своей ячейке. потом с помощью цикла в каждый элемент массива в начало допишем адрес докаталога, и получим массив с готовыми ссылками. А потом опять циклом этот массив выведем на экран. И у нас готов список ссылок на загрузку! В блокноте глянем сколько получилось имен (строк). Их 137. И приступим.

Кстати, пока не забыл, двумя слешами // обозначаются комментарии, т.е.

Код: echo "это код, который исполняется интерпретатором" ; // а это просто комментарий

И после каждой строки, кроме операторов правилами которых этого не предусмотрено должна ставиться точка с запятой - ;

Писать код можно в блокноте или специальных программах с подсветкой синтаксиса. Файл должен быть с расширением.php Начинаться и заканчиваться код должен так:

Код: Наш код;
?>

Теги показывают границы нашего кода. Все что вне них, интерпретатор выполнять не будет и просто выведет их на экран текстом.
Код с комментариями:
Код:
for ($i=0; $i<=136; $i++) { // оператор <= значит меньше или равною. 136, то что массив начинается с 0, а не единицы. и последний элемент равен кол-во элементов минус один. а оператор ++ прибавляет единицу. в циклах использовать +1 некорректно
}
for ($i=0; $i<=136; $i++) {

echo "
" ; // выводим тег

}
echo "

?>

Данную программу можно немного оптимизировать, убрав лишний цикл. Т.к. оба цикла выполняют одну и туже работу, мы все действия перенесем в первый цикл, а второй удалим:
Код: $name=file("base.txt"); // создали массив имен
for ($i=0; $i<=136; $i++) { // оператор <= значит меньше или равною. 136, то что массив начинается с 0, а не единицы. и последний элемент равен кол-во элементов минус один. а оператор ++ прибавляет единицу. в циклах использовать +1 некорректно
$name[$i]="http://www.volgograd.org.ru/maps/maps/rostov/$name[$i]"; //обращаемся к каждому элементу по порядку, в качестве индекса используем счетчик $i. и дописываем в начало путь к каталогу.
echo $name[$i]; //выводим поочередно каждый элемент массива
echo "
" ; // выводим тег
, чтобы каждая ссылка была с новой строки
}
echo "
Готово! А все оказывается просто!"; // от себя добавил))
?>

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

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

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

Во втором примере я опишу как я писал свой модуль . Он уже имеет самое что именно есть прямое отношение к сео и оптимизации. Но это чуть позже, а то утомился

Помните порой легче создать свой "мини сео софт", чем искать готовое. Его кстати может и не существовать вовсе

Если вы действительно заинтересовались программированием на PHP, советую почитать книгу "PHP 5/6 и MySQL 6. Разработка Web-приложений" Дениса Колисниченко. Там очень много хорошего материала. Все понятно излагается. Читайте справочники, и главное учитесь думать и все себе представлять, и будет вам счастье! А все остальное как говорится придет с опытом

Буду ждать комментариев

Innulia » 31 июл 2011, 20:00

Мануал получился достаточно простенький, этих основ вполне достаточно для создания скриптов.
Есть только несколько вопросов: вы указали пример цикла с счетчиком. Данный тип циклов часто бывает неудобным для выполнения программ, чаще используются с условием и постусловием. Почему вы выбрали для описания именно цикл со счетчиком?
про массивы: вы указываете, что в массиве могут содержаться разные значения. Обычно массив содержит однотипную информацию: только символы, только числа, только текстовая инфа и тд. У вас в примере данные разных типов - это особенность массивов в php? То есть можно в один массив пихать разные данные?

У меня все

Вы указали в тексте, что такое функции. Почему не были описаны процедуры? Они часто бывают намного удобнее. Есть ли процедуры в php?

У меня все

Innulia , давайте по порядку)

Цикл со счетчиком на мой взгляд, наоборот намного приминимее. Например для перебора массивов и много еще для чего) Да и его синтаксис, и действия несколько сложнее для понимания, на мой взгляд, нежели циклы с условиями. И если понять цикл for, то остальные понять уже не составит труда ИХМО

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

процедуры? такого в php нет. или возможно оно носит какое-то другое название

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

alexperec » 02 авг 2011, 07:11

Вот дошли руки до описания второго примера.

Скачать его можно в этой ветке там же инструкция по установке.

Это, в отличии от первого примера, уже полноценный модуль для сайтов на движке DLE. У данного модуля есть админка.

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

Немного истории. Суть проблемы заключалась в том, что мне нужно было чтобы для каждой категории новостей было свое «меню категории», где бы были ссылки на материалы именно этого раздела сайта. И при том, на корневых страницах самого раздела чтоб можно было написать статичный неизменяемый текст, оптимизированный под свой ключ. Т.к. обычно бывает так, что разделы содержат краткие описания новостей, и постоянно изменяются из-за того что новые новости публикуются, а старые уходят вниз. А ведь ИХМО у сайта должна прослеживаться иерархия страниц. Ведь у разделов больше шансов подняться по конкурентному ключу, чем у обычных страниц, ведь УВ разделов ниже. А значит важность выше в глазах поисковиков. И этим надо пользоваться. Да и к тому же так можно добиться своего рода постоянства, т.к. у раздела содержание меняться не будет, значит и в выдаче он должен сидеть ровнее.

Теперь о попытках решения задачи. Как часто бывает, то что видится легким, на самом деле в сто раз сложнее. Тогда писать модули на ДЛЕ я еще не умел, и мне казалось что решать проблему программно – это очень тяжко. И ломал голову как сделать это с помощью огромной системы шаблонов. Но в любом случае чем-то приходилось жертвовать, все и сразу сделать не получалось. Благо, я хоть не додумался действительно сидеть и эту груду шаблонов делать, все ограничилось теорией Потом я наткнулся на материал по созданию модулей и привязке их к движку (см. выше). Ведь главной загвоздкой для меня было не сколько как написать модуль, а как его интегрировать в движок.

Суть работы модуля. А суть такова, что мы, с помощью переменной окружения получим урл адрес текущей страницы, просматриваемой пользователем. Далее этот урл будем сравнивать со всеми имеющимися страницами сайта, при помощи оператора switch case, при обнаружении совпадения, загрузим нужный нам файл с меню.

Как работает оператор switch case:
Код: switch ($url) { // в скобках указываются данные которые мы будем искать. в данном случае это данные из переменной.
case "": // то что в кавычках это данные которые мы будем проверять на совпадения. те с которыми мы будем сравнивать
код; // код который будет выполнятся в случае если данные из switch, совпали с данными из этого case
break; // не обязательный оператор, он как бы относится к коду оператора case. но я его выделил отдельно специально чтоб обратить внимание. оператор break означает остановку. т.е. дальше искать совпадения мы не будем. если оператор не указать, то будут проверены все предложенные варианты.

Default: // default - это действия по умолчанию, т.е. те действия которые мы выполним если не будет найден искомый оператор case
код; // код который будет выполнятся
break;
}

Следует заметить что операторов case в одной конструкции switch case может быть бесконечно много, а может и не быть совсем, например только default (Но так делать смысла нет, но все же чтоб вы знали).

Теперь разберем сам код исполняющего скрипта:
Код: if(!defined("DATALIFEENGINE")){ //условный оператор, проверяет как мы подключились к скрипту. не взломщики ли мы:) Это присуще всем файлам в движке DLE
die("Hacking attempt!"); // die останавливает работу скрипта, и выводит сообщение из скобок. там обычно указывают причину остановки. в данном случае скипт остановится в случае подозрения на взлом
}

$url=$_SERVER["REQUEST_URI"]; // переменной $url присваиваем значение текущего адреса страницы без домена. его содержит переменная окружения REQUEST_URI. обратиться к ней мы могли бы и так как я писал в уроке, там описывается универсальный вариант, если мы не знаем чему так сказать эта переменная принадлежит. все глобальные (доступные в любом месте сценария без объявления и присвоения значений) переменные есть элементы глобальных массивов. в данном случае это элемент ассоциативного $_SERVER, к нему мы и обращаемся.

switch ($url) { // будем искать нужное выражение (в данном случае выводящее нужный блок) для текущего урла
case "": // в одинарных кавычках следует записать урл адрес страницы, без домена. т.к. в переменной $url так же содержится адрес без домена, чтобы совпадение вообще могла быть возможным.
$tpl->load_template(""); // это обращение к объекту класса. про классы я не писал ибо это очень очень много и всего я сам не знаю. $tpl - это объект стандартного класса DLE для работы с шаблонами (шаблонизатора). вообще классы это как бы набор функций, и их смысл примерно тот же, только больше возможностей. load_template загружает файл шаблона. он должен быть.tpl формата. В данном случае мы его немного обманули, там у нас не шаблон а код нашего меню:) в кавычки надо указать путь к файлу.tpl относительно корневой папки шаблона сайта
$tpl->compile("menu"); // compile обрабатывает наш файл загруженный через load_template. в скобках по всей видимости указывается его идентификатор, я точно сам не знаю. но обычно он совпадает с название модуля или файла шаблона.
break; // останавливаем поиск, ведь мы уже нашли что нам надо.

Default: // меню для всех остальных страниц сайта, не указанных в операторах case
$tpl->load_template("");
$tpl->compile("menu");
break;
}

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

Теперь файл админки (он посложнее, и тут я применял несколько более широкий функционал PHP, нежели описано в мануале). В админке мы можем редактировать файл модуля menu.php. Сделал я это просто для удобства.

Смысл работы. У нас есть хтмл форма. Данные из форм получаем методом POST. Есть два метода POST и GET. POST это значит что данные будут передаваться как бы скрыто, а GET через адресную строку. Например адрес админки /admin.php?mod=menu мы файлу admin.php методом GET передали значение переменной mod. Теперь переменная mod равняется menu и движок загрузил нам необходимую страницу. GET используется для передачи вот таких коротких незначительных данных. А для передачи файлов, ПАРОЛЕЙ, текста и т.д. используется POST.

Рассмотрим форму. У нас есть текстовая область, туда мы вначале загружаем содержимое из файла /modules/menu.php, а потом при нажатии кнопки отправляем содержимое области, скрипту который перезапишет это все в тот же файл /modules/menu.php. Так же в форме есть независимый переключатель. Если стоит галочка, то он передаст скрипту переменную is со значением yes (name=is value=yes) имя переменной и значение произвольны. Для нас главное чтоб переменная была передана, т.е. существовала. С помощью нее скрипт будет знать что ему делать.

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

Сам код:
Код: if(! defined("DATALIFEENGINE")) { // см. выше
die("Hacking attempt!");
}

echoheader("menu", "Управление динамическим меню"); // тоже стандартный "набор" DLE. выводит на экран шапку админки, в скобках указывается имя файла модуля и описание (по всей видимости для себя, т.к. нигде не выводится)

// начинается сам "рабочий код"

if (!isset($_POST["is"])) { // функция isset() проверяет существование чего либо. а восклицательный знак означает "не". т.е. прочитать код можно так "если переменная is НЕ передана, то.." $_POST это глобальный массив. в не содержатся переменные принятые методом POST

$file_prog = fopen (ROOT_DIR . "/engine/modules/menu.php", "r+") or die ("не открывается файл"); // функция fopen() открывает файл, просто открывает, ей мы указываем путь к файлу (ROOT_DIR . "/engine/modules/menu.php") и права доступа к этому файлу (r+). в данном случае нам нужно файл только прочитать. но r+ позволяет большее. кстати ROOT_DIR . это премудрости движка, если вы будите писать просто скрипт, не для движков, то это не нужно, нужен только путь в кавычках. or die означает "если ошибка"

while (!feof($file_prog)) { // вот и пригодился нам цикл с условием, за который говорила Innulia)) суть его в том что код будет выполняться пока условие верно. feof() проверяет достигнут ли конец файла. этой функции мы передаем переменную содержащую идентификатор самого файла (что он открыт, как открыт, путь к нему. все это содержит теперь наше переменная когда мы ей присвоили значение функции fopen) Пока НЕ достигнут конец файла, мы продолжаем его считывать
$text_prog = $text_prog . fread ($file_prog,50); // в переменную $text_prog записываем содержимое файла. точка обозначает что к уже имеющемуся в $text_prog будет записано то что прочитает функция fread (читает файл, ей надо передать идентификатор файла и число символов которые на прочитать. мы читаем по 50 символов. можно было просто указать 9999999999999999999 и не париться с циклом, но вдруг у кого то будет содержимое файла еще больше. все надо делать еще и универсально, красиво).
}

$menu_1 = fopen (ROOT_DIR . "/engine/inc/menu_1.txt", "r"); // открываем файл, в котором содержаться пояснения в текстовых областях. в них есть php код. и чтоб он вывелся как есть, а не был выполнен, я его подгружаю как обычный текст из файла. можно было это выполнить и по другому. но это на мой взгляд проще
$menu_2 = fopen (ROOT_DIR . "/engine/inc/menu_2.txt", "r"); // аналогично
$menu_1 = fread ($menu_1,100); // читаем текст из файла. тут я уж знаю сколько там символов и цикла нам не нужно
$menu_2 = fread ($menu_2,100); // аналогично

// в переменную $forma_red записываем хтмл код нашей страницы со всеми формами и пояснениями. в двойные кавычки, т.к. в коде нам нудно вывести содержимое переменных $text_prog, $menu_1 и $menu_2

$forma_red = "










сохранить


Для присвоения блоков новым страницам, замените конструкцию вида:



конструкцией (а в дальнейшем просто добавляйте ниже между break; и default:):


где:


/mypage.html - адрес страницы (без доменного имени, т.е. полный урл выглядел бы так: http://my-domen.ru/mypage.html) которой мы присваиваем меню. Модуль будет работать для абсолютно любого урла, даже вида: /admin.php?mod=menu&mod=menu&mod=menu&mod=menu&mod=menu&%QR%QP%QPO%/


file.tpl - имя файла, содержимое блока которое должно будет выводиться на искомой странице. Предварительно, вы естественно должны этот файл создать. ВАЖНО - файл должен быть именно формата.tpl


строки $tpl->compile("menu");
break; оставить без изменений


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


*******************************


Для сохранения изменений поставьте флажок "сохранить" и нажмите "отправить". Без флажка "сохранить" изменения внесены не будут! После успешной отправки формы, файл модуля будет безвозвратно перезаписан - БУДЬТЕ ВНИМАТЕЛЬНЫ!


";

echo $forma_red; // выводим код на страницу
}

else { //если переменная is передана, т.е. форма заполнена, пользователь хочет изменить файл скрипта.
$text_prog = $_POST["phptext"]; // получаем новое содержание файла модуля из формы и записываем это в переменную
$s = fopen (ROOT_DIR . "/engine/modules/menu.php", "w") or die ("не открывается файл"); // опять открываем файл /engine/modules/menu.php, но только уже с другими правами. которые нам больше всего подходят для данных нужд
fwrite ($s, $text_prog); // функция fwrite() записывает информацию в файл. ей нужно передать идентификатор файла и саму информацию соответственно

echo "

вернуться назад

"; //выводим ссылку, для возвращения назад к редактированию
} // условный оператор закончился

echofooter(); // выводим футер админки

alexperec » 02 авг 2011, 07:49

P.S. Кто-нибудь может подумать что тут воды больше чем сути. но это не так. Эта вся вода для того что бы понять мотивацию все действий, чтоб вырисовывалась ясная картина. Опытный программист все поймет и без пояснений. А этот же урок "основы", для тех кто только начинает. Что бы все разложить по полочкам и проследить ход мыслей, понять от куда что взялось - надо писать все с самого начала, а не только готовый код.

Что то народ вялый, наверное жара утомляет

Пишите активнее - не стесняйтесь! Задавайте вопросы, приводите примеры своих попыток - будем вместе все разбирать, искать ошибки

Понравилась статья? Поделитесь ей