نرم افزار تحویل کتاب در کتابخانه

مقدمه

امروزه گستردگی جوامع ، نیازهاو کثرت وابستگی مردم را به یکدیگر ،شرایط جدیدی را فراهم آورده که گذران امور با روش های سنتی را غیر ممکن می سازد.
بشر روزگارانی را گذرانده که به حداقل جمعیت بر روی کره زمین، زندگی کرده و تنها نیازش خوراک و پوشاک بوده است. گذشت زمان و افزایش نیاز ها و لزوم برقراری ارتباط بیشتر، موجب پیدایش زبان ایما و اشاره و سپس نقاشی و خط گردید.

بسیار زمان گذشت تا بشر نسبت به ثبت و ضبط منظور خودش ، در قالب کلمات نوشتاری اقدام کرد و حساب ها را ثبت نمود.
اکنون ارتباط آموزشی، اداری، تجاری و… هر کدام دنیایی از مفاهیم و اعداد و روابط را در درون خود دارد که بدون ثبت و ضبط دقیق و سازمان یافته آنها و بکارگیری علم و فن آوری، استفاده از آنها غیر ممکن است. آنچه در این پایان نامه ارائه می شود کوششی است برای سریعتر انجام شدن عمل امانت گرفتن کتاب از کتابخانه و همچنین کاستن از رفت و آمد های بیهوده.

پس از تعریف صورت پروژه، انتخاب ابزار و محیط مناسب برای پیاده سازی طرح مورد نظر، در اولویت قرار گرفت که بعد از مطالعات صورت گرفته، تصمیم گرفتیم که از زبان برنامه نویسی تحت وبPHP و زبان پایگاه داده MySql استفاده کنیم.

در فصل های مختلف این پایان نامه، مراحل طراحی و پیاده سازی سیستم کتابخانه الکترونیک شرح داده شده است.
در فصل اول به معرفی نرم افزار های مورد استفاده در این پروژه پرداختیم. در فصل دوم، امکان سنجی سیستم و مراحل دقیق طراحی سیستم بیان شده است. در فصل سوم جداول پایگاه داده و روابط بین آنها و تشریح کد، شرح داده شده است.فصل چهارم پیوست(نمایی از سایت)می باشد.

فصل اول
PHP
My sql

فصل اول- آشنایی با نرم افزار های مورد استفاده

PHP چيست ؟
PHP سال ۱۹۹۴ توسط Rasmus Lerdorf ايجاد شد و مخفف واژگان Personal Home Pages به حساب
مي آيد.
با گسترش قابليت ها و موارد استفاده اين زبان PHP در معناي Hypertext Preprocessor به کار گرفته شد. عبارت پيش پردازشگر (Preprocessor) بدين معني است که PHP اطلاعات را قبل از تبديل به زبان Html پردازش مي کند.

مطابق مطالب سايت وب رسمي PHP که در آدرس http://www.php.net قرار دارد، PHP زبان اسکريپتي سمت سرويس دهندهHtml Embeded , Cross-Platform ,(Server-side) مي باشد.

سمت سرويس دهنده بودن PHP بدين معناست که تمام پردازشهاي اين زبان بر روي سرويس دهنده (Server) انجام مي گيرد. يک سرويس دهنده در حقيقت يک کامپيوتر مخصوص مي باشد که صفحات وب در آنجا نگهداري مي شوند و از آنجا به مرورگر وب کاربران منتقل مي شوند.

منظور از Cross-Platform بودن اين زبان اين است که بروي هر سيستم و با هر سيستم عاملي از قبيل : Unix, Windows NT, Macintosh, Os/2 اجرا ميشوند. توجه کنيد که منظور از سيستم عامل، سيستم عامل هايي مي باشند که بر روي سرويس دهنده نصب مي شوند. PHP نه تنها قابليت اجرا بر روي هر سيستم عاملي را دارا مي باشد بلکه براي منتقل کردن برنامه هاي آن از يک سيستم عامل به سيستم عامل ديگر احتياج بــه تغييرات اندکي خواهيد داشت و حتي در بعضي از موارد بدون احتياج به هيچ تغييري مي توانيد يک برنامه به زبان php را از يک سيستم عامل به سيستم عامل ديگر منتقل کنيد. منظور از Html embeded بودن PHP اين است که دستورات اين زبان در بين کدهاي html قرار مي گيرند. بنابراين برنامه نويسي به زبان PHP کمي پيچيده تر از برنامه نويسي به زبان Html به حساب مي آيد.

