2.2 Программирование серверных сценариев
На данном этапе работы была применена «технология PHP и СУБД MySQL». Были созданы следующие файлы:
1. «Index.php»:
<?php
$def_charset = "Content-Type: text/html; charset=utf-8";
header($def_charset);
$link = @mysql_connect("localhost", "root") or die("Невозможно соединиться с сервером");
$db=@mysql_select_db("Вookstore") or die("Нет такой базы данных");
@mysql_query("SET SESSION character_set_results = cp1251;");
@mysql_query("SET SESSION Character_set_client = cp1251;");
@mysql_query("SET SESSION Character_set_results = cp1251;");
@mysql_query("SET SESSION Collation_connection = cp1251_general_ci;");
@mysql_query("SET SESSION Character_set_connection = cp1251;");
$g_query="select `ID`, `name` from `Genre`";
function createXMLElem($dom, $parent, $row, $name)
{
$elem = $dom->createElement($name);
$elem = $parent->appendChild($elem);
foreach ($row as $fieldname => $fieldvalue)
{
$val = iconv(windows-1251, utf-8, $fieldvalue);
$elem->setAttribute($fieldname,$val);
}
return $elem;
}
$xml = new DOMDocument(1.0);
$root = $xml->createElement(Вookstore);
$root = $xml->appendChild($root);
$g=mysql_query($g_query);
while($g_row = mysql_fetch_assoc($g))
{
$g_elem = createXMLElem($xml, $root, $g_row, Genre);
}
echo $xml->save("newfile.xml");
?>
При проверке работоспособности созданного PHP-сценария результат, представленный в файле, имел следующий вид:
<Вookstore>
<Genre ID="Приключения" name="приключения">
</Genre>
<Genre ID="Детектив" name="детектив">
</Genre>
<Genre ID="Роман" name="любовный роман">
</Genre>
<Genre ID="Мемуары" name="биография и мемуары">
</Genre>
</Вookstore>
2. «Browse.php»:
<?php
$def_charset = "Content-Type: text/html; charset=utf-8";
header($def_charset);
$link = @mysql_connect("localhost", "root") or die("Невозможно соединиться с сервером");
$db=@mysql_select_db("Вookstore") or die("Нет такой базы данных");
@mysql_query("SET SESSION character_set_results = cp1251;");
@mysql_query("SET SESSION Character_set_client = cp1251;");
@mysql_query("SET SESSION Character_set_results = cp1251;");
@mysql_query("SET SESSION Collation_connection = cp1251_general_ci;");
@mysql_query("SET SESSION Character_set_connection = cp1251;");
function createXMLElem($dom, $parent, $row, $name)
{
$elem = $dom->createElement($name);
$elem = $parent->appendChild($elem);
foreach ($row as $fieldname => $fieldvalue)
{
$val = iconv(windows-1251, utf-8, $fieldvalue);
$elem->setAttribute($fieldname,$val);
}
return $elem;
}
$g = $_POST[g];
$g_query="SELECT `ID`, `name` FROM `Genre` where `ID`=".$g;
$b_query="SELECT `fio`, `name`, `price`, `genre` FROM `Books`";
$xml = new DOMDocument(1.0);
$root = $xml->createElement(Вookstore);
$root = $xml->appendChild($root);
$g=mysql_query($g_query);
while($g_row = mysql_fetch_assoc($g))
{
$g_elem = createXMLElem($xml, $root, $g_row, Genre);
$g1 = $g_row[ID];
$b=mysql_query($b_query);
while($b_row = mysql_fetch_assoc($b))
{
$g2 = $s_row[genre];
if($g1==$g2)
{
$b_elem = createXMLElem($xml, $g_elem, $b_row, Books);
}
}
}
echo $xml->save("file.xml");
?>
При проверке работоспособности созданного PHP-сценария результат, представленный в файле, имел следующий вид:
<Books>
<Genre ID="Приключения" >
<Books fio="Марк Твен" name="Приключения Гекльберри Финна" price="$5.49" />
<Books fio="Майкл Морпупго" name="Боевой конь" price="$6.10" />
</Genre>
<Genre ID="Детектив" >
<Books fio="Натаниэль Готорн" name="Мраморный фавн" price="$10.95" />
</Genre>
<Genre ID="Роман" >
<Books fio="Сесилия Ахерн" name="Время моей жизни" price="$5.00" />
</Genre>
<Genre ID="Мемуары" >
<Books fio="Шифф Стейси" name="Клеопатра" price="$6.10" />
</Genre>
</Books>