«Бог не меняет того, что (происходит) с людьми, пока они сами не изменят своих помыслов.» Коран, Сура 12:13

СУБД/лекция 3 семестр 2 — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Подкючение к БД)
(Классы построения графиков)
 
(не показаны 24 промежуточные версии 1 участника)
Строка 1: Строка 1:
 
== Литература ==
 
== Литература ==
* [http://life-prog.ru/view_zam.php?id=257&cat=6&page=5]
+
* {{V|24px}}[http://www.php.su/articles/?cat=phpdb&page=025 Исходная Документация]
* [http://www.php.su/articles/?cat=phpdb&page=025]
+
 
* [http://vismech.ru/mysql/ispolzovanie-mysql-v-php-scenariyah/ Использование MySQL в PHP сценариях]
 
* [http://vismech.ru/mysql/ispolzovanie-mysql-v-php-scenariyah/ Использование MySQL в PHP сценариях]
 +
 +
== Встроенные функции PHP ==
 +
* [[СУБД/лекция 3 семестр 2/Функции для СУБД | PHP функции для работы с СУБД]]
 +
* [[СУБД/лекция 3 семестр 2/Функции СУБД | PHP  Функции ]]
  
 
== Подкючение к БД ==
 
== Подкючение к БД ==
Строка 27: Строка 30:
 
* '''mysql_select_db''' выбор базы данных для работы (аналог '''use имя_базы''')
 
* '''mysql_select_db''' выбор базы данных для работы (аналог '''use имя_базы''')
 
* mysql_close($link); закрываем соединение (обязательно делать потому как число соединение обычно граничено для серверов)
 
* mysql_close($link); закрываем соединение (обязательно делать потому как число соединение обычно граничено для серверов)
 +
 +
== Устновка кодировкmy sql_set_charset ==
 +
Для версий (PHP 5 >= 5.2.3)
 +
 +
'''mysql_set_charset''' — Устанавливает кодировку клиента
 +
Альтернативы для данной функции  '''mysqli_character_set_name()'''. Добавлением charset в строку соединения, например charset=utf8. Описание :
 +
 +
*'''bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )'''
 +
 +
Если идентификатор соединения не был указан, используется последнее соединение, открытое mysql_connect(). Если такое соединение не было найдено, функция попытается создать таковое, как если бы mysql_connect() была вызвана без параметров. Если соединение не было найдено и не смогло быть создано, генерируется ошибка уровня E_WARNING.
 +
*  Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
 +
* Данная функция требует MySQL версии 5.0.7 или выше.
 +
*{{V|24px}} Это наиболее предпочитаемый способ для смены кодировки. Использование mysql_query() в этих целях (например SET NAMES utf8) не рекомендуется. Смотрите раздел  кодировка символов в MySQL для подробной информации и текущего соединения
 +
 +
<source lang="php">
 +
<?php
 +
$db = "alldb";
 +
$user = "student";
 +
$pass = "studentpass";
 +
$server = "93.125.42.8";
 +
$link = mysql_connect($server, $user, $pass);
 +
if(!$link) die("cann't connect Mysql");
 +
else echo "Connect to ".$db." successfull<br>";
 +
mysql_select_db($db) or die("cann't connect Mysql<br>".mysql_error());
 +
//........
 +
mysql_set_charset(utf8);
 +
//..............
 +
mysql_close($link);
 +
?>
 +
</source>
  
 
== Выполение запросов ==
 
== Выполение запросов ==
Строка 146: Строка 179:
  
 
Теперь на экран выведутся все строки у которых столбец name равен значению Ruslan.
 
Теперь на экран выведутся все строки у которых столбец name равен значению Ruslan.
 +
 +
==Вывод значений на экран ==
 +
* Выполняем запрос
 +
* Помещаем результат в переменную !!! (учитывайте что результатом запроса должна быть разумная таблица не {{X|24px}}10ГБ к примеру )
 +
* Достаем построчно значения из переменной с помощью курсора '''mysql_fetch_array($result)'''
 +
* Выводим нужные поля из строки
 +
* Можно разделять поля используя '''html''' теги форматрирования
 +
*{{V|24px}} '''ОБЯЗАТЕЛЬНО''' после использования очищаем переменную в которой хранился результат выполения запроса '''mysql_free_result($result);'''
 +
 +
<source lang="php"><?php
 +
$db = "alldb";
 +
$user = "student";
 +
$pass = "studentpass";
 +
$server = "93.125.42.8";
 +
$link = mysql_connect($server, $user, $pass);
 +
if(!$link) die("cann't connect Mysql");
 +
else echo "Connect to ".$db." successfull<br>";
 +
mysql_select_db($db) or die("cann't connect Mysql<br>".mysql_error());
 +
 +
mysql_set_charset(utf8);
 +
 +
$query="select * from vkdb where sex = '2' limit 10;";
 +
$result=mysql_query($query) or die(' Failed! ' . mysql_error());
 +
 +
/*
 +
while($data=mysql_fetch_array($result))
 +
{
 +
    echo $data['fname']."<br>".$data['sex']."<hr>";
 +
echo "1111";
 +
}*/
 +
// Выводим результаты в html
 +
echo "<table>\n";
 +
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
 +
    echo "\t<tr>\n";
 +
    foreach ($line as $col_value) {
 +
        echo "\t\t<td>$col_value</td>\n";
 +
    }
 +
    echo "\t</tr>\n";
 +
}
 +
echo "</table>\n";
 +
 +
// Освобождаем память от результата
 +
mysql_free_result($result);
 +
// Закрываем соединение
 +
mysql_close($link);
 +
?>
 +
</source>
  
 
== Классы построения графиков ==
 
== Классы построения графиков ==
 
* Скачиваем класс  
 
* Скачиваем класс  
[http://sourceforge.net/projects/pchart/files/pchart/pChart%201.27%20-%20beta/pChart.1.27d.rar/download pChart]
+
* [http://www.pchart.net/download страница загрузки pChart]
 +
* [http://www.pchart.net/release/pChart2.1.4.zip Прямая ссылка 1 pChart2.1.4.zip (19 January 2014)]
 +
* [http://simhard.com/pub/ftp/pChart2.1.4.zip Прямая ссылка 2 pChart2.1.4.zip (19 January 2014)]
 +
Очень часто при создании каких-нибудь сервисов приходится рисовать различные графики. Например, если Вы делаете рекламную сеть, то можно построить зависимости количества переходов по рекламным материалам по дням. Если это какой-нибудь Интернет-магазин, то можно строить графики доходов магазина. Как рисовать графики в PHP, я разберу ниже.
 +
 
 +
Во-первых, можно всё делать самостоятельно, написав свою библиотеку. Здесь надо учитывать, что координаты в PHP идут на увеличение вправо и вниз, тогда как в математике они идут вправо и вверх. В остальном, ничего особо сложного.
 +
 
 +
Однако, если писать особо не хочется, то есть просто замечательнейшая библиотека, позволяющая строить самые разнообразные графики, диаграммы, гистограммы и прочее. Целая куча различных возможностей (подписывание осей, рисование нескольких графиков на одной оси, рисование порогов, отображение легенды и прочего) делают данную библиотеку по-настоящему универсальной.
 +
 
 +
Библиотека называется '''pChart''': ознакомиться с документацией и скачать pChart.
 +
 
 +
Предлагаю Вашему вниманию пример:
 +
<source lang="php"><?php
 +
/* CAT:Pie charts */
 +
 +
/* pChart library inclusions */
 +
include("./pChart/class/pData.class.php");
 +
include("./pChart/class/pDraw.class.php");
 +
include("./pChart/class/pPie.class.php");
 +
include("./pChart/class/pImage.class.php");
 +
 
 +
/* Create and populate the pData object */
 +
$MyData = new pData();   
 +
$MyData->addPoints(array(40,30,20),"ScoreA"); 
 +
$MyData->setSerieDescription("ScoreA","Application A");
 +
 
 +
/* Define the absissa serie */
 +
$MyData->addPoints(array("A","B","C"),"Labels");
 +
$MyData->setAbscissa("Labels");
 +
 
 +
/* Create the pChart object */
 +
$myPicture = new pImage(700,230,$MyData,TRUE);
 +
 
 +
/* Draw a solid background */
 +
$Settings = array("R"=>173, "G"=>152, "B"=>217, "Dash"=>1, "DashR"=>193, "DashG"=>172, "DashB"=>237);
 +
$myPicture->drawFilledRectangle(0,0,700,230,$Settings);
 +
 
 +
/* Draw a gradient overlay */
 +
$Settings = array("StartR"=>209, "StartG"=>150, "StartB"=>231, "EndR"=>111, "EndG"=>3, "EndB"=>138, "Alpha"=>50);
 +
$myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,$Settings);
 +
$myPicture->drawGradientArea(0,0,700,20,DIRECTION_VERTICAL,array("StartR"=>0,"StartG"=>0,"StartB"=>0,"EndR"=>50,"EndG"=>50,"EndB"=>50,"Alpha"=>100));
 +
 
 +
/* Add a border to the picture */
 +
$myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0));
 +
 
 +
/* Write the picture title */ 
 +
$myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/Silkscreen.ttf","FontSize"=>6));
 +
$myPicture->drawText(10,13,"pPie - Draw 3D pie charts",array("R"=>255,"G"=>255,"B"=>255));
 +
 
 +
/* Set the default font properties */ 
 +
$myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/Forgotte.ttf","FontSize"=>10,"R"=>80,"G"=>80,"B"=>80));
 +
 
 +
/* Create the pPie object */ 
 +
$PieChart = new pPie($myPicture,$MyData);
 +
 
 +
/* Define the slice color */
 +
$PieChart->setSliceColor(0,array("R"=>143,"G"=>197,"B"=>0));
 +
$PieChart->setSliceColor(1,array("R"=>97,"G"=>77,"B"=>63));
 +
$PieChart->setSliceColor(2,array("R"=>97,"G"=>113,"B"=>63));
 +
 
 +
/* Draw a simple pie chart */ 
 +
$PieChart->draw3DPie(120,125,array("SecondPass"=>FALSE));
 +
 
 +
/* Draw an AA pie chart */ 
 +
$PieChart->draw3DPie(340,125,array("DrawLabels"=>TRUE,"Border"=>TRUE));
 +
 
 +
/* Enable shadow computing */ 
 +
$myPicture->setShadow(TRUE,array("X"=>3,"Y"=>3,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
 +
 
 +
/* Draw a splitted pie chart */ 
 +
$PieChart->draw3DPie(560,125,array("WriteValues"=>TRUE,"DataGapAngle"=>10,"DataGapRadius"=>6,"Border"=>TRUE));
 +
 
 +
/* Write the legend */
 +
$myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/pf_arma_five.ttf","FontSize"=>6));
 +
$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>20));
 +
$myPicture->drawText(120,200,"Single AA pass",array("DrawBox"=>TRUE,"BoxRounded"=>TRUE,"R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_TOPMIDDLE));
 +
$myPicture->drawText(440,200,"Extended AA pass / Splitted",array("DrawBox"=>TRUE,"BoxRounded"=>TRUE,"R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_TOPMIDDLE));
 +
 
 +
/* Write the legend box */ 
 +
$myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/Silkscreen.ttf","FontSize"=>6,"R"=>255,"G"=>255,"B"=>255));
 +
$PieChart->drawPieLegend(600,8,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL));
 +
 
 +
$myPicture->autoOutput("l4.png");
 +
//ob_flush();
 +
?></source>
 +
 
 +
В данном примере мы круговую диаграмму распределения, а затем выводим этот график в браузер. Также можно сохранять график в файл.
 +
 
 +
Возможностей у библиотеки масса, я лишь показал самые-самые базовые. Поэтому если Вам нужно построение графиков на сайте через PHP, то обязательно ознакомьтесь с документацией pChart.
 +
 
 +
== Возможные ошибки и предупреждения сервера ==
 +
* Cannot modify header information
 +
 
 +
* Ошибка «Невозможно изменить информацию заголовка» означает, что вы правили файлы (скорее всего, wp-config.php) вручную. И правили некорректно. Необходимо сохранять файлы в кодировке UTF-8 без метки BOM (byte order mark).
 +
 
 +
Имя файла, приводящего к ошибке, и номер строки указаны в "output started at". Например:
 +
<source lang="text">Warning: Cannot modify header information - headers already sent by (output started at /home/user/site.ru/public_html/wp-config.php:1) in /home/user/site.ru/public_html/wp-includes/pluggable.php on line 934</source>
 +
* Означает, что проблему вызывает 1-я строка файла wp-config.php.
 +
* Убедитесь, что перед первой строкой '''<?php''' и после последней '''?>''' нет пустых строк.
 +
* Избегайте править файлы в Блокноте. Используйте «программистские» редакторы вроде PSpad, '''Notepad++''' и им подобные, в которых метка BOM отключается. В Notepad++ для этого нужно выбрать в меню «Кодировки» пункт «Преобразовать в UTF-8 без BOM».
 +
== PHP классы ==
 +
* [http://handynotes.ru/2010/09/40-must-have-php-classes.html Перечень классов на php на все случаи жизни]

Текущая версия на 20:36, 3 мая 2014

Содержание

Литература

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

Подкючение к БД

<?php
$db = "alldb";
$user = "student";
$pass = "studentpass";
$server = "93.125.42.8";
$link = mysql_connect($server, $user, $pass); // Функция подключения к базе данных в переменной link храниться результат подключения
if(!$link) die("cann't connect Mysql");       // Проверка успешности подключения
else echo "Connect to ".$db." successfull";
mysql_select_db($db) or die("cann't connect Mysql".mysql_error());
//..........
// Выполнение запросов и работа программы
//..........
mysql_close($link);
?>
  • Задете имя базы
  • Имя пользователя
  • Пароль
  • IP Сервера
  • mysql_connect подключение к базе и создание сессии подключения
  • Обязательно проверям статус выполения
  • mysql_select_db выбор базы данных для работы (аналог use имя_базы)
  • mysql_close($link); закрываем соединение (обязательно делать потому как число соединение обычно граничено для серверов)

Устновка кодировкmy sql_set_charset

Для версий (PHP 5 >= 5.2.3)

mysql_set_charset — Устанавливает кодировку клиента

Альтернативы для данной функции  mysqli_character_set_name(). Добавлением charset в строку соединения, например charset=utf8. Описание :
  • bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )

Если идентификатор соединения не был указан, используется последнее соединение, открытое mysql_connect(). Если такое соединение не было найдено, функция попытается создать таковое, как если бы mysql_connect() была вызвана без параметров. Если соединение не было найдено и не смогло быть создано, генерируется ошибка уровня E_WARNING.

  • Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
  • Данная функция требует MySQL версии 5.0.7 или выше.
  • 200px-Yes check.png Это наиболее предпочитаемый способ для смены кодировки. Использование mysql_query() в этих целях (например SET NAMES utf8) не рекомендуется. Смотрите раздел кодировка символов в MySQL для подробной информации и текущего соединения
<?php
$db = "alldb";
$user = "student";
$pass = "studentpass";
$server = "93.125.42.8";
$link = mysql_connect($server, $user, $pass);
if(!$link) die("cann't connect Mysql");
else echo "Connect to ".$db." successfull<br>";
mysql_select_db($db) or die("cann't connect Mysql<br>".mysql_error());
//........
mysql_set_charset(utf8);
//..............
mysql_close($link);
?>

Выполение запросов

1) Вставка записей в базу данных

$query="INSERT INTO `таблицу` (`указываем поле`,`указываем поле`) VALUES ('любое значение','любое значение')";
$result=mysql_query($query);
if($result==true)
{
    echo "Успешно!";
}
else
{
    echo "Ошибка!<br>".mysql_error();
}


То есть вставка производится функцией INSERT. Если все прошло успешно, то mysql вернет результат true, или иначе — false.

Полей можно указывать хоть сколько, главное чтобы все они существовали в БД. То есть, к примеру существует таблица в которой есть поля «name» , «surname» и «city».

$query="INSERT INTO `users` (`name`,`surname`,`city`) VALUES ('Ruslan','Huzin','Kokshetau')";
$result=mysql_query($query);
if($result==true)
{
    echo "Успешно!";
}
else
{
    echo "Ошибка!<br>".mysql_error();
}

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

$query="DELETE FROM `users` WHERE `name`='Ruslan' ";
$result=mysql_query($query);
if($result==true)
{
    echo "Успешно!";
}
else
{
    echo "Ошибка!<br>".mysql_error();
}


3) Изменение значений в базе данных

Также мы можем вносить изменения в уже существующие записи в таблице. К примеру нам надо заменить значение столбца name в строке, где столбец surname имеет значение Huzin.

$query="UPDATE `users` SET `name`='myname' WHERE `surname`='Huzin' ";
$result=mysql_query($query);
if($result==true)
{
    echo "Успешно!";
}
else
{
    echo "Ошибка!<br>".mysql_error();
}


4) Получение значений из базы данных

Теперь самое интересное) Раз мы записали что-то, то ведь должны и получить обратно?)))

К примеру нам нужно достать из таблицы users всю строку где столбец name равен Ruslan.

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

$query="SELECT * FROM WHERE `name`='Ruslan' ";
$result=mysql_query($query);
if($result==true)
{
    echo "Успешно!";
}
else
{
    echo "Ошибка!<br>".mysql_error();
}
$data=mysql_fetch_array($result);
 
/*
Теперь в переменной
хранятся данные из таблицы
*/

Тут нам потребовалась еще одна функция, для записи выбранных данных в переменную (массив) на php.

Для того что обратиться к выбранной строке, мы пишем так:

$data['имя столбца']

то есть, чтобы достать фамилию из выбранной строки (где имя было Ruslan), мы на вывод должны написать:

echo $data['surname'];

А при выборке из таблицы, писали SELECT *, эта звездочка означает что нужно выбрать все столбцы из строки.

Если нам надо, к примеру, выбрать только surname, пишем SELECT `surname`.

А для выборки сразу нескольких строк из таблицы, потребуется еще и цикл для их вывода. Это в том случае, если к примеру, строк со столбцом Ruslan будет несколько.

$query="SELECT * FROM WHERE `name`='Ruslan' ";
$result=mysql_query($query);
 
while($data=mysql_fetch_array($result))
{
    echo $data['name']."<br>".$data['surname']."<hr>";
}

Теперь на экран выведутся все строки у которых столбец name равен значению Ruslan.

Вывод значений на экран

  • Выполняем запрос
  • Помещаем результат в переменную !!! (учитывайте что результатом запроса должна быть разумная таблица не Nuvola apps error.png10ГБ к примеру )
  • Достаем построчно значения из переменной с помощью курсора mysql_fetch_array($result)
  • Выводим нужные поля из строки
  • Можно разделять поля используя html теги форматрирования
  • 200px-Yes check.png ОБЯЗАТЕЛЬНО после использования очищаем переменную в которой хранился результат выполения запроса mysql_free_result($result);
<?php
$db = "alldb";
$user = "student";
$pass = "studentpass";
$server = "93.125.42.8";
$link = mysql_connect($server, $user, $pass);
if(!$link) die("cann't connect Mysql");
else echo "Connect to ".$db." successfull<br>";
mysql_select_db($db) or die("cann't connect Mysql<br>".mysql_error());
 
mysql_set_charset(utf8);
 
$query="select * from vkdb where sex = '2' limit 10;";
$result=mysql_query($query) or die(' Failed! ' . mysql_error()); 
 
/* 
while($data=mysql_fetch_array($result))
{
    echo $data['fname']."<br>".$data['sex']."<hr>";
	echo "1111";
}*/
// Выводим результаты в html
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";
 
// Освобождаем память от результата
mysql_free_result($result);
// Закрываем соединение
mysql_close($link);
?>

Классы построения графиков

Очень часто при создании каких-нибудь сервисов приходится рисовать различные графики. Например, если Вы делаете рекламную сеть, то можно построить зависимости количества переходов по рекламным материалам по дням. Если это какой-нибудь Интернет-магазин, то можно строить графики доходов магазина. Как рисовать графики в PHP, я разберу ниже.

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

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

Библиотека называется pChart: ознакомиться с документацией и скачать pChart.

Предлагаю Вашему вниманию пример:
<?php
 /* CAT:Pie charts */ 
 
 /* pChart library inclusions */ 
 include("./pChart/class/pData.class.php"); 
 include("./pChart/class/pDraw.class.php"); 
 include("./pChart/class/pPie.class.php"); 
 include("./pChart/class/pImage.class.php"); 
 
 /* Create and populate the pData object */ 
 $MyData = new pData();    
 $MyData->addPoints(array(40,30,20),"ScoreA");   
 $MyData->setSerieDescription("ScoreA","Application A"); 
 
 /* Define the absissa serie */ 
 $MyData->addPoints(array("A","B","C"),"Labels"); 
 $MyData->setAbscissa("Labels"); 
 
 /* Create the pChart object */ 
 $myPicture = new pImage(700,230,$MyData,TRUE); 
 
 /* Draw a solid background */ 
 $Settings = array("R"=>173, "G"=>152, "B"=>217, "Dash"=>1, "DashR"=>193, "DashG"=>172, "DashB"=>237); 
 $myPicture->drawFilledRectangle(0,0,700,230,$Settings); 
 
 /* Draw a gradient overlay */ 
 $Settings = array("StartR"=>209, "StartG"=>150, "StartB"=>231, "EndR"=>111, "EndG"=>3, "EndB"=>138, "Alpha"=>50); 
 $myPicture->drawGradientArea(0,0,700,230,DIRECTION_VERTICAL,$Settings); 
 $myPicture->drawGradientArea(0,0,700,20,DIRECTION_VERTICAL,array("StartR"=>0,"StartG"=>0,"StartB"=>0,"EndR"=>50,"EndG"=>50,"EndB"=>50,"Alpha"=>100)); 
 
 /* Add a border to the picture */ 
 $myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0)); 
 
 /* Write the picture title */  
 $myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/Silkscreen.ttf","FontSize"=>6)); 
 $myPicture->drawText(10,13,"pPie - Draw 3D pie charts",array("R"=>255,"G"=>255,"B"=>255)); 
 
 /* Set the default font properties */  
 $myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/Forgotte.ttf","FontSize"=>10,"R"=>80,"G"=>80,"B"=>80)); 
 
 /* Create the pPie object */  
 $PieChart = new pPie($myPicture,$MyData); 
 
 /* Define the slice color */ 
 $PieChart->setSliceColor(0,array("R"=>143,"G"=>197,"B"=>0)); 
 $PieChart->setSliceColor(1,array("R"=>97,"G"=>77,"B"=>63)); 
 $PieChart->setSliceColor(2,array("R"=>97,"G"=>113,"B"=>63)); 
 
 /* Draw a simple pie chart */  
 $PieChart->draw3DPie(120,125,array("SecondPass"=>FALSE)); 
 
 /* Draw an AA pie chart */  
 $PieChart->draw3DPie(340,125,array("DrawLabels"=>TRUE,"Border"=>TRUE)); 
 
 /* Enable shadow computing */  
 $myPicture->setShadow(TRUE,array("X"=>3,"Y"=>3,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); 
 
 /* Draw a splitted pie chart */  
 $PieChart->draw3DPie(560,125,array("WriteValues"=>TRUE,"DataGapAngle"=>10,"DataGapRadius"=>6,"Border"=>TRUE)); 
 
 /* Write the legend */ 
 $myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/pf_arma_five.ttf","FontSize"=>6)); 
 $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>20)); 
 $myPicture->drawText(120,200,"Single AA pass",array("DrawBox"=>TRUE,"BoxRounded"=>TRUE,"R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_TOPMIDDLE)); 
 $myPicture->drawText(440,200,"Extended AA pass / Splitted",array("DrawBox"=>TRUE,"BoxRounded"=>TRUE,"R"=>0,"G"=>0,"B"=>0,"Align"=>TEXT_ALIGN_TOPMIDDLE)); 
 
 /* Write the legend box */  
 $myPicture->setFontProperties(array("FontName"=>"./pChart/fonts/Silkscreen.ttf","FontSize"=>6,"R"=>255,"G"=>255,"B"=>255)); 
 $PieChart->drawPieLegend(600,8,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); 
 
 $myPicture->autoOutput("l4.png");
//ob_flush();
?>

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

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

Возможные ошибки и предупреждения сервера

  • Cannot modify header information
  • Ошибка «Невозможно изменить информацию заголовка» означает, что вы правили файлы (скорее всего, wp-config.php) вручную. И правили некорректно. Необходимо сохранять файлы в кодировке UTF-8 без метки BOM (byte order mark).
Имя файла, приводящего к ошибке, и номер строки указаны в "output started at". Например:
Warning: Cannot modify header information - headers already sent by (output started at /home/user/site.ru/public_html/wp-config.php:1) in /home/user/site.ru/public_html/wp-includes/pluggable.php on line 934
  • Означает, что проблему вызывает 1-я строка файла wp-config.php.
  • Убедитесь, что перед первой строкой <?php и после последней ?> нет пустых строк.
  • Избегайте править файлы в Блокноте. Используйте «программистские» редакторы вроде PSpad, Notepad++ и им подобные, в которых метка BOM отключается. В Notepad++ для этого нужно выбрать в меню «Кодировки» пункт «Преобразовать в UTF-8 без BOM».

PHP классы