PHP بر خلاف زبانهاي برنامه نويسي (Programming Languages) يک زبان اسکريپتي (Scripting Language) مي باشد به عبارت ديگر دستورات PHP بعد از رخداد يک رويداد (Event) اجرا مي شوند. اين رويدادها مي توانند شامل ارسال يک فرم رفتن به يک URL مشخص و يا مواد ديگر باشند متداولترين زبان اسکريپتي زبان Java Script مي باشد که معمولا براي پاسخ به رويدادهاي کاربر در مرورگر وب بــه کار مي رود تفاوت عمده Java Script با PHP در اين است که Java Script يک تکنولوژي سمت سرويس گيرنده (Client-side) مي باشد.
زبان هايي مانند Java Script يا PHP تفسير شونده (Interpreted) ناميده مي شوند. به عبــارت ديگر براي اجرا به يک مفسر مانند مرورگر وب احتياج دارند. اما زبانهاي برنامه نويسي مانند C يا Java بعد از ترجمه به زبان ماشين (Compile) به خودي خود قابل اجرا مي باشند.

جديدترين نسخه PHP نسخه ۴ اين زبان اسکريپتي مي باشد و کليه فايل ها و کدهايي که توي اين وبلاگ ارائه ميشه تحت اين نسخه کار ميکنند. اما يک مشکل هست که اکثر سرويس دهنده ها از نسخه ۳ استفاده ميکنند. تفاوت اين دو نسخه PHP بسيار اندک هست و تغييرات مهم عموما در مسير اصلاح عملکرد اين زبان صورت گرفته شده است.

PHP و مقايسه آن با Perl CGI
امروزه با توجه به اينکه روز به روز بر تعداد ميزبانهايي که PHP رو ساپورت ميکنند افزوده ميشود ، صحبت در مورد PHP و قابليتهاي آن در ميان طراحان وب و برنامه نويسان زياد است.
براي کساني که فقط نامي از PHP شنيده اند و از تواناييها و مزيت هاي PHP آگاهي ندارند در اين توضیحات PHP را به طور مختصر شرح ميدهم و آن را با اسکريپتهاي CGI مقايسه ميکنم.
همان طورکه گفتیم PHP يک زبان طرف خادم (server side ) مي باشد و ما ميتوانيم براي ساخت صفحات ديناميک وب از آن استفاده کنيم. براي مثال مديريت و ساماندهي اطلاعات دريافتي از يک form html با PHP بسيار آسان است.

زبانها
اگر با زبانهاي C , C++ , Perl يا Java کار کرده باشیم ياد گرفتن زبان PHP ميتواند مانند زنگ تفريح باشد! در واقع خيلي سريع ميتوانيد اسکريپت نويسي را با PHP شروع کنيم.
متغيرها در PHP مانند perl هستند (با پيشوند $ ) و انواع مختلف داده ها را ميتوانند در خود ذخيره کنند. براي مثال $whatever ميتواند انواع داده ها شامل رشته اي ، عددي و غيره را در خود نگه دارد.
اگر مقدار $whatever يک عدد باشد شما ميتوانيد مقدار آن را اينگونه افزايش دهيد:
$whatever ++;
يا
$whatever =+1;
يا
$whatever=$whatever+1;
که دقيقا همان روشي است که در C ، C++ ، Perl يا Java به کار ميبرديد.

تسهيلات توکار (Built-in facilities )
بر خلاف Perl که يک زبان همه منظوره است و شما ميتوانيد تقريبا هر برنامه اي را با آن بنويسيد ، PHP از ابتدا با هدف اسکريپت نويسي براي صفحات وب درست شده ، از اينرو اسکريپت نويسي براي صفحات وب در PHP بسيار آسانتر از Perl مي باشدبراي مثال ميخواهيم از يک فرم در يک صفحه وب ايميلي را به آدرس خودمان ارسال کنيم. به کمک Perl احتمالا کدي شبيه زير را مينويسيم :

open ( MAIL,”|/usr/sbin/sendmail -t”);
print MAIL “To: myself\@mydomain.com\n” ;
print MAIL “From: visitor\@hisdomain.com\n” ;
print MAIL “Subject: Comments from Web Form\n\n” ;
print MAIL $mainmessage ;
close ( MAIL ) ;

 

اما همين برنامه در PHP به شکل زير نوشته مي شود :
mail ( “myself@mydomain.com”, “Comments from Web Form”,
$mainmessage, “From: visitor@hisdomain.com” );

اين سادگي و رواني براي بقيه کارها هم صادق است ، مانند فرستادن يا بازيابي يک پرونده با FTP يا HTTP.همانطور که گفته شد اين سادگي از آنجا ناشي ميشود که PHP فقط براي برنامه نويسي براي صفحات وب طراحي شده است.
تسهيلات ديگر آن در اداره کردن input هاي يک form مي باشد ، براي مثال يک فرم مانند زير را در نظر بگيريد:
<input
type=text name=”dateofbirth”>
شما خيلي راحت و سريع مي توانيد به محتويات اين فرم در متغير $dateofbirth دسترسي داشته باشيد. نيازي به تجزيه و تحليل input هاي فرم نيست.
تمام فيلد ها در يک فرم به طور اتوماتيک به متغيرهايي تبديل ميشوند که شما خيلي راحت ميتوانيد به آنها دسترسي داشته باشيد.
دسترسي به پايگاه داده ها هم به همين شکل آسان و راحت است. کار با پايگاه هاي داده مانند MySQL, MSQL, Dbase, Oracle, InterBase, از قابليتهاي ذاتي (Built-in) PHP است . PHP حتي براي رمزنگاري MIME هم تابعي در نظر گرفته است. قابليتها و تسهيلات PHP بسيار زياد است .

