Реферальная ссылка на PR-CY

Для доступа к сервису PR-CY.ru с дисконтом рекомендую использовать скидочную ссылку:

https://a.pr-cy.ru/?ref=25611

Лайфхак пользования Планфиксом

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

Один из важных инструментов для меня — Напоминания. Функционал у них очень продуман, но есть проблема — когда приходит напоминание, надо заходить по ссылке и смотреть, что там надо делать. Я придумал писать в заголовке напоминания то, что мне нужно. А зачастую это звонки определенным людям в определенное время.

Создание напоминания в Планфиксе

Создание напоминания в Планфиксе

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

Получаем уведомление в Телеграм на десктопе

Получаем уведомление в Телеграм на десктопе

Получаем уведомление в Телеграм на телеофне

Получаем уведомление в Телеграм на телефоне

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

Мысли про таск-менеджмент

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

Я исполняю задачи

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

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

Я ставлю задачи

Второй тип задач, когда постановщиком являетесь вы, предъявляет определенный список требований к вам:

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

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

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

Я руковожу постановщиками и исполнителями задач

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

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

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

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

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

Вопросы делегирования

Ни для кого, надеюсь, не секрет, что делегировать придется рано или поздно. Что делегировать — вы итак поймете. А вот как делегировать — вечный вопрос. Как доверить вопрос человеку? Как проконтролировать качество исполнения? Об этом и будет заметка.

В моей истории было несколько попыток делегирования. Они все начинались на энергичном рассказа о задаче, которую надо закрывать. Я рассказывал об особенностях, тонкостях, нюансах. Просил спрашивать меня в любой непонятной ситуации, и доверял работу. И смотрел, что будет происходить дальше.

К сожалению, у меня создавалось ощущение, что я говорил на китайском, а человек просто кивал из приличия. И попытки скорректировать работу приводили к тому, что человек обижался и уходил под предлогом «не сработались». Да, моя вина тоже есть — я слишком сильно хотел, чтобы человек понял и выполнял все так же как я. Пошел другим путем.

На второй и третий раз я описывал все текстом, алгоритмами, инструкциями и типовыми ситуациями. Я дольше ждал, дольше корректировал, терпел и старался помогать. Результат был тот же..

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

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

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

Какова мораль?

Делегировать надо учиться. Придется много пробовать. Придется много ждать и пробовать. Это будет недешево, и это будет бесить. Но этот путь придется проходить.

Лучше начать раньше, переключая часть работы на другого человека. Шаг за шагом придет понимание, что люди хорошо усваивают, а что плохо. Как вы можете объяснять, что нужно объяснять, а что нужно оставить для самоизучения. Наверное, это самая тонкая материя — научиться понимать себя и других.

Источники:

https://www.facebook.com/notes/

Почему не стоит обращать внимания на Елену Торшину

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

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

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

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

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

И получается, что все, кто ранее и сейчас работают с Торшиной и не подходят под ее параметры — упыри, мудаки и идиоты. А все остальные текущие клиенты — молодцы и красавчики.

Почему столько внимания?

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

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

Как быть клиентам с микробюджетами?

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

При выборе подрядчика поинтересуйтесь, как он относится к «творчеству» Торшиной. Если знаком и не негативно, то лучше с ними не работать. Если ничего не слышал, то скорее всего не следят за рынком вообще, и лучше не работать.

А работать остается или самим или с теми, кто не согласен с Торшиной в ее миропонимании.

Житейская мудрость на тему

Подумайте отдельно, что вам на самом деле нужно — реклама или продажи. Если продажи, лучше обращайтесь к тем, кто занимается маркетингом комплексно и в привязке к продажам, а не к стоимости перехода на сайт. Мною проверено агентство «Фэтфокс», не дешево, но того стоит.

Дал интервью. Основные заблуждения руководителей

Дал интервью. Основные заблуждения руководителей

Сайт hr-tv.ru запросили комментарий: «Какие, на ваш взгляд, наиболее распространенные заблуждения есть у начинающих и опытных руководителей?»

Мой ответ:

Противоположное предыдущему пункту иллюзия. Комментирует Степан Чельцов, генеральный директор Thepresents.ru:

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

Источник: http://hr-tv.ru/articles/semnadtsat-zabluzhdenii-lidera.html

Дополню комментарий. Каждый руководитель заблуждается по поводу своих подчиненных. Мы верим им больше нужного, не доверяем, хотя можно. Отпускаем некоторые вопросы, хотя надо бы усилить контроль. Или зажимаем гайки, хотя все вполне было нормально. Проблема не в самодурстве, хотя и оно присутствует.

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

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

