خب اکنون وقت آن رسیده که با یک برنامه عملی چیزهایی را که یاد گرفتیم به کار ببندیم تا مطالب بیشتر جا بیفتد.ما در اینجا یک برنامه خواهیم نوشت که مشخصات یک کاربر را گرفته و او را ثبت نام می کند و …
خب در مرحله اول من باید جدول خود را طراحی کنم.جدول من باید حاوی نام, نام خانوادگی,email, شغل و یک فیلد دیگر باشد که مشخص کند آیا کاربر مایل است اخبار جدید سایت برای او ارسال شود یا نه.اما آیا این ها کافی است؟من همیشه یک فیلد به نام ID به جدول خود اضافه می کنم.این فیلد که یک فیلد عددی است را معمولا به عنوان کلید اصلی جدول تعریف می کنم.در ادامه فواید این فیلد اضافه را خواهید دید.
خب من قبل از هر چیزی باید به پایگاه داده ام وصل شوم پس می نویسم:
[PHP]

<?php
$conn=mysql_connect(“localhost\”,\”root\”, \”pass\”) or
die(\”Could not connect;\”.mysql_error());
?>
[/PHP]

اگر در این مرحله مشکلی پیش بیاید بوسیله تابع die() از اجرای باقی برنامه جلوگیری کرده و پیغام مقتضی را روی صفحه نمایش نشان می دهم نقش تابع mysql_error() این است که پیغام خطای mysql را روی صفحه نمایش دهد و من بوسیله عملگر . از این تایع برای کامل کردن پیغام خطای اتصال استفاده کرده ام.
اکنون من یک بانک اطلا عاتی می سازم تا درون آن جدول یا جداول مورد نیازم را ایجاد کنم.
[PHP]


<?php
$conn = mysql_pconnect(“localhost\”, \”root\”, \”pass\”)
or die(\”Could not connect: \” . mysql_error());
if (mysql_create_db(\”my_db\”)) {
print (\”Database created successfully\n\”);
} else {
printf (\”Error creating database: %s\n\”, mysql_error());
}
?>


[/PHP]
*توجه کنید میزبان شما معمولا نرم افزاری مثل phpmyadmin را در اختیار شما میگذارد تا مدیریت خود را روی mysql اعمال کنید.
*فراموش نکنید من فقط یک بار از mysql_create_db() استفاده می کنم تا یک بانک اطلاعاتی بسازم و بعد از آن چون کارهایم را روی آن انجام می دهم دیگر احتیاجی به استفاده از این تابع نیست!
اکنون من بانک اطلاعاتی را که ساختم به عنوان بانک اطلاعاتی جاری مشخص می کنم تا باقی اعملا روی آن انجام شود.

[PHP]

<?php
$conn = mysql_pconnect(“localhost\”, \”root\”, \”pass\”)
or die(\”Could not connect: \” . mysql_error());
$db=mysql_select_db(\”my_db\”) or die(\”Could not select database:\”.mysql_error());
?>
[/PHP]


خب برنامه من اکنون آماده است تا فرامینی به زبان sql را بگیرد و برای پردازش به mysql بدهد.برای
ارسال فرامین به mysql برای پردازش از mysql_query() استفاده می شود به مثال توجه کنید.


[PHP]

<?php
$conn = mysql_pconnect(“localhost\”, \”root\”, \”triadpass\”)
or die(\”Could not connect: \” . mysql_error());
$db=mysql_select_db(\”my_db\”) or die(\”Could not select database:\”.mysql_error());
$query=’CREATE TABLE `users` ( `id` INT NOT NULL AUTO_INCREMENT ,’
. ‘ `name` VARCHAR( 15 ) NOT NULL ,’
. ‘ `family` VARCHAR( 20 ) NOT NULL ,’
. ‘ `email` VARCHAR( 20 ) NOT NULL ,’
. ‘ `job` VARCHAR( 20 ) ,’
. ‘ `newspost` TINYINT NOT NULL ,’
. ‘ PRIMARY KEY ( `id` ) );’
. ‘ ‘;
if(mysql_query($query)){
print \”Table successfuly created\”;}
else print \”Error in create table\”;
?>
[/PHP]