ساخت صفحات وب
يک صفحه PHP ميتواند شبيه کد زير باشد :

<html>

<head><title>My First PHP Script</title></head>

<body>

<h1>My First PHP Script</h1>
<p>

Welcome, Internet user from IP address

<?echo $REMOTE_ADDR?>. Hope you like my first

PHP page.

</body>

</html>

توجه کنيد که اين دقيقا شبيه source صفحات وب مي باشد مگر در موارد که دستورات PHP را شامل مي شوند. اين کد آدرس IP بيننده صفحه را مينويسد ، براي همين از دستور echo استفاده کرده ايم . متغير محيطي وب سرور (environment variable) REMOTE_ADDR به صورت اتوماتيک با متغيري به همين نام در PHP شناخته ميشود (مانند ديگر متغيرهاي محيطي وب سرور). از اينرو نوشتن چنين
اسکريپتهايي بسيار آسان و لذت بخش خواهد بود!

 

اشکال زدايي PHP در مقايسه با Perl CGI
اگر شما اسکريپتهاي نوشته شده را به صورت آنلاين آزمايش و اشکال زدايي ميکنيد PHP واقعا در اين زمينه مي درخشد!
هنگامي که اشکالي در يک اسکريپت Perl پيدا شود شما يک پيغام رمزگونه و نامفهوم (چيزي شبيه “۵۰۰ Internal Server Error”) دريافت ميکنيد.اما وقتي که اسکريپت هاي PHP خود را به صورت آنلاين آزمايش ميکنيد ، هنگام مواجه شدن با اشکال پيغام خطا را با اشاره دقيق به شماره خط داراي اشکال ميدهد و اين براي اشکال زدايي خيلي کار ما را راحت ميکند ، هر چند پيغام خطا گاهي اوقات کلي و نامفهوم است مانند “parse error”.

ولي در Perl پيغام خطاي “Internal Server Error” مي تواند از هر چيزي ناشي شود ، از اشتباه در syntax گرفته تا جا انداختن يک حرف يا upload کردن فايل در غير text mode .اما اشکال زدايي به صورت آفلاين کاملا برعکس مي باشد.بيشتر برنامه نويسان اعتقاد دارند که مفسر Perl هنگام مواجه شدن با خطا پيغام بهتر و مفيد تري ميدهد تا مفسر PHP که مثلا براي بسياري از خطاها پيغام کلي parse error را ميدهد که اين امر هم با توجه به انتشار نسخه هاي جديدتر PHP ميتواند برطرف شود.
PHP يک زبان برنامه نويسی با کد باز (Open-Source) است که اگرچه در ابتدا صرفا جهت برنامه نويسی تحت وب توليد شد، امروزه کارآييهای فراوانی پيدا کرده است.php طبيعتا برای اجرا نياز به يک برنامه سرويس دهنده وب (Web Server) دارد.

کسانيکه قبلا با PERL کار کرده اند و حالا قصد داشته باشند با PHP کار کنند، احتمالا در ابتدا به مشکلاتی بر خواهند خورد. آنچه به نظر من از خصوصيات خوب PHP بشمار می آيد آن است که با وجود شباهت PHP با PERL، PHP پيچيدگيهای PERL را کمتر دارا می باشد. هرچند که قدرت PERL بر روی متن ها غير قابل انکار است اما فراموش نکنيد که PHP را صرفا برای محيط وب ساخته اند پس به اندازه کافی ( و حتی بيش از حد کافی ) امکانات کار با stringها را به شما ارائه خواهد کرد.

برای شروع کار با PHP چه نياز داريم؟
PHP برای اجرا نياز به يک Web-Server دارد. در دست ترين Web-Server برای ما احتمالا IIS خواهد بود، چرا که با استفاده از سی دی Windows قابل نصب است. در اين توضیحات به شرح نصب IIS (يا وب سرورهای ديگر) نمی پردازیم. برای کسانيکه “Open Source” را پرستش می کنند شايد بهتر باشد از Apache به عنوان Web-Server استفاده کنند. (البته اگر از حق هم نگذريم Apache خيلی از IISبهتر است!)

