parsgreen.com
article

آشنایی با برنامه نویسی به زبان PHP

php

ایجاد وبسایت های استاتیک با صفحاتی از پیش طراحی شده مدتها است که جای خود را به صفحات داینامیک داده و دیگر کم تر سایتی را می توان یافت که محتوایش خط به خط به شیوه سنتی کدنویسی شده باشد، زبانهایی مثل asp , php و... تحولی نوین در وب ایجاد کرده و رفته رفته گوی سبقت را از دیگران ربودند، اما چرا php را انتخاب کنیم؟ پاسخ به این سوال به عوامل زیادی مربوط می شود چرا که هیچ زبانی کامل نیست ولی با توجه به مزیت ها از جمله رایگانی پی اچ پی، امکانات و قدرتمندی، دسترسی به منابع مختلف، سازگاری با انواع سرورها، استفاده گسترده و... توصیه می کنیم اگر علاقمند به فراگیری علم برنامه نویسی وب هستید پس از آموختن کلیاتی از css, html و javascript حتما دانشتان را با php کامل کنید، درست است که برنامه های مدیریت محتوا (CMS) کار را خیلی راحت کرده اند اما همیشه ایده هایی وجود دارند که در قالب آنها نمی گنجند و یا مشکلاتی پیش می آید که به دلیل مبهم بودن کدنویسی دیگران، ممکن است نتوانید آنها را رفع کنید یا دچار مشکل شوید.

آموزش php


شاید آموختن PHP در نگاه اول کاری پیچیده به نظر برسد اما اصولا برای یادگیری زبان های برنامه نویسی کافیست ایده های ذهنی مان را خط به خط روی کاغذی خیالی بنویسیم و سپس با توجه به شیوه نوشتن (syntax) هر زبانی به دنبال راه حل تبدیل و فهماندن ایده به سیستم شویم، از طرفی هیچ کس نمی تواند مدعی شود که همه چیز را می داند ولی دانستن اصول اولیه و داشتن تجربه تا حد رفع نیاز، چیزی است که با کمی تلاش و دقت می توانیم به آن دست یابیم؛ ما در آموزش هایمان سعی خواهیم کرد که در عین مختصر گویی به حد کافی نیز شما را با دنیای جالب کدنویسی php آشنا کنیم.

اجرای کدهای php در سیستم عامل


از آنجایی که php یک زبان سمت سرور (server side) است برای اجرای آن در سیستم خود نیاز به برنامه هایی تحت عنوان سرور مجازی دارید که امروزه به صورت رایگان در دسترس هستند، برای نمونه یکی از بهترین ها در آدرس زیر قابل دسترس است:
www.wampserver.com
همچنین:
www.appservnetwork.com
و همچنین:
www.apachefriends.org
پس از نصب هر یک برنامه های WampServer، AppServ یا XAMPP اکنون شما قادر به اجرای فایل های php روی سیستم خودتان خواهید بود، البته فایلتان را باید در ریشه سرور مجازی که معمولا پوشه ای با عنوان www است کپی نمائید؛ سپس در مرورگرتان به فرض عبارت http://localhost/example.php را بنویسید تا فایل example.php از فولدر www فراخوانی شود، اگر هم که به یک سرور آنلاین دسترسی دارید کار خیلی راحت تر است و کافی است فایلتان را به سرور منتقل کنید.

چند مثال با php