من تا به حال یک بانک اطلاعاتی به همراه یک جدول درون آن را ساخته ام.توجه کنید شما ابزار های زیادی را در اینترنت می توانید پیدا کنید که این کار را بسیا ساده تر و مطمئن تر برای شما انجام دهند مثل phpmyadmin که خود بوسیله php نوشته شده و در آدرس phpMyAdmin میتوانید آخرین نسخه آن را دانلود واستفاده کنید.در اکثر مواقع میزبان شما به عنوان یکی از خذماتش یک برنامه مدیریت بانک اطلاعاتی را برای شما تدارک دیده است.
از این به بعد بحث ما کمی کاربردی تر خواهد شد.
در اولین مرحله من می خواهم فرمی داشته باشم که کاربر مشخصات خود را درآن ثبت کند و پس از ارسال در جدول بانک اطلاعاتی من ذخیره شود.ابتدا فرم را طراحی می کنیم:


[PHP]

<html>
<form name=\”form1\” method=\”post\” action=\”<?=$_SERVER['PHP_SELF']?>\”>
<p>Name:
<input type=\”text\” name=\”name\”>
Family:
<input type=\”text\” name=\”family\”>
Email:
<input type=\”text\” name=\”email\”>
Job:
<input type=\”text\” name=\”job\”>
</p>
<p>Do you want to recived the site news via email? <font color=\”#006699\”>Yes</font>
<input type=\”checkbox\” name=\”newspost\” value=\”checkbox\”>
</p>
<p>
<center><input type=\”submit\” name=\”Submit\” value=\”Submit\”></center>
</p>
</form>
</html>




[/PHP]
توجه کنید نام فیلد های شما بسیار مهم است زیرا این نام به عنوان متغییر به برنامه پردازش فرم ارسال می شود.اگر به خط دوم توجه کید به این عبارت بر خواهید خورد
این عبارت از یک ارایه به نام $_SERVER[] استفاده می کند.این آرایه شامل اطلاعاتی از قبیل هدرهاومسیرهاو….است که می توانید در مرجع کامل php موجود در php.net با عنوان
Predefined Variables این آرایه وبسیاری دیگر را پیدا کنید.به هر حال من از عنصر PHP_SELF در اینجا استفاده کردم که وظیفه آن باز گرداندن مسیرکد جاری است.
اکنون به کد کامل این فایل توجه کنید:

[PHP]

<?php
$name=$_POST['name'];
$family=$_POST['family'];
$email=$_POST['email'];
$job=$_POST['job'];
$newspost=$_POST['newspost'];
if(!empty($newspost)){
$newspost=1;
}
if(isset($name) && empty($name)==false && isset($family) && empty($family)==false&&
isset($email) && empty($email)==false && isset($job) && empty($job)==false){
$conn = mysql_pconnect(“localhost\”, \”root\”, \”triadpass\”)
or die(\”Could not connect: \” . mysql_error());
$db=mysql_select_db(\”my_db\”) or die(\”Could not select database:\”.mysql_error());
$query=\”INSERT INTO users VALUES(”,’$name’,'$family’,'$email’,'$jo b’,'$newspost’)\”;
$result=mysql_query($query) or die(\”Could not do query!\”);
}
else
print \”Complete <b>ALL</b>for adding your self\”;
?>
<html>
<form name=\”form1\” method=\”post\” action=\”<?=$_SERVER['PHP_SELF']?>\”>
<p>Name:
<input type=\”text\” name=\”name\”>
Family:
<input type=\”text\” name=\”family\”>
Email:
<input type=\”text\” name=\”email\”>
Job:
<input type=\”text\” name=\”job\”>
</p>
<p>Do you want to recived the site news via email? <font color=\”#006699\”>Yes</font>
<input type=\”checkbox\” name=\”newspost\” value=\”checkbox\”>
</p>
<p>
<center><input type=\”submit\” name=\”Submit\” value=\”Submit\”></center>
</p>
</form>
</html>
[/PHP]






توجه کنید که من قبل از هر چیزی از $_POST[]برای قرار دادم متغییر های ارسال شده توسط فرم در متغییر های قابل استفاده در php است
(در حقیقت امذ متغییر های ارسال شده توسط فرم را درون یک آرایه می گذارد تا php از آن استفاده کند)در نسخه های قدیمی این امر اجباری نبود اما در نسخه های جدید این امر اجباری شده که بیشترین دلیل آن به خاطر مسائل امنیتی است.
*از نسخه۴٫۲٫۰ این امر اجباری شده است که به جای register_globald از آرایه های $HTTP_*_VARS[] استفاده شود.با این حال شما با دست کاری در فایل php.ini می توانید این موضوع را تغییر دهید که این کار بدلیل مسائل انیتی اکیدا توصیه نمی شود.مقاله ای در این زمینه را در آدرس /studyinscarlet.txtwww.securereality.com.au
مشاهده کنید.
اما در اینجا مسئله ای که پیش می آید این است که نوشتن $HTTP_POST_VARS[]کمی سخت است بنابراین برای این آرایه ها اسامی مستعاری در نظر گرفته شد مثل$_POST[] برای$HTTP_POST_VARS[] یا…
خب من در ادامه بوسیله توابع empty() و isset() از پر بودن و موجود بودن متغییرهایم اطمینان حاصل کرده ام.اما اگر توجه کرده باشید من به دو روش از تابع empty() استفاده کرده ام.