اگر Web-Server مورد علاقه شما به درستی بر روی دستگاه شما نصب شده است، حالا نياز داريد که PHP را بر روی آن نصب کنيد. برای بدست آوردن کد PHP از آدرس http://www.php.net/downloads.php استفاده کنيد.
طبيعتا برای مشاهده نتيجه اجرای فايلهای PHP نياز به يک مرورگر وب (Web Browser) داريم که مسلما رايجترين آن Internet Explorer است. برای درست کردن هر فايل PHP هم نياز به يک ويرايشگر ساده متنی داريم (مثلا Word pad يا Note pad ) توجه کنيد که از ويرايشگرهای حرفه ای مانند Microsoft Word نمی توانيد استفاده کنيد زيرا اين ويرايشگرها از کاراکترهای پنهانی فراوانی استفاده می کنند که در هنگام ذخيره فايل متنی اين کاراکترها هم ذخيره خواهند شد که باعث عدم اجرای دستورات PHP می شوند.حالا يک کد ساده PHP می نويسيم.
حالا می خواهيم اولين کد PHP را با هم درست کنيم. ويرايشگر متن را باز کنيد (مثلا Word pad) و در آن چنين بنويسيد:
<?php
echo (“Hi! I am the first PHP script you have made!”);
?>
حالا فايلتان را با عنوان ۱st.php و در Web Server Local Folder ذخيره نماييد (اگر از IIS استفاده می کنيد اين فولدر در درايوی که Windows را در آن نصب کرده ايد، با نام Inetpub وجود دارد. در داخل آن فولدر ديگری به نام wwwroot وجود دارد که بايد فايلمان را در آن بريزيم.)

حالا مرورگر وب خود را باز کنيد (مثلا Internet Explorer) و در قسمت آدرس آن ابتدا //:http و سپس نام کامپيوتر خود و يا آدرس IP آن را تايپ نماييد (نام کاميوتر را در Control panel/System/Network Identification و IP را در صورتيکه تعيين کرده باشيد در قسمت Command Prompt و با اجرای دستور ipconfig می توانيد مشاهده کنيد) و پس از يک Backslash (/) نام فايل (۱st.php) را تايپ نموده و Enter را بزنيد. بعنوان مثال نام کامپيوتر من اگر arash است. پس بايد در قسمت آدرس مرورگرم خط زير را بنويسم:
http://arash/1st.php

بايد کد PHP خود را در داخل تگ <?php ?> قرار دهيد. البته می توانيد از روشهای ديگر نيز استفاده کنيد اما متداولترين روش همين است.
دستور ()echo در PHP وظيفه چاپ در خروجی را بر عهده دارد.می توانستيم همين کد را با کمک تگهای HTML و بصورت زير نيز بنويسيم:
<html>
<body>
<?php
echo (“Hi! I am the first PHP script you have made!”);
?>
</body>
</html>
در هر صورت خروجی برنامه به همان صورت که گفتيم خواهد بود. تا يا بصورت يک email خصوصی و يا در قالب يک مقاله پاسخ شما را بدهم.

توضیحات برنامه نویس در حین برنامه نویسی (Comments )
مانند تمام زبانهای برنامه نویسی دیگر، می توانید توضیحات خود را برای آسان کردن رجوع های بعدی در
PHP داشته باشید. به این منظور می توانید از // یا # برای بازداشتن PHP از انجام پردازش بر روی متن روبروی آن استفاده کنید. اگر می خواهید بیش از یک خط را زیر پوشش Comment خود قرار دهید، آن را در بین علامتهای /* */ قرار دهید.

<?php
// This line will not be parsed in PHP
# This line will not be parsed in PHP like the line above
/* Line number1: These 3 lines will not either!
Line number2

Line number3: End of comment */
?>
عملگرهای ریاضی در PHP
عملگرهای ریاضی در PHP طبق جدول زیر می باشند.
مثال نام عملگر
$a + $b جمع +
$a – $b تفریق –
$a * $b ضرب *
$a / $b تقسیم /
$a % $b باقیمانده %
توجه: همانند زبانهایی مانند C در اینجا هم می توانیم از عملگرهای پیشوندی مانند $a+=$b یا $a++ استفاده نماییم.

عملگرهای رشته ای در PHP
یک عملگر رشته ای مهم در PHP وجود دارد و آن نقطه (.) می باشد. این عملگر باعث به هم چسبیدن دو رشته مجزا می گردد.
توجه: از عبارت .= می توانید استفاده نمایید.
متغیرها در PHP
در زبان PHP باید قبل از هر متغیر یک علامت $ قرار دهید. در واقع PHP از روی علامت $ تشخیص می دهد که متغیرهای برنامه شما کدامند.
اگر تاکنون با زبانهای برنامه نویسی مانند C، C++، Pascal و مانند اینها کار کرده باشیم، احتمالا انتظار داریم انواع مختلف متغیرها اعم از Integer، Real، Float و غیره را برایتان معرفی کنم. اما احتمالا خوشحال خواهید شد که بدانید نوع متغیرها برای PHP اهمیت ندارد. کافیست متغیری را نامگذاری کنید و سپس هر مقدار، از هر نوع و به هر اندازه که می خواهید در آن قرار دهید. سوالی که پیش خواهد آمد احتمالا “نحوه عمل PHP با این متغیرهای همه منظوره” است.