Как решать проблему?

Для начала ее надо осознать. Причины в руководителе и всей его вертикали управления.

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

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

Неплохо звучит. Но как это сделать?

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

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

Мои друзья делают такие же штуки в MS Outlook, Basecamp’ах, Worksection и прочих сервисах. Их много, но внутри компании должен быть один для всех, или прочие решения должны быть легко интегрируемы между собой. Такое может сделать Планфикс с Гугл.Календарем, кстати.

Исправляем косяки в битриксе

Очередной день с программированием.

Как вы помните, я познакомился с каналом Михаила Базарова на ютубе, и проникся его приверженностью документации битрикса. Недолго думая, я решил преобразовывать сайт магазина подарков своими силами — это было ошибкой.

Сначала создал папку local, куда скопировал шаблоны сайта, а активный шаблон не был первым, и я недоумевал, почему дизайн сайта слетел. Оказывается, все, что в папке local — имеет преимущество над другими папками, а значит, пока мой главный шаблон не скопируется, дизайна не будет.

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

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

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

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

Далее оставался один скрипт черной пятницы, который оказался функцией INCLUDE в шаблоне. Если бы я не занимался php в прошлый раз, не догадался бы. Нашел этот включаемый файл, изменил в нем пути, и теперь ошибок не осталось.

Последнее действие — сбросить кеш сайта и пройтись по нему в поисках проблем. И нашел — оказалось, я сохранял действия в UTF-8, а сайт работает в CP-1251. Пришлось не просто найти все измененные файлы и пересохранить файлы, но и переписать все тексты заново.

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

О расхождении слов и дел

О расхождении слов и дел

Так получилось по жизни, что я умею только делать. Рассуждать о том, как все плохо мне надоело в армии после слов сержанта: «Солдат, сделай так, чтобы до тебя невозможно было доебаться.»

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

Отсюда у меня появились различные амбиции на системные подходы, потому что мой успех в разных делах зависел от разных людей и их работы. Это было и в армии, и в МГУ, и в Студии Лебедева.

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

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

«Я как минимум начал работу над этим, и проработал много нюансов. А на какой стадии ты?»

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

Это все к чему. Делайте то, что считаете важным. Делайте так, как считаете правильным. Просто делайте, слушайте, корректируйтесь по ходу работы. Меньше болтовни, больше дела.

Пятиминутка ненависти

Как мы проводим регулярные созвоны

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

Первая встреча в этом году с моими партнерами Агентством «Фэтфокс» началась с темой «Стратегическое планирование». Фэтфокс любят большую задачу на большой срок, и я ее поставил — увеличить органический трафик к ноябрю в 10 раз с 600 уников в день до 6000. И ребята начали работать.

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

Созвоны

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

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

Пятиминутка ненависти

В Студии Лебедева на Газетном переулке дизайнер Искандер Мухамадеев проводил уроки английского. Он научил в начале урока проводить «пятиминутку ненависти», на которой он ругал нас за невыполненную работу, за опаздания, а мы в свою очередь делились своим негативом. Ровно через 5 минут или ранее мы заканчивали, и начинали урок как ни в чем не бывало.

Этот момент я и решил привнести в наш созвон. Диалог так и начинается:

— Привет!

— Привет!

— Начнем пятиминутку ненависти?

— Давай..

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

Кульминация

Я не силен в красивых кульминациях, и эта статья будет без красивого окончания, потому что мы только 1 месяц так работаем, но мои ощущения работы и обратной связи улучшились. Мне не надо искать правильных слов или причины поговорить, потому что есть регулярный созвон и «пятиминутка ненависти», остальное обсуждение идет по стандарту наших задач.

Попробуйте на ваших встречах внедрить что-то подобное, будет интересно услышать ваш опыт.

PHP-шпаргалка

Конструкция открывается и закрывается:

<?php Здесь пишется код ?>

Вид переменных:

$a, или $blababla, или $supermegaparamname

Особый гемор:

  • всегда ставить точку с запятой «;» в конце строки
  • стараться избегать пробелов в конце строк, это ведет к ошибкам

Присвоение значений переменным:

$a = 10;

$a = «Аз есьм значение переменной»;

Операции с переменными самые обычные:

$a = $a+1; увеличивает на 1 значение

$a++; увеличивает на 1 значение

$a—; тут два минуса, уменьшает на 1 значение

$a = $b * $c; перемножение

Вывод значений:

echo «Да будет переменная $a»; для строки единичных значений

print $a; — для массивов чаще

Массив создается повторением переменной с разными значениями:

$param = «Иван»;

$param = «Иванович»;

$param = 21;

$param = «мужчина»;

Встроенные функции:

count($param); — посчитает количество ячеек в массиве

isset($param); — проверит, есть ли такая переменная

empty($param); — проверит, пустая я ли переменная

date(«y-m-d»); — выводит текущую дату. Можно играть кеглем и разделителем

date(«h-i-s»); — выводит текущее время. Можно играть разделителем.

Работа с функциями php

Объявляем функцию с именем hello и переменной $name. Функция введет имя во фразу, а выведется при обращении к имени функции с назначением значения в функцию.

function hello($name){

echo «$name, привет!»

}

hello(«Степан»);

Тоже самое с двумя переменными:

function hello($name, $sur_name){

echo «$name $sur_name, привет!»

}

hello(«Степан», «Чельцов»);

Тоже самое, переменные определяются отдельно от функции:

function hello($name, $sur_name){

echo «$name $sur_name, привет!»

}

$name = «Степан»;

$sur_name = «Чельцов»;

hello($name, $sur_name);

Выдаем результат при вызове через return:

function $matem($b){

$b = $b*2;

return $b;

}

$result = matem(«10»);

Пример с массивом:

$mas10[] = «Иван»;

$mas10[] = «Иванов»;

$mas10[] = 21;

$mas10[] = «муж.»;

$mas11[] = «Иван»;

$mas11[] = «Иванов»;

$mas11[] = 21;

$mas11[] = «муж.»;

$mas12[] = «Иван»;

$mas12[] = «Иванов»;

$mas12[] = 21;

$mas12[] = «муж.»;

 

function anketa(){

foreach($array as $item){

echo «$item <br>»;

}

}

anketa(mas10);

anketa(mas11);

anketa(mas12);

Вызов значения и функций из других файлов. Вызов через include не останавливает работу страницы в случае ошибки:

include «some_function.php»;

Вызов значения и функций из других файлов. Вызов через require останавливает работу всей страницы в случае ошибки:

require «some_function.php»;

Вызов значения и функций из других файлов только один раз:

include_once «some_function.php»;

Вызов значения и функций из других файлов только один раз:

require_once «some_function.php»;

Глобальные массивы

Массив POST

Массив POST хранит данные из форм сайта в заданные файлы:

form method = «post» action = «tutor-putor.php>

<input type = «text» name = «login» value = «Логин»/><br>

<input type = «email» name = «email» value = «Почта»/><br>

<input type = «submit» name = «save» value = «Сохранить»/><br>

</form>

В файле tutor-putor.php следующее содержимое для приема и вывода данных:

<?php

$_POST[«login»];

$_POST[«email»];

?>

Чтобы защитить сайт от инъекций, начинаем чистить ввод. Сначала от html-текстов через strip_tags:

$login = strip_tags($_POST[‘login’]);

Уберем пробелы из логина через trim:

$login = strip_tags(trim($_POST[‘login’]));

Преобразуем спец.символы в их код через htmlspecialchars:

$login = htmlspecialchars(strip_tags(trim($_POST[‘login’])));

Сделаем очистку через функцию:

function clear_data($same_data){

return htmlspecialchars(strip_tags(trim($same_data)));

}

$login = clear_data($_POST[‘login’]);

$email = clear_data($_POST[’email’]);

Массив GET

Массив нужен для создания динамики на сайте. С одной стороны, можно передать данные на сервер. С другой, определить содержимое сайта в зависимости от параметра.

Чтобы передать данные можно использовать метод GET:

form method = «get» action = «tutor-putor.php>

<input type = «text» name=»login» value = «Логин»/><br>

<input type = «email» name = «email» value = «Почта»/><br>

<input type = «submit» name = «save» value = «Сохранить»/><br>

</form>

 

<?php

$_GET[«login»];

$_GET[«email»];

?>

Выдача получится через адресную строку:

http://cheltsov.ru/tutor-putor.php?login=vasya&email=vasya@gmail.com&save=Сохранить

Пример работы без предварительной подготовки через GET:

<?php

if($_GET[‘id’]==1)

echo «Пункт номер 1»;

else

echo «Другой пункт»;

?>

Переход по адресу с заданным значением:

http://cheltsov.ru/tutor-putor.php?id=1

Выдаст

Пункт номер 1

Изменим содержимое сайта в зависимости от параметра:

<?php

switch($page){

case = «main»;

$title = «Главная страница»;

$text = «Это главная страница»;

break;

case = «news»;

$title = «Страница новостей;

$text = «Это новостная страница»;

break;

default;

$title = «404 страница;

$text = «Это страница для ошибочных данных»;

break;

}