از آنجایی که فلسفه پیدایش php ایجاد صفحات داینامیک و استفاده از آن در وب بوده، لذا قابلیتهای این زبان در کنار کدهای ساده html قابل دسترسی است و این یکی از نقاط قوت آن محسوب می شود؛ برای شروع و آشنایی بیشتر به کدها و مثال های زیر توجه کنید:
<?php
echo "اولین کد php من!";
?>
توضیح:
- کدهای php بین دو تگ علامت سوال ، php و علامت سوال نوشته می شوند (شیوه استاندارد).
- دستور echo مقادیر را به خروجی ارسال می کند.
حال به کد زیر توجه کنید:
<?php
$text = "اولین کد php من!";
echo $text;
?>
پیش نمایش
توضیح:
- در کد بالا عبارت اولین کد php من! به جای پرینت مستقیم، ابتدا به یک متغیر داده شده و سپس آن متغیر به خروجی داده می شود (علامت $ نشان دهنده تعریف یک متغیر است).
حال به مثال زیر توجه کنید:
<?php
$num1 = 20;
$num2 = 50;
$total = $num1 + $num2;
echo $total;
?>
پیش نمایش
توضیح:
- کد بالا مقدار متغیر total را به خروجی خواهد داد و متغیر total برابر است با حاصل جمع دو متغیر num1 و num2 که اعدادی به دلخواه به آنها داده ایم.
- در آینده در رابطه با نحوه استفاده و تعریف متغیر ها بیشتر خواهیم گفت و مثال های بیشتری مطرح خواهیم کرد.
مثالی دیگر:
<?php
$name = 'webgoo.ir';
if ($name == 'webgoo.ir'){
    $hi = 'سلام وبگو!';
}
else{
    $hi = 'سلام ناشناس!';
}
echo $hi;
?>
پیش نمایش
توضیح:
- if (اگر) و else (در غیر اینصورت) برای ایجاد شرط به کار می روند و علامت == نشان دهنده برابری دو طرف آن است.
تقریبا هر آنچه که از وب بخواهید با php دستیافتنی است؛ در ادامه مطالب آموزشی در این باره بیشتر خواهیم گفت.
sectionدسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
» توابع (Functions) در php
» توابع کار با آرایه در PHP - بخش سوم
» حلقه for و while در php
» عملگرهای (Operators) محاسبه و مقایسه در php
» آشنایی و کار با متغیر ها (Variables) در php
commentنظرات (۱۰۴ یادداشت برای این مطلب ارسال شده است)
نویسنده: بهنام
زمان: ۱۳:۲۴:۵۳ - تاریخ: ۱۳۹۳/۰۲/۲۲
سلام استاد عزیز
شرمنده دیگه چند روزی با درس ها سرم گرمه نتونستم از سایت مفیدتون استفاده کنم واقعا خیلی عزیزی
یه سوال داشتم
میخاوستم بدونم در پی اچ پی تابعی هست که یه پوشه ایجاد کنه یا یه فایل ایجاد کنه من برای ایجاد فایل از تابع copy استفاده می کنم و از یه فایل خالی کپی می گیره انگار که ایجاد کرده ولی تابعی از این ساده تر وجود نداره که معرفیش کنید؟
پاسخ: 
سلام
خیر! تابع copy به درستی و راحتی هدف مورد نظر را پوشش می دهد، پس نیازی به ایجاد تابع جدید نبوده و لذا وجود ندارد!
برای آگاهی از تمام قابلیت های این تابع و توابع مشابه، لطفا به راهنمای سایت PHP مراجعه کنید:
http://www.php.net/manual/en/function.copy.php
نویسنده: بهنام
زمان: ۲۲:۵۵:۴۳ - تاریخ: ۱۳۹۳/۰۲/۲۴
سلام
دو تا سوال داشتم
1.در دستور if چه موقع هایی باید اینطوری استفاده کرد
if(...){
}else{
}
و چه موقع هایی به این صورت؟
if(...)
...
else
...
نکته: به قسمت اکولاد ها دقت شود
و سوال دوم:
چطوری مقدار یک کوکی را در پی اچ پی حذف کنم یا از بین ببرم؟
پاسخ: 
سلام
در مورد سوال اول، هر دو روش یک کار را انجام می دهند، منتها حالت دوم شکل مختصر نویسی است، توجه کنید که در حالت دوم، مفسر PHP تنها اولین بلاک بعدی را جزء شرط حساب می کند، به فرض اگر بعد از دستور else دو خط echo داشته باشیم، تنها خط اول آن خروجی داده می شود، به عبارتی این حالت صرفا برای نوشتن دستورات کوتاه کاربرد دارد.
در مورد بحث کوکی، برای پاک شدن آن بعد از نشست فعلی کافی است همان کوکی (همان نام) را با تاریخ انقضای صفر تنظیم کنید.
اما برای حذف فوری آن باید کوکی را به زمانی گذشته تنظیم کنید، مثال:
setcookie("cookie_name", NULL, time()-3600);
نکته: کوکی فعلی باید توسط همان سایت ایجاد شده باشد، امکان تغییر سایر کوکی های ذخیره شده در مرورگر وجود ندارد.
نویسنده: بهنام
زمان: ۰۰:۰۶:۴۱ - تاریخ: ۱۳۹۳/۰۲/۲۵
بسیار ممنونم
یه سوال دیگه
function SetSession(){
return $_SESSION['name'] = $name;
return $_SESSION['user'] = $user;
return $_SESSION['gender'] = $gender;
}
در اینجا بود یا نبود return چه اهمیتی دارد؟ باشه بهتره یا نباشه
پاسخ: 
سلام
برای درک بهتر این موضوع باید به مبحث توابع در PHP مراجعه کنید، اما به طور خلاصه در یک تابع return جایی استفاده می شود که بخواهیم مقداری (از نوع عددی، متنی، آرایه، Boolean و...) را به عنوان نتیجه برگردانیم، از طرفی زمانی که یک دستور return در تابع اجرا می شود، مانند اجرای دستور break است، یعنی پس از اجرای یک return، ادامه کدها نادیده گرفته می شوند و لذا وجود سه return در تابع شما، بدون اینکه از دستور شرطی استفاده کنید، صحیح نیست و فایده ای ندارد، از طرفی برخی کارها مانند تنظیم سشن آی دی پس از اجرا نیازی به برگرداندن نتیجه ندارد، مگر برای خطایابی که باید با دستور شرطی ست شدن یا نشدن را بررسی کنید، مثال:
<?php
function setSession($name, $user, $gender){
$_SESSION['name'] = $name;
$_SESSION['user'] = $user;
$_SESSION['gender'] = $gender;

if(@$_SESSION['name'] != $name){
return FALSE;
}
elseif(@$_SESSION['user'] != $user){
return FALSE;
}
elseif(@$_SESSION['gender'] != $gender){
return FALSE;
}

return TRUE;
}
?>
نویسنده: بهنام
زمان: ۲۲:۲۶:۴۱ - تاریخ: ۱۳۹۳/۰۲/۲۷
سلام
من میخواهم یه سایت درست کنم و یک ثبت نام در سایت قرار بدم وقتی کاربری ثبت نام کرد کد تایید به گوشی کاربر ارسال شود و در فرم وارد کند و تایید و وارد سایت شود
اگر ممکنه قسمت اس ام اس فرستادن با وب سرور را کمی راهنماییم کنید که از کجا شروع کنم هیچ تجربه ای در این کار ندارم آیا باید پیام اس ام اس بخرم و از کجا؟ و چگونه ؟
با تشکر
پاسخ: 
سلام
همان طور که اشاره کرده اید، باید یک پنل پیامک خریداری کنید، در این صورت یک محیط و API کاربری مشابه درگاه پرداخت آنلاین در اختیارتان قرار می گیرد که می توانید آن را به کدهای PHP متصل کنید و هر طور که نیاز باشد، از آن استفاده نمائید، اینکه از کجا خریداری کنید بستگی به خودتان دارد، اما حتما قبل از خرید از پشتیبانی شدن زبان مورد نظر توسط سرویس دهنده و امکان اتصال آن اطمینان حاصل کنید.
نویسنده: بهنام
زمان: ۱۳:۳۸:۲۰ - تاریخ: ۱۳۹۳/۰۲/۳۰
سلام
دو تا سوال داشتم
اول:
در دستور LIMIT میخوام از رکورد 10 به بعد همه رو نشون بده من نوشتم LIMIT 10, 99 اینجا از رکورد 10 تا 99 رو نشون میده ولی اگه رکورد 100 وارد بشه دیگه 100 رو نشون نمیده اون 99 رو باید چکار کنم؟ که از رکورد 10 به بعد هرچی که هست رو نشون بده آیا خالی بزارم؟
و سوال دوم:
$filtering = file_get_contents('filter/filter_username.php');
if(!preg_match('/ '.$filtering.' /i',$username)){
echo 'شما وارد سایت شدید';
}
و درون فایل filter_username.php این هارو میخوام بنویسم
<filter>aaaaa</filter>
<filter>bbbbb</filter>
<filter>ccccc</filter>
که با نام های aaaaa , bbbbb , cccc نتواند وارد شود اون
<filter></filter>
یک نامی است که خودم همینجوری انتخاب کردم آیا در پی اچ پی تابعی نیست که یه همچین امکانی بدهد؟ من یک جا دیده بودم که یه همچین چیزی بود با تشکر
پاسخ: 
سلام
برای مورد اول همان طور که از نام LIMIT مشخص است، برای محدود کردن است، پس برای هدف شما که ممکن است بی نهایت ردیف را شامل شود مناسب نیست، راه حل این است که به جای LIMIT یک ستون id داشته باشید و پرس و جو را بر مبنای آن بنویسید، مثال:
SELECT * FROM tbl WHERE id > 10
اما برای مورد دوم یا باید موارد به صورت آرایه در یک فایل PHP باشند، یا اگر به صورت مد نظر شما می خواهید، باید در یک فایل متنی باشند تا خطای syntax نداشته باشید، مثال:
<?php
//حذف BOM از فایل
function removeUTF8BOM($text){
$bom = pack('H*','EFBBBF');
$text = preg_replace("/^$bom/", '', $text);

return $text;
}