قبل از اینکه به مثال برسیم باید به دو نکته اشاره کنم:
۱- متغیرها درPHP نسبت به کوچکی و بزرگی حساسیت دارند (Case Sensitive ). یعنی به عنوان مثال متغیرهای my_var و My_Var و MY_VAR از نظر زبان PHP با هم متفاوت هستند.

۲- متغیرها می توانند نامهایی با حروف کوچک و بزرگ انگلیسی و همینطور Underscore (خط فاصله پایین) را اخذ نمایند. استفاده از اعداد به شرطی که اولین حرف متغیر نباشند نیز مجاز است. (یعنی مثلا $s12 و $S_1 به عنوان نام متغیر مجاز است اما $۱s2 مجاز نمی باشد. بعدها خواهیم دید که بسیاری از متغیرهایی که PHP خود از آنها استفاده می کند دارای Underscore در ابتدایشان می باشد.
حالا به مثال زیر توجه کنید:
<?php
$a=4;
$b=23;

$c=”20hi! “;
$d=”world 26″;
$D=650.25; //It is different from $d
echo($D);//650.25
echo(“<br>”);
echo($d);//world 26

echo(“<br>”);
echo($a+$b); //27
echo(“<br>”);
echo($b+$c);//43
echo(“<br>”);
echo($c+$d);//20

echo(“<br>”);
echo($c.$d);//20hi! world 26
echo(“<br>”);
echo($a.$c.$d);//420hi! world 26
echo(“<br>”);

$c.=$d;
echo($c);//20hi! world 26
echo(“<br>”);
echo($d);//world 26
?>
خروجی برنامه بصورت زیر خواهد بود:

همانطور که از مثال بالا هم متوجه می شوید، در صورتیکه عددی را بصورت عادی و بدون علامت نقل قول (” “) به یک متغیر نسبت می دهیم، PHP می تواند با آن هم بصورت عدد و هم بصورت رشته برخورد نماید. در صورتیکه یک مقدار را در داخل ” ” قرار دهیم، اگر در ابتدای آن یک عدد وجود داشته باشد، PHP می تواند در مقابل عملگرهای ریاضی با آن عددها همچون اعداد عادی برخورد نماید و در مقابل عملگرهای رشته ای به عنوان رشته.پس گفتیم که در PHP انواع داده مهم نيست. اين به اين معنی نیست که PHP اصلا نوع داده ندارد. PHP از نوع داده های زیر استفاده می کند:

Float، Integer، String، double، array، Boolean و …
اما نیازی به استفاده از این نوع متغیرها را در طراحی وب نداریم.
معرفی اپراتورهای منطقی
اپراتورهای منطقی در تمام مکانهایی که با متغیرهای Boolean سروکار دارید می توانند استفاده شوند. بدیهی است که پاسخ نیز یک پاسخ Boolean خواهد بود. لیست کامل اپراتورهای Boolean در زیر آمده است:

Example Name Result
$a and $b And TRUE if both $a and $b are TRUE.
$a or $b Or TRUE if either $a or $b is TRUE.
$a xor $b Xor TRUE if either $a or $b is TRUE, but not both.
! $a Not TRUE if $a is not TRUE.
$a && $b And TRUE if both $a and $b are TRUE.

$a || $b Or TRUE if either $a or $b is TRUE.

چند تابع رشته ای جالب: شاید بد نباشد که چند تابع که عملیات رشته ها (strings) را بر عهده دارند:
الف) string substr ( string string, int start [, int length])
اين تابع بخشی از یک رشته را بر می گرداند. آرگومان اول رشته ای است که عملیات بر روی آن انجام می گردد. آرگومان دوم موقعیت کاراکتری است که عملیات از آن آغاز می گردد. آرگومان سوم تعداد کاراکترهایی است که از شروع باید مورد بررسی قرار گیرد. مثالهای زیر از PHP Manual انتخاب شده اند. به آنها توجه کنید:
<?php
$rest = substr(“abcdef”, 1); // returns “bcdef”
$rest = substr(“abcdef”, 1, 3); // returns “bcd”
$rest = substr(“abcdef”, 0, 4); // returns “abcd”

$rest = substr(“abcdef”, 0, 8); // returns “abcdef”

// Accessing via curly braces is another option
$string = ‘abcdef’;
echo $string{0}; // returns a
echo $string{3}; // returns d
$rest = substr(“abcdef”, -1); // returns “f”
$rest = substr(“abcdef”, -2); // returns “ef”
$rest = substr(“abcdef”, -3, 1); // returns “d”

