logo
Разработка Web-приложения "Магазин книг"

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>