$username = 'aaaaa';
//دریافت اطلاعات فایل
$filtering = removeUTF8BOM(file_get_contents('filter_username.txt'));
//تجزیه به آرایه
$array = explode("\n", $filtering);
$error = FALSE;

//حذف تگ های اضافه
for($i = 0; $i < count($array); $i++){
$array[$i] = preg_replace('/<filter>(.*)<\/filter>/i', '$1', trim($array[$i]));
}

//print_r(array_values($array));

//بررسی نام کاربر با لیست سیاه
foreach($array as $key => $value){
$pattern = '/^'.$value.'$/i';
if(preg_match($pattern, $username)){
$error = TRUE;
break;
}
}
if($error == FALSE){
echo "شما به سایت وارد شده اید!";
}
else{
echo "Error!";
}
?>
نکته: فایل متنی نباید BOM داشته باشد، برای حذف آن از برنامه ++Notepad استفاده کنید (البته در نمونه کد نیز تابعی تعریف شده که این کار را انجام می دهد).
نویسنده: بهنام
زمان: ۲۳:۰۳:۰۵ - تاریخ: ۱۳۹۳/۰۲/۳۰
ممنونم ولی این کار کمی سخت است
همانطور که اشاره کردید از روش آرایه هم توضیح بدید دقیقا مثل همین ولی به روشی دیگر (آسانتر)
پاسخ: 
برای حالت آرایه کافی است به جای تجزیه اطلاعات فایل، یک آرایه آماده به کدهایتان بدهید، مثال:
$array = array(
0 => 'aaaaa',
1 => 'bbbbb',
2 => 'ccccc'
);
در این صورت قسمت مربوط به تجزیه به آرایه و تابع removeUTF8BOM نیاز نیست، چون در این روش فایلی وجود ندارد (در واقع روش استفاده از فایل تنها یک مرحله بیشتر دارد و اطلاعات درون آن نهایتا به آرایه تبدیل می شوند).
نویسنده: بهنام
زمان: ۰۱:۵۱:۴۱ - تاریخ: ۱۳۹۳/۰۲/۳۱
سلام
ممنونم که نسبت به بنده لطف دارید امیدوارم همیشه در سلامت باشید واقعا آرزو میکنم در تمام مراحل زندگی موفق باشید
این همه قسمت هایی که گفتید را فهمیدم به جز قسمت های حذف BOM تابع pack چکاره است؟ و چطور میشود به جای این کارها فایل را با نت پد++ تخلیه کرد؟
در قسمت
$array[$i] = preg_replace('/<filter>(.*)<\/filter>/i', '$1', trim($array[$i]));
را نفهمیدم مخصوصا قسمت های (.*)؛ چرا از گروه () استفاده کردید؟ و علامت . همان علامت "هر کاراکتری بود" هست؟ تمام مراحل عبارت با قاعده ای که در سایت منتشر کرده بودید را هم خواندم ؛ چرا با preg_replace تگ های
<filter></filter>
را به '1$' تبدیل کردید؟ میتوانستید به این صورت '' یا 'i$' یا به این صورت ' ' تبدیل کنید؛ 1$ معنایش چیست؟ ما که متغیر 1$ نداریم
و چرا در فراخوانی آرایه از تابع trim استفاده کردید آن که فقط خط فاصله ها را حذف میکند و چه نیاز به حذف کردن در این باره خیلی از سایت php.net استفاده کردم و همه را فهمیدم به جز همین سوالایی که واسم پیش آماده ممنون و همچنین شرمنده بابت سوال های زیاد بنده
پاسخ: 
سلام
- برای حذف BOM با استفاده از برنامه ++Notepad و از منوی Encoding گزینه Convert to UTF-8 without BOM را انتخاب، سپس فایل خود را مجددا ذخیره کنید.
- در مورد تابع pack در همین حد بدانید که برای ایجاد تغییرات در رشته متنی به صورت باینری استفاده می شود، در واقع این تابع رشته دریافتی را به صورت کدهای باینری در می آورد که می توان تغییرات را در چارچوب آن اعمال کرد، در اینجا نیز کدهای هگز مربوط به Byte Order Mark UTF-8 از رشته حذف شده اند.
- استفاده از گروه برای این است که محتوای هر گروه در توابعی مانند preg_replace با یک شماره (به صورت ترتیبی) در پارامتر بعدی قابل دریافت است، در اینجا نیز اولین و تنها گروه با عدد 1 به صورت متغیر در پارامتر بعدی قابل دریافت است، در واقع گروه ما هر چیز مابین دو تگ filter را شامل می شود، به این صورت تگ های اضافه filter حذف شده و صرفا مقادیر داخل آنها به عنوان value در آرایه باقی می ماند.
- از trim برای جلوگیری از ایجاد فاصله یا خط جدید ناخواسته استفاده کرده ایم، در صورتی که ورودی ایمن باشد (به این معنی که مطمئن باشید هیچ خط فاصله یا خط جدید در انتهای هر مقدار نیست)، استفاده از این تابع ضرورتی ندارد.
نویسنده: بهنام
زمان: ۱۴:۲۳:۰۶ - تاریخ: ۱۳۹۳/۰۲/۳۱
سلام
دریم ویور من cs 6 هستش کد های PDO در پی اچ پی را پشتیبانی نمیکنه یعنی کنترل اسپیس که میزنم تابع های زیرش را نمیاره آیا پلاگین مخصوصی داره که نصب کنم یا همین دریم ویور CS را نصب کنم همه چی حله؟ لطفا کمکم کنید
پاسخ: 
سلام
متاسفانه این نقطه ضعف در دریم ویور وجود دارد، اما در حدی نیست که خیلی آزار دهنده باشد، یک بار کدها را بنویسید، برای سایر موارد از همان نمونه کدها استفاده کنید (شاید این مورد در نسخه های بعدی رفع شود!).
نویسنده: محمد
زمان: ۱۷:۲۴:۵۶ - تاریخ: ۱۳۹۳/۰۴/۰۹
سلام. ممنون از زحماتتون.
یک سایتی درست کردم یه صفحه ای هم درست کردم که مطالب رو بفرسته به صفحه اصلی و برای همیشه در انجا نمایش بده! مثل وبلاگ ها. اطلاعات رو ارسال می کنم اما در صفحه اصلی چکار کنم؟ انها رو توی یک فایل ذخیره می کنم. ولی اونطوری که می خوام نمی تونم نمایش بدم. در صورت امکان و در صورت کوتاه بودن کمکم کنید.
پاسخ: 
سلام
سوال کلی است!، باید برنامه نویسی PHP و کار با دیتابیس MySQL را فرابگیرید.
نویسنده: محمد
زمان: ۱۴:۴۷:۱۸ - تاریخ: ۱۳۹۳/۰۴/۱۱
هر سوالی پرسیدم کلی بود. مثل حرکت در جاوا. php رو در حد معمولی بلدم اما دیتابیس در اینترنت شدنی است؟ چون در کتابم فقط همون mysql رو نوشته. یعنی با اون ها میشه همچین کار هایی انجام داد؟
پاسخ: 
دوست گرامی، اگر مطمئن نیستید که سوالاتتان "کلی" است، کافی است همین موارد را در انجمن های برنامه نویسی مطرح کنید!
یادگیری MySQL (چه از طریق کتاب یا وب) برای کار با PHP کافیست، البته تا زمانی که بتوانید یک برنامه کاربردی تحت وب بنویسید نیاز به تمرین و تکرار و نوشتن برنامه های کوچکتر است.
نویسنده: محمد
زمان: ۰۹:۰۴:۱۱ - تاریخ: ۱۳۹۳/۰۴/۱۲
خودم فهمیدم کار سختی است ولی من با همین کتاب ها کار های زیادی کردم. فهمیدم که سوال کلیست اما اطلاعات ارسال شده به دیتابیس یا همون پایگاه داده همونایی که در جدول مشخص در دیتابیس ذخیره شده اند رو چگون در وب استفاده کنیم. یعنی چگون اون اطلاعات رو از پایگاه داده به جای دیگری منتقل کنیم؟ اینم مثل اینکه "کلی" است. اما از سختی کم شده
پاسخ: 
عیب کار شما این است که بدون مطالعه مباحث مقدماتی سوالاتی مطرح می کنید که پاسخ خیلی از آنها با گذراندن این آموزش ها مرتفع می شود، به طور مثال فراخوانی اطلاعات با دستور SELECT در MySQL انجام می شود که در جای خود مفصل آموزش داده شده.
نویسنده: محمد
زمان: ۰۸:۳۶:۴۷ - تاریخ: ۱۳۹۳/۰۴/۱۴
یسیار ممنونم. دیگه مشکلی نیست چون همه رو یاد گرفتم. برای مثال با دستور connect اتصال برقرار میشه با دستورnsert into رکورد اضافه میشه update اطلاعات رو عوض می کنه و... این هاست های اینترنت پایگاه داده دارند؟ راستی چگونه مثل همین قسمت نظرات 4 صفحه جدا اند؟ یعنی شما 4 تا از این صفحه ها دارید یا دیتابیس جدا؟ به طور "کلی" بسیار ممنون. خوشحال می شوم به وبلاگم سری بزنید چون یه ساله کسی سر نزده!!!
پاسخ: 
- امکانات هاست های رایگان در صفحه اول آنها توضیح داده شده!
- برای صفحه بندی عبارت "صفحه بندی مطالب با PHP و MySQL" را در وب جستجو کنید.
نویسنده: محمد
زمان: ۰۹:۰۸:۵۹ - تاریخ: ۱۳۹۳/۰۴/۱۵
در پی اچ پی مثلا:
echo "Gigpars";
چطوری فونت و سایز نوشته ای که نشون داده میشه رو عوض کنیم؟ برای مثال در بادی <body> یک استایل درست کردم که رنگ و اندازه نوشته ها رو تعیین می کنه ولی عمل نکرد. شاید خیلی ابتدایی باشه ولی هر کار کردم نشد.
پاسخ: 
PHP تنها وظیفه ایجاد خروجی HTML را دارد و در نتیجه نهایی صفحه بی تاثیر است، با درک این مورد ابتدا مهم این است که فحه HTML خود را به درستی طراحی کنید، سپس آن را با PHP چاپ کنید، به طور مثال دستور زیر:
<?php
$size = 5;
?>
<font size="<?php echo $size; ?>">متن</font>
در خروجی صفحه به صورت زیر چاپ می شود:
<font size="5">متن</font>
از همین منطق ساده می توان استایل CSS یا هر خروجی دلخواه دیگری را به صورت داینامیک چاپ کرد.
نویسنده: محمد
زمان: ۱۵:۴۳:۱۳ - تاریخ: ۱۳۹۳/۰۴/۱۵
در MySQL با چه کدی یک جدول ایجاد شده را حذف می کنند؟ در ضمن مطلب قبلی هم جستجو کردم نیومد. چیزای دیگه ای اومد.
کسی که اینایی رو که در سایتتون اموزش دادید بلد باشه چه مدرکی می گیره. یعنی تمام قسمت پی اچ پی که در این سایت گذاشتید؟ البته من نیستم برای کس دیگه ای پرسیدم. به طور کلی متشکرم.
پاسخ: 
- برای حذف جدول از دستور DROP TABLE استفاده می کنیم، مثال:
mysql_query('DROP TABLE IF EXISTS  tbl_name') or die(mysql_error());
- عبارت "صفحه بندی" را در قسمت جستجوی سایت وارد کنید.
- PHP یک زبان و دانش برنامه نویسی آزاد است که با یادگیری آن می توانید برنامه های تحت وب خلق کنید، حداقل در داخل کشور مدرک آکادمیک خاصی ارائه نمی شود.
نویسنده: عسل
زمان: ۱۴:۵۵:۱۸ - تاریخ: ۱۳۹۳/۰۵/۰۶
سلام به دوستان عزیز:
من یک فرم طراحی کردم ک با جاوا اسکریپت اعتبار سنجی میشه: اینم کد:
<script type="text/javascript">
function validateForm(){
var name=document.getElementById("tfname").value;
var usname=document.getElementById("tfusname").value;
var pass=document.getElementById("tfpass").value;
var rpass=document.getElementById("tfrpass").value;
var aboutme=document.getElementById("tfaboutme").value;
var favorites=new Array();
favorites[0] = document.getElementById("chnews").value;
favorites[1] = document.getElementById("chfavorites").value;
favorites[2] = document.getElementById("chsport").value;
favorites[3] = document.getElementById("chmusic").value;
favorites[4] = document.getElementById("chtechno").value;
var sex=document.getElementById("male" && "female").value;
var pic=document.getElementById("file").value;
var mail=document.getElementById("mail").value;
if((name == "") || (usname == "") || (pass == "") || (rpass == "")
|| (favorites[0] == "" && favorites[1] == "" && favorites[2] == "" && favorites[3] == "" && favorites[4] == "") || (aboutme == "")
|| (sex == "") || (pic == "") || ( mail == "")){
alert("لطفا تمامی فیلدها را پر کنید");
}else{
frm_regis.submit();
}
}
</script>
حالا با PHP گفتم ارسال شه اینم کد:
<?php
mysql_connect('localhost','root','');
mysql_select_db('Test');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');