$rest = substr(“abcdef”, 0, -1); // returns “abcde”
$rest = substr(“abcdef”, 2, -1); // returns “cde”
$rest = substr(“abcdef”, 4, -4); // returns “”
$rest = substr(“abcdef”, -3, -1); // returns “de”
?>
ب) int substr_count ( string haystack, string needle)
تعداد تکرار یک string را در یک string دیگر شمارش می کند. آرگومان اول، رشته مرجع و آرگومان دوم، رشته جستجو شونده است. نتیجه تابع یک عدد است. به مثال زیر توجه کنید:
<?php
echo substr_count(“This is a test”, “is”); // prints out 2
?>
ج) string substr_replace ( string string, string replacement, int start [, int length])
این تابع می تواند یک رشته را جایگزین یک رشته دیگر نماید. آرگومان اول رشته مرجع، آرگومان دوم رشته جایگزین، آرگومان سوم شروع جایگزینی و آرگومان آخر شماره کاراکتر انتهایی است. به مثال زیر توجه کنید:
<?php
$var = ‘ABCDEFGH:/MNRPQR/’;
echo “Original: $var<hr />\n”;
/* These two examples replace all of $var with ‘bob’. */
echo substr_replace($var, ‘bob’, 0) . “<br />\n”;
echo substr_replace($var, ‘bob’, 0, strlen($var)) . “<br />\n”;
/* Insert ‘bob’ right at the beginning of $var. */
echo substr_replace($var, ‘bob’, 0, 0) . “<br />\n”;
/* These next two replace ‘MNRPQR’ in $var with ‘bob’. */
echo substr_replace($var, ‘bob’, 10, -1) . “<br />\n”;
echo substr_replace($var, ‘bob’, -7, -1) . “<br />\n”;
/* Delete ‘MNRPQR’ from $var. */
echo substr_replace($var, ”, 10, -1) . “<br />\n”;
?>
د) int strlen ( string str) طول متغیر را بر می گرداند. به مثال زیر توجه کنید:
<?php
$str = ‘abcdef’;
echo strlen($str); // 6
$str = ‘ ab cd ‘;
echo strlen($str); // 7
?>

دستورات شرطی
در اینجا فقط از شرط if به عنوان یک شرط پر استفاده توضیحاتی می دهم.شرط های دیگری نیز در php وجود دارد که اینجا برای معرفی آنها جای مناسبی نیست.
if(یک شرط)
{
—-
—-
—-
}
شکل کلی شرط به این صورت است . داخل پرانتز یک شرط را می نویسیم و بین { } دستوراتی که اگر شرط داخل پرانتز برقرار بود باید اجرا شوند را قرار میدهیم.
مثلا :
if($user == “ali”)
{
print(“Welcome Ali!”);
}
در صورتی که متغیر user برابر با رشته ali بود دستور print داخل شرط اجرا می شود .
برای بررسی دو چیز با هم از یک سری علامت ها استفاده می کنیم که معنی آنها به صورت زیر است:
== بررسی تساوی دو چیز
> کوچکتر
< بزرگتر
=> کوچکتر یا مساوی
=< بزرگتر یا مساوی
=! مخالف (نامساوی)
شرط ها مباحث زیادی دارند که در قسمت های بعدی به بررسی آنها می پردازیم.

مفاهيم ابتدائي Mysql

مقدمه :‌
قبل از هر چيز لازم به ذكر است كه مطالب ذيل در حد آشنايي بوده و دوستان براي دستيابي به تكنيكهاي بيشتر مي بايست از كتابهاي مرجع و Book online خود SQL Server استفاده نمايند. در مطالب زير كه سلسله وار مباحث SQL Server را مرور خواهيم كرد , سعي شده تا ابتدا مطالب مقدماتي جهت آشنايي آورده شود و سپس به مطالب پيشرفته آن بپردازيم. پس در ابتدا مرور سريعي بر چند دستور SQL كه كاربرد بيشتري دارند خواهيم پرداخت و سپس به my SQL و مطالب آن خواهيم پرداخت . مطالب زير اكثرا از كتاب Microsoft SQL Server 7.0 Database Implementation Training انتخاب گرديده است . اين كتاب به همراه CDآموزش آن به عنوان يك مرجع براي امتحانات مايكروسافت استفاده مي‌شود.
جداول بكار رفته نيز همگي در SQL Server 7.0 در Database Northwind موجود هستند.

دستور Select
اين دستور كه دستوري مستقل نيست و حتما بايد با اجزايي بكار رود جهت ساخت پرس و جو بر روي بانك اطلاعاتي بكار مي‌رود و ركوردهايي كه با شرايط اين دستور همخوان باشد به عنوان نتيجه پرس و جو برمي‌گرداند . چهار كلمه كليدي وجود دارند كه بخشهاي ارزشمند اين دستور را تشكيل مي‌دهند :
۱- select
2- from
3- where
4-orderby