?>

<h1><?php echo $title ?></h1>

<p><?php echo $text ?></p>

http://cheltsov.ru/tutor-putor.php?page=main

Выдаст

Главная страница

Это главная страница

Массив SERVER

Массив SERVER для получения данных от сервера. Например, получение IP-адреса посетителя:

$_SERVER[‘REMOTE_ADDR’]

Или информация про браузер посетителя:

$_SERVER[‘HTTP_USER_AGENT’]

Вывод содержимого ответа сервера в явном виде:

<html>

<body>

<pre>

<?php

print_r($_SERVER);

?>

</pre>

</body>

</html>

Константы

Определяем константы через define:

<?php

define («MYNAME»,»Stepan»);

echo MYNAME;

?>

Подстановка адреса нашего сайта для указания неполного адреса при программировании:

<?php

define («BASE_URL»,»http://cheltsov.ru/»);

?>

<img src=»<?php BASE_URL;?>images/logo.png»/>

Cookies

Куки нужны для сохранения информации пользователя при работе с сайтом. Например, галочки «Запомнить меня» на разных сайтах сохраняет значение логина и пароля сохраняет файл cookies.

Чтобы создать файл cookies, надо:

<?php

setcookie(«name»,»Stepan», time()+36000);

?>

<DOCTYPE>

<html>

Чтобы вызвать вызвать значение сохраненной куки, пишем $_COOKIE[»]:

<body>

<?php

echo $_COOKIE[‘name’];

?>

</body>

</html>

Получаем:

Stepan

 

<?php

if (isset($_POST[‘send’])){

$bg = $_POST[‘bg’];

setcookie(«background»,»$bg», time()+3600);

}

?>

<DOCTYPE>

<html>

<head></head>

<body>

<?php if(isset($_COOKIE[‘background’])){?>

<style>

body

{

background:<?php echo $_COOKIE[‘background’];?>;

}

</style>

<?php }?>

<form method=»post» action=»»>

Выберите цвет фона страницы:<br>

<select name=»bg»>

<option value=»red»>Красный</value>

<option value=»black»>Черный</value>

<option value=»yellow»>Желтый</value>

</select>

<input type=»submit» name=»send» value=»Выбрать»/>

</form>

<p>В куки записан цвет <?php echo $_COOKIE[‘background’];?></p>

</body>

</html>

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

setcookie(«background»,»$bg», time()-3600);

Или через обнуление данных:

setcookie(«background»,»»);

Или проще:

setcookie(«background»);

Сессии

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

Начинаем объявление сессии:

<?php

session_start();

if (isset($_POST[‘send’])){

$_SESSION[‘name’] = strip_tags(trim($_POST[‘name’]));

}

if(!isset($_SESSION[‘name’])){

?>

<DOCTYPE>

<html>

<head></head>

<body>

<form method=»post» action=»»>

Звать как?<br>

<input type=»text» name=»name» value=»Имя»/>

<input type=»submit» name=»send» value=»Выбрать»/>

</form>

<?php }

else{

echo «Hello, «.$_SESSION[‘name’];

}

?>

</body>

</html>

Уничтожить сессию можно командой session_destroy():

session_destroy();

Частичное уничтожение сессии (отдельные данные) делаем через unset:

unset($_SESSION[‘name’]);

Подключение базы данных

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

mysql_connect(«localhost»,»root»,»12345″);

mysql_select_db(«base_name»);

Красивый подход через переменные:

$connection = mysql_connect(«localhost»,»root»,»12345″);

$data_base = mysql_select_db(«base_name»);

Добавим кодировку:

mysql_set_charset(«utf8»);

Или так:

mysql_query(«SET NAMES ‘UTF8′»);

Проверим соединение:

<?php

if(!$connection || !$data_base){

exit(mysql_error());

}

else{

echo «Соединение успешно прошло»;

}

?>

После окончания работы с базой данных закрываем соединение через:

mysql_close();

Выборка из базы данных. Готовим выборку и передаем все в переменную:

$result = mysql_query(«SELECT * FROM base_name»);

mysql_close();

Создаем массив для всех полученных данных, чтобы работать с ним:

$row = mysql_fetch_array($result);

Выводим какую-нибудь ячейку из полученного массива:

echo $row[‘title’].»<br>»;

echo $row[‘text’];

Чтобы вывести все данные по строчно из базы, введем условие while:

while($row = mysql_fetch_array($result)){

echo $row[‘title’].»<br>»;

echo $row[‘text’];

}

И добавим верстки к нашему выводу данных:

<?php

while($row = mysql_fetch_array($result)){

?>

<div class=»content»>

<h2><?php echo $row[‘title’];?></h2>

<p><?php echo $row[‘text’];?></p>

</div>

<?php

}

?>

Добавим в выборку сортировку по какому-нибудь параметру. Для этого добавляем при формировании массива «ORDER BY«. Значение DESC сортирует в обратном порядке по полю id:

$result = mysql_query(«SELECT * FROM base_name ORDER BY id DESC»);

Ограничим выборку количеством выдачи, скажем только 25 результатов. Используем команду LIMIT:

$result = mysql_query(«SELECT * FROM base_name ORDER BY id DESC LIMIT 25»);

Введем фильтрацию выдачи по заданному слову через команду WHERE:

$result = mysql_query(«SELECT * FROM base_name WHERE text=’новость’ ORDER BY id DESC LIMIT 25»);

Ограничим получение данных из базы перечислением нужных колонок. Убираем * и пишем через запятую имена полей:

$result = mysql_query(«SELECT title,text FROM base_name WHERE text=’новость’ ORDER BY id DESC LIMIT 25»);

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

Как добавлять записи в бд через формы

Для соединения с базой сделаем отдельный файл подключения с содержимым, назовем его «db.php»:

<?php

$connection = mysql_connect(«localhost»,»root»,»12345″);

$data_base = mysql_select_db(«base_name»);

mysql_set_charset(«utf8»);

if(!$connection || !$data_base){

exit(mysql_error());

}

else{

echo «Соединение успешно прошло»;

}

?>

Создаем форму добавления:

<form method = «post» action = «tutor-putor.php>

<input type = «text» name = «title» value = «Заголовок»/><br>

<textarea cols=»40″ name=»text» rows=»10″ value=»Текст сообщения»><?textarea><br>

<input type = «text» name = «author» value = «Автор»/><br>

<input type = «hidden» name = «date» value = «<?php echo date(‘Y-m-d’)?>»/><br>

<input type = «hidden» name = «time» value = «<?php echo time(‘H:i:s’)?>»/><br>

<input type = «submit» name = «add» value = «Отправить»/><br>

</form>

Подключаем нашу базу через include_once:

include_once(«db.php»);

Принимаем значения из формы в переменные:

if(isset($_POST[‘add’])){

$title = strip_tags(trim($_POST[‘title’]));

$text =strip_tags(trim($_POST[‘text’]));

$author =strip_tags(trim($_POST[‘author’]));

$date =strip_tags(trim($_POST[‘date’]));

$time =strip_tags(trim($_POST[‘time’]));

Делаем запрос к базе:

mysql_query(» INSERT INTO data_base(title, text,author, date, time) VALUES (‘$title’.’$text’.’$author’.’$date’.’$time’)»);

mysql_close();

echo «Данные успешно добавлены.»;

} //закрыли if сверху

Как обновлять данные в базе

Если нам надо что-то поправить в уже введенной информации, надо ее сначала запросить на вывод.

<?php

include_once(«db.php»);

$id = $_GET[‘id’];

$result = mysql_query(«SELECT title,text,author,date,time FROM base_name WHERE id=’$id'»);

?>

Создаем цикл заполнения:

while($row = mysql_fetch_array($result)){

}

Подставляем значения в форму редактирования:

<form method = «post» action = «tutor-putor.php?id=<?php echo $id; ?>»>

<input type = «text» name = «title» value = «<?php echo $row(‘title’);?>»/><br>

<textarea cols=»40″ name=»text» rows=»10″ value=»<?php echo $row(‘text’);?>»><?textarea><br>

<input type = «text» name = «author» value = «<?php echo $row(‘author’);?>»/><br>

<input type = «submit» name = «save» value = «Изменить»/><br>

</form>

Далее в форме мы редактируем данные, если необходимо. Чтобы данные сохранились, надо сделать:

if(isset($_POST[‘save’])){

$title = strip_tags(trim($_POST[‘title’]));

$text =strip_tags(trim($_POST[‘text’]));

$author =strip_tags(trim($_POST[‘author’]));

mysql_query(» UPDATE data_base SET title=», text=»,author=» WHERE id=’$id'»);

mysql_close();

echo «Данные успешно обновлены.»;

}

Удаление записей из базы данных

Повторяем ту же конструкцию, только меняем запрос к базе:

<?php

include_once(«db.php»);

$id = $_GET[‘id’];

mysql_query(«DELETE FROM base_name WHERE id=’$id’ «);

mysql_close();

echo «Данные успешно удалены.»;

?>