Архив рубрики: ‘Первые шаги’

Автоматическая генерация preview или качественный ресайз картинок

Обработка изображений – то, с чем сталкивается рано или поздно любой web-разработчик. Неважно какая задача перед вами стоит: генерация preview картинок или captcha это все свзяано с работой с графикой. Вот тут-то и начинаются обычно сложности, т.к. стандартная библиотека GD весьма примитивна. Кроме того, она сильно портит изображение при его ресайзе. Поэтому, я хочу рассказать об основах работы с Image Magic, правда далеко не на всех хостингах вы сможете найти расширение Imagick php. Еще раз хочу оговориться, если у Вас обыкновенный хостинг-перепроверьте установлен ли Image Magic (это можно сделать с помощью phpinfo()), в ином случае у Вас просто ничего не будет работать.
Подробнее »

Ошибки в PHP. Вывод, перехват, скрытие.

Ошибки, могут быть как друзьями программиста так и его врагами. Как говорится у каждой стороны две медали.
Насколько часто вы бьетесь над программой, восклицая про себя: “Чего же ей еще не хватает?!”. Помню, когда я был новичком, в самом начале пути познания PHP, у меня это было довольно часто, пока я не научился читать и понимать ошибки. Не стоит воспринимать ошибку как препятствие. Это подсказка для вас. Описание проблемы. Намного легче заниматься отладкой когда, если что-то не работает, видишь ее перед глазами. Поэтому, во время отладки стоит их включать если они отключены. Включаются ошибки достаточно просто. Можно включать их как через .htaaccess так и с помощью самого PHP кода. Подробнее »

MySQL, создаем первую таблицу.

В этой статье, я постараюсь кратко рассказать о достаточно необьятной теме, типах столбцов(данных) в MySQL.
Итак, пришла пора вам задуматься о создании первого более-менее серьезного скрипта. Например гостевой книге. Как же хранить сообщения в ней? Можно конечно в файликах, но задумайтесь какой гемморой это. Если сообщений много => много мелких файликов..а это не есть гуд. Да и листинг сообщений (не вываливать же на одну страницу например 1000 постов) тоже гемморой еще тот. что ж нам помогут базы данных. В них легко можно хранить информацию. Подробнее »

Работа с сессиями в PHP или пошагово задаем данные.

Помните экран установки windows? Пошаговая настройка, удобнейшая вещь в некоторых случаях. При разработке WEB-сайтов, такое тоже весьма уместно применять. Ведь пользователю не важно как все устроено внутри, главное-чтобы ему было удобно и интуитивно понятно, и, такие интерфейсы удовлетворяют этим условиям. Но как же их реализовать? Ведь у нас есть фактически лишь три метода передачи: POST, GET и COOKIE. Ну не пихать же эти данные в тело страницы, в адресную строку…и уж упаси Боже в печенье. Это еще можно сделать с 1-3 переменными, а если данных очень много-все, пиши-пропало. Но, разработчики PHP тоже не лыком шиты, они придумали механизм который способен хранить данные, причем, он хоть и основан на работе с файлами, с сериализованными массивами, довольно сильно облегчает жизнь разработчику. Что же это такое? Это сессии. Подробнее »

MySQL, или удобное хранение данных.

Собственно, что такое MySQL? Это средство для удобного хранения информации. Согласитесь с файлами работать неудобно, а особенно это неудобство чувствуется если их очень много. А MySQL спокойно справляется с 25-гигабайтной базой..не без напрягов конечно, но в целом весьма неплохо.
Итак SQL-Структурированный Язык Запросов. “Почему же я заговорил о нем, ведь данный ресурс посвящен PHP”,-думаете вы. Да все просто. В PHP очень хорошо реализована схема работы c базами данных (БД) MySQL. Приведу простой пример, если вы ничего не понимаете в MySQL не расстраивайтесь, пока вам это и не нужно, позднее постараюсь немного обьяснить что к чему. Сейчас лишь разберитесь как с ним общается PHP.


<?php

if(!mysql_connect('server','username','password')) die('Невозможно подключиться к БД');

//Подключаемся к mysql серверу.

if(!mysql_select_db('dbname')) die('База данных не найдена');

//выбираем базу данных с которой будем работать.

$query mysql_query("SELECT * FROM table_name WHERE id>0;");

//посылаем запрос к MySQL 

if(mysql_num_rows($query))



//mysql_num_rows возвращает количество строк выбранных в БД

    
while($data mysql_fetch_assoc($query))

    {

        
//В цикле берем результат запроса в массив и выводим

        print '<pre>';

        print_r($data);

        print '</pre><br/>';

    }

}

?>

Итак что же за белиберда здесь написана? Для начала нам надо подсоединиться к MySQL для этого используем mysql_connect, где первый параметр сервер к которому подключаемся, второй-имя пользователя БД, третий-пароль пользователя БД. После чего выбираем БД с которой хотим работать с помощью mysql_select_db. Далее, шлем составленный нами, запрос к серверу. Получаем идентификатор (ресурс id наподобие идентификатора открытого файла) и читаем результаты в массив при помощи цикла while и оператора mysql_fetch_assoc. Но перед этим, чтобы цикл нам не выдал ошибки, нужно проверить, а есть ли вообще результаты. В этом поможет функция mysql_num_rows, которая считает количество результатов, возвращенных MySQL. Конечно это примитивный пример, но функции эти основные, без которых освоиться с MySQL будет просто нереально. Настоятельно рекомендую почитать в мануале как они ведут себя.
Так же, часто можно использовать вместо mysql_fetch_assoc другую функцию mysql_fetch_array, которая в зависимости от параметра создает или ассоциативный или пронумерованный или смешанный массив результатов. Достаточно часто это бывает очень удобно. При работе с базами данных надо всегда помнить, что большое количество запросов, или очень сложные запросы, могут сильно напрячь сервер и, если вы хоститесь, у обыкновенного хостера, а не на ВДС или Дедике надо как можно сильнее оптимизировать работу с MySQL. К примеру настоятельно не рекомендуется использовать в цикле запросы, даже очень простые. На странице, на мой взгляд, не должно быть более 20-30 запросов (в зависимости от посещаемости ее пользователями, возможно, если нельзя отказаться от запросов, стоит как-то кэшировать ее) . Ну на этом пожалуй закончу, ибо о MySQL можно говорить довольно долго и существует очень много различных аспектов работы с ней. В дальнейшем постараюсь вернуться к этому вопросу и, как можно более подробно, в рамках моего ресурса разумеется, описать MySQL