مقدمه:
هدف ازطراحی وب سایت اطلاع رسانی سینما این بود که این وب سایت بتواند خواسته های کاربران را تا حدی برآورده کند وهمچنین با تکنولوژی های امروزه درصدد تحقق اهداف برآید.

ما به کمک پایگاه داده MySQL و تکنولوژی PHP توانستیم وب سایت خود را راه اندازی کنیم ودراین راستا از برنامه هایی مانند: Macromedia Dream weaver MX 2004 برای طراحی سایت وRational Rose Enterprise Edition برای تجزیه وتحلیل سیستم استفاده کردیم.
دراین Documents تلاش شده تا تمامی نکات راجع به وب سایت ذکر شود و همچنین توضیحات کامل درمورد برنامه نویسی،تجزیه تمامی قسمت های سیستم به کمک UML و تصاویری از اجرای هر قسمت از وب سایت را شامل می شود.

تحلیل نیازهای مقدماتی:
امکاناتی که این وب سایت برای کاربران فراهم می کند عبارتند از:
۱٫ اطلاع رسانی در مورد سینما ها:
دراین قسمت توضیحاتی درمورد سینماهای شهرتهران بیان شده که شامل موارد ذیل می باشد:
• نام سینما
• تعداد صندلی
• آدرس
• تلفن
۲٫ فیلم های در حال اکران :
دراین صفحه اطلاعات ذیل به چشم می خورد:
• نام سینما
• نام فیلم
• تاریخ شروع
• تاریخ پایان
• سانس
۳٫ جستجو:
جستجو طبق انتخاب کاربرکه ممکن است براساس : سینما ،فیلم ،بازیگر،نویسنده وکارگردان باشد ،صورت می گیرد.
۴٫ رزرو بلیت:
درصفحه رزرو ابتدا کاربرباید فیلم مورد نظرخود را جستجو کند وازاطلاعات بدست آمده ازجستجـو برای رزرو استفـاده کند، درصورت ورود کامـل موارد خواستـه شده اطلاعات وی درسیستم ذخیره میگردد.
Use case Diagram:

Sinema Class Diagram:

و…
Film Class Diagram:

شمای بانک اطلاعاتی:
پایگاه داده شامل ۴ جدول است که به شرح زیراست :
Tb_film : دارای فیلدهای زیرمی باشد:
Num_film : شماره فیلم
Name_film : نام فیلم
Time_film : مدت زمان فیلم
Name_writer : نام نویسنده
Name_director : نام کارگردان
Actor1 : بازیگرنقش اول
Actor2 : بازیگرنقش دوم
Actor3: بازیگر نقش سوم
شماره فیلم ومدت زمان فیلم فیلد کلیدی هستند.
Tb_sinema: دارای فیلد های زیر می باشد:
Num_sinema : شماره سینما
Name_sinema : نام سینما
: Tel تـلـفـن
Address : آدرس
Number_chair : تعداد صندلی
شماره فیلم وتعداد صندلی فیلد کلیدی هستند.
Tb_reserve : دارای فیلد های زیر می باشد:
Name_fam_customer : نام و نام خانوادگی مشتری
Num_sinema : شماره سینما
Num_film : شماره فیلم
Sans : سانس
Date_reserve : تاریخ رزرو
Number_ticket : تعداد بلیط
تمامی فیلد ها، فیلد کلیدی هستند.
Tb_sinema_film : دارای فیلد های زیر می باشد:
Num_sinema : شماره سینما
Num_film : شماره فیلم
Date_start : تاریخ شروع
Date_end : تاریخ پایان
Sans : سانس
Ekran : آیا فیلم اکران می شود یا خیر؟
تمامی فیلد ها، فیلد کلیدی هستند.

Source Code های برنامه:

۱٫ اتصال پایگاه دادهMySQL به برنامه:

<? Php
$host = “local host”;
$username = “root”;
$password = “”;
$database = “sinema”;
mysql_connect ($host, $username, $password) or die (“Error: “. mysql_error ());
mysql_select_db ($database);
?>
Host: نام مکانی که پایگاه داده ازآنجا شروع به کار می کند.
Username: نام کاربر
Password: کلمه عبور که درPhp تهی است.
Database: نام پایگاه داده ای که درMySQL ساخته ایم ومی خواهیم آن را بهPhp ربط دهیم.
Mysql_connect: تابع برای اتصال به Wamp
Die: برای چاپ پیغام خطا
: . Mysql_error () خطی که خطا دارد را برمی گرداند، نقطه (.) باعث می شود که رشته ها به هم وصل شود.
Mysql_select_db: برای اتصال به پایگاه داده ای که نامش ذکر می شود.

۲٫ جستجو در داخل سایت : Google

<FORM method=GET action=”http://www.google.com/search”>
<TR>
<td align=”center”>
<INPUT TYPE=text class=”txt_text” name=src_google size=”15” maxlength=255 >
<INPUT TYPE=hidden name=hl value=”en”><br /><br />
<INPUT type=submit class=”button” name=bang VALUE=”جستجو”>
</td>
</TR>
</FORM>
متد GET: یکی ازروش های ارسال داده های فرم به اسکریپت سرویس دهنده می باشد،این متد هم اتصال به صفحه Google را انجام می دهد و هم صفحه را نشان می دهد.
Class=”txt_text”: یک Style به نام txt_text در ابتدا برنامه تعریف کرده ایم که مربوط به فرمت Font ها است.
Name=src_google: در نوار آدرس به این شکل می شود،ونامی که جستجو می کنیم بعد از این نام می آید:
http://www.google.com/search?src_google=n&hl=en&btnG

۳٫ نمایش اطلاعات سینما :