if(isset($_POST['btn_regis'])){

$name=$_POST['tfname'];
$usname=$_POST['tfusname'];
$pass=$_POST['tfpass'];
$rpass=$_POST['tfrpass'];
$aboutme=$_POST['tfaboutme'];
$favorites=$_POST['chnews'] && $_POST['chfavorites'] && $_POST['chsport'] && $_POST['chmusic'] && $_POST['chtechno'];
$sex=$_POST['male'] && $_POST['female'];
$pic=$_POST['file'];
$mail=$_POST['tfmail'];
@mysql_query("INSERT INTO `regis`(`name`, `usname`, `pass`, `rpass`, `favorites`, `sex`, `pic`, `mail`) VALUES ('$name','$usname','$pass','$rpass','$aboutme','$favorites','$sex','$pic','$mail')") or die(mysql_error());

}
?>
اینم نوع تعیین فرم:
<form  name="frm_regis" method="post" action="check.php">
برای مثال یکی از input ها:
"input type="text" name="tfname" id="tfname"
"input type="button" name="btn_regis" onclick="validateForm();"
</form>
اما کار نمیکنه، جالب اینه که وقتی کدای php رو تو یه صفحه به اسم مثلا check میدم
و اکشن فرم رو برای چک ارسال میکنم اما باز هم insret نمیکنه. خودم که فکر میکنم مشکل تو تعیین نوع دکمه باشه، حالا باز دوستان بهتر میدونند.
ممنون میشم راهنمایی کنید.
پاسخ: 
سلام
در نگاه اول به نظر مشکل از فیلد btn_regis است، در کدهای PHP وضعیت set شدن این فیلد را بررسی کرده اید، در صورتی که این فیلد از نوع button است و هیچ value ای به سرور ارسال نمی کند، لذا هیچ وقت ست نمی شود! برای بررسی ست شدن بهتر است از یک فیلد hidden با یک value استفاده کنید.
نکته: علاوه بر این مشکل ممکن است خطای جاوا اسکریپتی نیز در صفحه باشد که نیاز به بررسی تمام کدها است.
paged صفحه 4 از 7




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

3 × 8
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...