شكل كلي دستور :

Select [*|distinct column1, column2,…]

From table[,table2,…]

Where شرط

Order by نام فيلد يا شماره فيلد

مثال :
Select * from customers
اين دستور تمام ركوردهاي جدول customers را برمي‌گرداند.
حال اگر شرط Country =’ir’فه كنيم ، فقط اطلاعات مشتريان ایران جواب خواهند بود كه به ۷ سطر تقليل مي‌يابد.
select * from customers
where Country =’uk’

حال
select City,Country from customers
order by city

فقط ستونهاي نام شهر (city) و نام كشور (Country) را بر گردانده و بر اساس نام شهر مرتب ميكند. دستور بالا با دستور پايين هردو يك جواب را ميدهند :

select City,Country from customers
order by 1

كه تمام سطرها بازگردانده خواهد شد . در نتيجه پرس و جو تعدادي سطر تكراري وجود دارد مانند شهر London كه اگر از كلمه Distinct در Select استفاده كنيم اين سطرهاي تكراري حذف خواهد شد .

select distinct City,Country from customers

order by 1

استفاده از توابع در Select
1- Count : تعداد سطرهاي بازگردانده شده توسط select را ميشمارد.

Select Count(*) from Customers
where Country =’uk’

در اصل تعداد مشترياني را ميشمارد كه در كشور انگليس هستند. كه عدد ۷ جواب است.
۲- Sum : مجموع يك فيلد عددي را برمي‌گرداند.
Select sum(Quantity) from [Order Details]
where productid = 11

مجموع فيلد Quantity را براي فيلدهايي كه شماره محصول آنها ( Productid) برابر ۱۱ است را محاسبه ميكند
نكته ۱ : در دستور select مي‌توان از اسم مستعار استفاده كرد ، يعني نام جديدي را براي يك ستون در نظر گرفت به عنوان مثال select قبل را به شكل زير بكار برد :

Select sum(Quantity) as Sum_QTY
from [Order Details]
where productid = 11

كه Sum_QTY يك اسم مستعار براي مجموع است. استفاده از كلمه كليديas ‌اختياري است.
نكته ۲ : در دستور select هرگاه اسم فيلدي اسم خاص باشد و يا فاصله بين اسم باشد مثل Order Details كه فاصله بين اسم جدول است حتماُ از علامت براكت [] ميبايست استفاده كرد.
نكته ۳ : استفاده از group by :
هنگامي كه از توابع count ‌ و Sum به همراه يك فيلد ديگر در دستور select استفاده مي‌شود از group by استفاده مي‌كنيم . به عنوان مثال دستور زير جمع مقادير فيلد Quantity را براي هر شماره محصول محاسبه ميكند

Select productid, sum(Quantity) as sum_qty
from [Order Details]
group by productid

كه نتيجه مانند زير خواهد بود :
در صورتيكه دستور ordr by 1 بعد از group by استفاده كنيم نتيجه بر اساس كد محصول مرتب خواهد شد.
نكته ۴ : دستور where مي تواند خود شامل يك دستور select باشد :
select * from Products
where ProductID in
( select distinct ProductID from [order details] where Quantity >70)
order by ProductID

تنها نكته اي كه مي بايست توجه كرد اين است كه نام فيلدي كه در شرط آورده مي شود حتما در دستور select آورده شود, به عبارت ديگر select درون شرط تنها يك ستون را مي بايست برگرداند.
مثال : با فرض اينكه دو جدول Products و order details داراي ستون (فيلد) يكسان ProductID هستند , يك دستور Select بنويسيد كه تمام فيلدهايي از Products را نشان دهد كه فيلد ProductID آن با ProductID جدول order details يكي باشد.؟
حل :
Select pr.*
From Products as pr , [order details] as od
Where pr. ProductID = od. ProductID

قابل به ذكر است كه بيش از ۹۰% از كارهايي كه ما برروي جداول انجام مي دهيم با select و تركيبات آن انجام مي شود. لذا بدست آوردن تبحر در نوشتن select ها مي تواند شما را در تهيه برنامه ها ياري كند.
۳- Min,max : بيشترين و كمترين مقدار فيلد را در بانك اطلاعاتي بدست مي دهد.
Select min (Quantity)
from [Order Details]
4- Top n : تعداد n سطر اول بانك اطلاعاتي را برمي گرداند.

Select top 5 *
from [Order Details]
5 سطر اول بانك را برمي گرداند.
نكته ۳ : در حالت بالا اگر مقدار سطر ۵ و ۶ يكي باشد فقط سطر ۵ جواب خواهد بود براي گريز از اين حالت از شكل زير در اين دستور استفاده ميكنيم :

Select top n with ties *
From table

۵- Into
Select * from table1 into table2