<? Php
Require once (“connect/connect.php”);
$STR=”SELECT * FROM `tb_sinema`;”
$result=mysql_query ($STR);
If (isset ($result) or mysql_num_rows ($result)>0) {
While ($row = mysql_fetch_object ($result)) {
$name_sinama =$row->name_sinema;
$tel=$row->tel;
$address=$row->address;
$number_chair=$row->number_chair;
Print “<tr>”;
Print “<td class=contain>”. $number_chair.”</td>”;
Print “<td class=contain>”. $address.”</td>”;
Print “<td class=contain>”. $tel.”</td>”;
Print “<td class=contain>”. $name_sinama.”</td>”;
Print “</tr>”;
}
}
?>
Require once: برای صدا زدن فایل است، که اگر فایل را پیدا نکرد خارج می شود.
$STR=”SELECT * FROM `tb_sinema`;”: * باعث می شود کل جدول sinema انتخاب شود.
: Mysql_query دستورات SQL را اجرا می کند.
Isset:
Mysql_num_rows: چه تعداد سطر در متغیر قرار دارد.
: Mysql_fetch_object یک سطر از داده ها را از جدول پایگاه داده می خواند چون داده ها در جدول به صورت آرایه ای است.

۴٫ نمایش فیلم های در حال اکران :

<? Php
Require once (“connect/connect.php”);
$STR=”select * from
(`tb_sinema` INNER JOIN `tb_sinema_film`) INNER JOIN `tb_film`
ON (`tb_sinema`. `num_sinema`=`tb_sinema_film`. `num_sinema`)
AND (`tb_sinema_film`. `num_film`=`tb_film`. `num_film`)
WHERE `tb_sinema_film`. `ekran`=’yes’;”;
?<
INNER JOIN: جدول ها را به هم ارتباط می دهد.

۵٫ جستجو:
<select name=”select” size=”1” class=”combo”>
<option value=”سینما”>سینما</option>
<option value=”فیلم” >فیلم</option>
<option value=”نویسنده”>نویسنده</option>
<option value=”کارگردان”>کارگردان</option>
<option value=”بازیگر”>بازیگر</option>
</select>
<Option> و <Select>: list boxها توسط دو دستور<Option> و <Select> ایجاد می شوند،به همین منظور باید دستور<Select> را نوشته وسپس با دستور <option>گزینه های لیست را مشخص می سازیم.

<? Php
require_once (“connect/connect.php”);
$select=$_POST [“select”];
$txt=$_POST [“txt”];
If (isset ($txt)) {
If ($txt! =””){
If (isset ($select)) {
If ($select! =”” ){
If ($select==”فیلم”) {
$STR=”SELECT * FROM `tb_film` WHERE `name_film` LIKE ‘”. $txt.”‘;”;
$result=mysql_query ($STR);
If (isset ($result) and (mysql_num_rows ($result)>0)) {
Print “<tr>”;
Print “<td colspan=2>”;
Print “<table border=1 align=center width=700 bordercolor=#345A9B>”;
Print “<tr>”;
Print “<td align=right class=title width=100>”.”زمان فیلم”.”</Td>”;
Print “<td align=right class=title width=100>”.”بازیگر نقش سوم”.”</Td>”;
Print “<td align=right class=title width=100>”.”بازیگر نقش دوم”.”</Td>”;
Print “<td align=right class=title width=100>”.”بازیگر نقش اول”.”</Td>”;
Print “<td align=right class=title width=100>”.”کارگردان”.”</Td>”;
Print “<td align=right class=title width=100>”.”نویسنده”.”</Td>”;
Print “<td align=right class=title width=100>”.”نام فیلم”.”</Td>”;
Print “</tr>”;
While ($row=mysql_fetch_object ($result)) {
$film=$row->name_film;
$writer=$row->name_writer;
$time=$row->time_film;
$director=$row->name_director;
$actor1=$row->actor1;
$actor2=$row->actor2;
$actor3=$row->actor3;
Print “<tr>”;
Print “<td class=contain >”. $time.”</td>”;
Print “<td class=contain>”. $actor3.”</td>”;
Print “<td class=contain>”. $actor2.”</td>”;
Print “<td class=contain>”. $actor1.”</td>”;
Print “<td class=contain>”. $director.”</td>”;
Print “<td class=contain>”. $writer.”</td>”;
Print “<td class=contain>”. $film.”</td>”;
Print “</tr>”;

}
Print “</table>”;
Print “</td>”;
Print “</tr>”;
}
Else {
?>
<script type=”text/javascript”>
Alert (“!!!چنین فیلمی وجود ندارد”);
</script>
متدpost : یکی دیگرازروش های ارسال داده های فرم به اسکریپت سرویس دهنده
می باشد،این متد اتصال را به صفحه ی موردنظرانجام می دهد ولی نشان نمی دهد.
:Alertکادری را برای نمایش پیغام ایجاد می کند.

۶٫ رزرو بلیط :
<? Php
$STR=”select `tb_film`. `name_film` from
`tb_film` INNER JOIN `tb_sinema_film`
ON `tb_film`. `num_film`=`tb_sinema_film`. `num_film`
WHERE `tb_sinema_film`. `ekran`=’yes’
ORDER BY `tb_film`. `name_film;”;
$result=mysql_query ($STR);
If (isset ($result) or (mysql_num_rows ($result)>0)) {
$temp=””;
Print “<select name=name_film_reserve class=combo>”;
While ($row = mysql_fetch_object ($result)) {
$namefilm = $row ->name_film;
If ($temp! =$namefilm) {
Print “<option>”. $namefilm.”</option>”;
$temp=$namefilm;
}