کد:
 
۱-empty($varname) == false
2-!empty($varname)
هر دو این روش ها درست است و من فقط برای یاد دادن به شما از هر دوی آن ها استفاده کرده ام.
تابع empty() یک تابع Boolean است یعنی مقدار بازگشتی آن یا true است یا false
من در روش اول گفته ام مقدار بازگشتی تابع empty() برابر false باشد که به معنای خالی بودن فیلد است
روش دوم هم همین است تنها تفاوت آن این است که من از عملگر نفی (!) استفاده کرده ام.
تابع isset() هم چک می کند که آیا متغیری به این نام تعریف شده است یا نه.
پس از اینکه من از پر بودن فیلد ها و وجود متغییر ها اطمینان حاصل کردم چک می کنم که آیا کاربر می خواهم اخبار سایت برای او ارسال شود یا نه.من برای نه مقدار ۰ و برای بله مقدار ۱ را در نظر گرفته ام که در ادامه با نحوی استفاده از آن ها آشنا خواهیم شد.
حالا که من از مرحله تست کردن متغییر ها بدون خطا گذشته ام وارد مرحله کار با بانک اطلا عاتی میشوم .
من یک اتصال برقرار کرده ام.بانک اطلا عاتی خود را انتخاب کرده ام و دستورات sql را که می خواهم اجرا شود در متغییری به نام $queryریخته ام.سپس بوسیله تابع mysql_query() آن ها را به mysql داده ام تا اجرا کند.
شما اکنون می توانید از یک فرم برای ذخیره اطلاعات استفاده کنید.من توابع مزتبط با این درس را برای شما مینویسم.اما بدون تمرین و به مشکل برخورد کردن چیزی یاد نخواهید گرفت.در صورتی که سوال یا مشکلی داشتید بوسیله houtanal at NOSPAM yahoo dot com آن را مطرح کنید.
در درس آینده بازیابی اطلاعات از چدرل و نمایش آنها به همراه جستجو در رکورد ها را به شما یاد خواهم داد.
تابع mysql_create_db()
این تابع یک بانک اطلاعاتی در پایگاه داده شما ایجاد می کند
[PHP]



mysql_create_db()
Create a MySQL database (PHP 3, PHP 4 )
bool mysql_create_db ( string database_name [, resource link_identifier ] )
Example:
<?php
$link = mysql_pconnect(“localhost\”, \”mysql_user\”, \”mysql_password\”)
or die(\”Could not connect: \” . mysql_error());
if (mysql_create_db(\”my_db\”)) {
print (\”Database created successfully\n\”);
} else {
printf (\”Error creating database: %s\n\”, mysql_error());
}
?>

[/PHP]


تابع isset()
این تابع از تعریف شدن و وجود متغییر اطمینان حاصل می کند.


[PHP]

isset()
Determine whether a variable is set (PHP 3, PHP 4 )
bool isset ( mixed var [, mixed var [, ...]] )
example:
<?php
$var = ”;
// This will evaluate to &true; so the text will be printed.
if (isset($var)) {
print “This var is set set so I will print.\”;
}
// In the next examples we’ll use var_dump to output
// the return value of isset().
$a = \”test\”;
$b = \”anothertest\”;
var_dump( isset($a) ); // TRUE
var_dump( isset ($a, $b) ); // TRUE
unset ($a);
var_dump( isset ($a) ); // FALSE
var_dump( isset ($a, $b) ); // FALSE
$foo = NULL;
var_dump( isset ($foo) ); // FALSE
?>

[/PHP]
تابع empty()
بررسی می کند آیا مقدار متغیر خالی است یا نه در صورت پر بودن مقدار true و در غیر این صورت false را بر می گرداند
[PHP]


empty()
Determine whether a variable is empty (PHP 3, PHP 4 )
bool empty ( mixed var )
example:
<?php
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo ‘$var is either 0, empty, or not set at all’;
}
// Evaluates as true because $var is set
if (isset($var)) {
echo ‘$var is set even though it is empty’;
}
?>


[/PHP]
توابع مرتبط بیشتر برای مطالعه:
Mysql_drop_db(),mysql_change_user(),mysql_db_name( ),mysql_db_query()
unset(),define(),array_key_exist(),count(),strlen( )