اطلاعات table1 را به table2 كپي ميكند. البته table2 بايد از قبل وجود نداشته باشد.
اين دستور خود table2 را ميسازد.
دستور select قويترين و كاربردي ترين دستور در sql است كه خود ماهها نيازمند تمرين و آموزش است . براي اطلاعات بيشتر به books online خود Sql Server مراجع كنيد.

دستور Delete
براي حذف اطلاعات از يك بانك اطلاعاتي استفاده ميشود.
شكل كلي دستور :

Delete table1
Where شرط
مثال : فرض كنيد جدول authors موجود باشد و فيلد كليد آن au_id باشد. براي حذف ۱۰ سطر اول اين جدول از دستور زير استفاده مي كنيم :

DELETE authors
FROM (SELECT TOP 10 * FROM authors) AS t1
WHERE authors.au_id = t1.au_id

دستور insert
براي اضافه كردن اطلاعات به يك جدول از اين دستور استفاده ميشود.
Insert into table1 (f1,f2,…)
Values (v1,v2,…)

كه f1,f2 نام فيلدها و v1,v2 مقادير آنها ميباشد.
البته ميتوانيد مقادير را نتيجه يك select قرار داد.
مثال :

Insert into table1
Select top 10
from table2

مقدار ۱۰ سطر اول را از table2 را در table1 درج ميكند. البته بايد تعداد فيلدها يكي باشد. در غير اينصورت از values استفاده كنيد.
Enterprise Manager

ميتوان گفت قلب Sql Server است. در Enterprise Manager شما ميتوانيد يك اتصال به سرور Sql برقرار كنيد . table بسازيد. User تعريف كنيد و…..
علامت فلش سبز نمايانگر فعال بودن سرور است. سرور ميتواند local باشد مانند بالا و يا يك Sqlserver باشد برروي يك سرور . براي ايجاد يك سرور جديد يا به عبارت ديگر وصل شدن client (ويندوز ۹۸) به يك سرور ديگر بر روي يكي Microsoft Sql Server يا SQL Server Group و يا برروي سرور موجود كليك سمت راست كرده و گزينه New Sql Server Registratin را انتخاب كنيد. سپس كليد next را انتخاب كنيد. سپس در منوي بعدي در available Server نام سرور خود را تايپ كنيد . (نام سرور SQL خود را كه برروي ويندوز ۲۰۰۰ خود نصب كرده ايد) و بعد كليد add را فشار دهيد.و گزينه next را انتخاب كنيد.

در پتجره بعد از شما سوال ميكند كه آيا از username ويندوز استفاده كند و يا اينكه از يك username مخصوص خود Sql Server استفاده كنيد. گزينه دوم را انتخاب كرده و سپس Login Name و Password را وارد كنيد. (در حالت پيش فرض sa بعنوان login name و فضاي خالي بجاي Password وارد كنيد.) پس از چند بار فشار كليد next شروع به وصل شدن به Server ميكند. در صورت موفقيت آميز بودن با پيامي اين كار را اطلاع ميدهد.
از ديگر گزينه ها شما بيشترين استفاده را از Databases خواهيد كرد. به عبارت ديگر هر كار و پروژه ما بعنوان يك Database در سرور sql قرار ميگرد. همه جداول و دستورات مربوط به آنها در اين محل نگهداري

مي شود.
با كليك سمت راست برروي Databases و انتخاب New Database… ميتوانيد يك Database جديد براي خودتان بسازيد.
پس از انتخاب نام آن را تاييد كنيد.
هر Database شامل موارد زير است :
۱- Diagram : ارتباط جداول را نشان ميدهد.

۲- Tables : جداول پروژه را نشان ميدهد.
۳- Views : ديدهاي پروژه را نشان ميدهد.
۴- Stored Procedure : كدهاي sql مربوط به عملياتهاي روي جداول را نگهداري ميكند.
۵- Users : كاربران تعريف شده بر روي اين database را نشان ميدهد.
۶- Roles: قوانين دسترسي به جداول و پروسيجرها را نشان ميدهد.

۷- Rules : قوانين مربوط به داده ها را در جداول نشان ميدهد.
گزينه هاي ۷ به بعد كاربرد آنچناني براي كارهاي ابتدايي ندارند
ايجاد يك جدول جديد :
براي ايجاد يك جدول جديد بروي tables كليك سمت راست كرده و گزينه New Table را انتخاب كنيد. سپس در كادر بعدي نام جدول را انتخاب كنيد. حال فيلدها و نوع آنها را مشخص كنيد .
بعد از مشخص كردن نوع و احتمالاً طول فيلد , بايد مشخص كنيد كه آيا فيلد هميشه مي بايست مقدار داشته باشد و يا مي تواند null باشد. Allow Nulls اگر تيك داشته باشد يعني اينكه اين فيلد مي تواند هيچ مقداري به خود اختصاص ندهد.