article

توابع (Functions) در PHP

php-function

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

تابع (Function) چیست و چه کاربردی دارد؟


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

شیوه نگارش (syntax) تابع در php


شیوه نگارش (syntax) توابع در php شباهت زیادی به دیگر زبان پرکاربرد وب، یعنی جاوا اسکریپت دارد، به مثال زیر توجه کنید.
<?php
//تعریف تابع
function test(){
    echo "این یک تابع در php است";
}
?>
توضیح:
- توابع در php با عبارت function تعریف می شوند.
- نام توابعی که تعریف می کنیم، معمولا می تواند عباراتی دلخواه باشد، اما انتخاب نام به صورت عددی یا دارای کارکترهای خاص، مجاز نیست.
- اگر تابع بالا را در هر جا از کد خود فراخوانی کنید، عبارت دستور echo به خروجی ارسال می شود.
فراخوانی تابع بالا می تواند به صورت زیر باشد:
<?php
//تعریف تابع
function test(){
    echo "این یک تابع در php است";
}
//فراخوانی تابع
test();
?>

آرگومان (argument) تابع


اگر در مثال بالا دقت کرده باشید، پس از تعریف نام تابع، یک () قرار گرفته است، این علامت برای دریافت یک آرگومان (argument) است، شاید این واژه به ظاهر کمی غریب بیاید، اما آرگومان در اینجا چیزی نیست جزء همان ورودی که پیش تر بحث آن را مطرح کردیم، با تعیین آرگومان، این امکان را به تابع می دهیم که پردازش مورد نظر را بر روی یک ورودی انجام دهد، البته توابع با و بدون آرگومان قابل استفاده هستند که در ادامه، بیشتر با نحوه کاربرد آنها آشنا خواهیم شد، به مثال زیر توجه کنید.
<?php
//تعریف متغیر در بیرون تابع
$name = 'احمد';
//تعریف تابع
function getuser($name){
    if ($name == 'admin'){
        echo "مدیر سایت ، خوش آمدید";
    }
    else{
        echo "$name ، خوش آمدید";
    }
}
//فراخوانی تابع
getuser($name);
?>
مثال بالا با توجه به اینکه متغیر فرضی name را به عنوان آرگومان بررسی می کند، خروجی زیر را چاپ خواهد کرد.
احمد ، خوش آمدید
در واقع شرح تابع بالا به اینصورت است که ابتدا متغیر فرضی name برابر کلمه احمد مقدار دهی شده است، سپس وقتی تابع فراخوانی می شود، با دستور if بررسی می گردد که آیا متغیر name به عنوان آرگومان برابر عبارت admin است یا خیر، جواب خیر است، پس قسمت دوم یعنی else به خروجی فرستاده می شود.

مثال دیگر از تابع در php


در تابع زیر، به جای یک آرگومان و تعریف متغیر در بیرون آن، از دو آرگومان و مقادیر متغیر در هنگام فراخوانی تابع استفاده کرده ایم.
<?php
//تعریف تابع
function checkpage($name,$page){
    if ($name == 'admin'){
        echo "مدیر سایت ، به صفحه $page خوش آمدید";
    }
    else{
        echo "$name ، به صفحه $page خوش آمدید";
    }
}
//فراخوانی تابع با چند آرگومان
checkpage("admin",33);
?>
خروجی تابع بالا به صورت زیر خواهد بود.
مدیر سایت ، به صفحه 33 خوش آمدید
با کمی دقت، حتما خواهید توانست اتفاقاتی را که در مثال بالا روی داده، حدس بزنید.

تعریف توابع پیچیده در php


اجازه بدهید آموزش را با تعریف چند تابع، این بار کمی پیچیده تر از توابع قبلی دنبال کنیم.
تابع محسابه معدل دانش آموزان:
<?php
//تعریف تابع
function avrage($marks){
    //محاسبه معدل    
    $marks = $marks / 20 . '&nbsp;';//تعداد کل دروس 20
    return $marks;
}
//مجموع نمرات 3 دانش آموز
$st1 = 344;
$st2 = 312;
$st3 = 298;
//فراخوانی تابع به صورت جداگانه برای هر دانش آموز
echo avrage($st1);
echo avrage($st2);
echo avrage($st3);
?>
توضیح:
- عبارت return، خروجی تابع را برای استفاده در ادامه کد به اصطلاح برمی گرداند، به عبارتی دیگر هنگامی که از return در یک تابع استفاده می کنیم، یعنی پردازش های مورد نظر ما به پایان رسیده و نتیجه به محلی که تابع از آنجا فراخوانی شده، فرستاده می شود، توجه داشته باشید که در تابع، با اجرای یک دستور return، سایر پردازش ها (یا سایر دستورات return) نادیده گرفته می شوند.
- خروجی مثال بالا اعداد 17.2 15.6 14.9 خواهند بود.
تابع محاسبه حاصل جمع و حاصل ضرب چند عدد:
<?php
//تعریف تابع
function calculator($numx,$numy,$numz){
    //حاصل جمع
    $total = $numx + $numy + $numz;
    //حاصل ضرب
    $multiple = $numx * $numy * $numz;
    //برگرداندن نتیجه تابع
    return ("حاصل جمع اعداد برابر $total و حاصل ضرب آنها برابر $multiple است");
}
//فراخوانی تابع به همراه آرگومان ها
echo calculator(20,31,68);
?>
خروجی تابع بالا به صورت [حاصل جمع اعداد برابر 119 و حاصل ضرب آنها برابر 42160 است] خواهد بود.
تابع نمایش حاصل یک عدد به توان 10:
<?php
//تعریف تابع
function exponent($num){
    //استفاده از حلقه for
    for ($i=0;$i<10;$i++){
        $exponent = $num;
        $num = $exponent * 2;
        echo $exponent . '&nbsp;';
    }
}
//فراخوانی تابع به همراه آرگومان
echo exponent(2);
?>
خروجی تابع بالا به صورت اعداد 2 4 8 16 32 64 128 256 512 1024 خواهد بود.

توابع درونی php


تا این مرحله از آموزش php و بحث توابع، دیدیم که چگونه می توان یک تابع را تعریف و از آن استفاده نمود، اما نکته جالب اینجاست که قدرت php از این هم فراتر است، چرا که توابعی به صورت از پیش تعریف شده (built in functions) در این زبان وجود دارند  که بدون حتی یک خط کدنویسی، مقصود مورد نظر ما را انجام می دهند، شمار این توابع چیزی بالغ بر 700 است، البته همه ی آنها ممکن است مورد استفاده قرار نگیرند اما تعداد به خصوصی، بسیار پر کاربرد هستند، برای دیدن لیست کاملی از توابع درونی، می توانید به سایت رسمی php در آدرس زیر مراجعه کنید.
http://www.php.net/manual/en/funcref.php
به مثال زیر توجه کنید.
<?php
//تعریف تابع
function replace($str){
    //تابع درونی str_replace
    $str = str_replace('کاربر','مدیر',$str);
    return $str;    
}
//فراخوانی تابع به همراه آرگومان
echo replace("سلام کاربر سایت، خوش آمدید");
?>
تابع درونی str_replace یکی از پرکاربردترین ها در php است، این تابع وجود یک عبارت را در رشته ارسالی بررسی کرده و اگر حاصل بررسی درست (true) بود، آن عبارت را با جایگزین آن، تعویض می کند، بر این اساس خروجی مثال بالا به صورت [سلام مدیر سایت، خوش آمدید] خواهد بود.
مثالی دیگر از به کار بردن توابع درونی در php:
<?php
//تعریف تابع
function lower($str){
    //تابع درونی strtolower
    $str = strtolower($str);
    return $str;    
}
//فراخوانی تابع به همراه آرگومان
echo lower("WELCOME TO PHP LEARNING");
?>
در مثال بالا از یکی دیگر از توابع درونی php به نام strtolower استفاده کرده ایم، این تابع حروف (انگلیسی) بزرگ را تبدیل به حروف کوچک می کند، بر این اساس خروجی مثال بالا به صورت [welcome to php learning] خواهد بود.
در موقع به کارگیری توابع درونی php، نیازی نیست حتما آنها را در یک تابع دیگر استفاده کنیم، به فرض مثال بالا را به صورت زیر هم می توان نوشت که همان خروجی را خواهد داشت.
<?php
//فراخوانی تابع به همراه آرگومان
echo strtolower("WELCOME TO PHP LEARNING");
?>
در مباحث بعدی در این باره بیشتر خواهیم گفت و با توابع پیچیده تری آشنا خواهیم شد.
sectionدسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
» توابع کار با آرایه در PHP - بخش دوم
» توابع کار با آرایه در PHP - بخش سوم
» دستورات شرطی (Conditional Statements) در PHP
» توابع کار با آرایه در PHP - بخش اول
» دستور switch و case در PHP
commentنظرات (۴۹ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: مرتضی
۱۶:۰۶ ۱۳۹۳/۰۵/۲۴
سلام
در wwwroot وبسایتم یک پوشه دارم (فرض کنید با عنوان dir1). داخل این پوشه یک برنامه php دارم که توش میخوام توسط توابع fopen و fwrite فایل های پوشه قبلی (یعنی wwwroot) تغییر بدم. اما نمیدونم چطور آدرس باید بدم؟
لطفا راهنمایی کنین
پاسخ: 
سلام
به چند روش می توانید این کار را انجام دهید، ساده ترین راه اینکه یک دایرکتوری به عقب برگردید استفاده از علامت
../dir
است، علامت .. به معنی یک دایرکتوری قبل است.
fopen('../other_path/file.php');
روش دیگر استفاده از define است، در فایل موجود در دایرکتوری مورد نظر ثابت های زیر را تعریف کنید:
define('SUB_INDEX_PATH', dirname(__FILE__));
define('INDEX_PATH', dirname(SUB_INDEX_PATH));
سپس در ادامه کدها می توانید از این ثابت ها استفاده کنید:
fopen(INDEX_PATH.'/other_path/file.php');
نویسنده: مرتضی
۲۰:۳۰ ۱۳۹۳/۰۵/۲۴
سپاس از پاسخ شما
نویسنده: مومنی
۲۲:۱۲ ۱۳۹۳/۰۶/۰۳
سلام خسته نباشید خدا اجرتون بده
بنده یه سوال راجع به prepared statement دارم میشه بگین این دستورات به چه معنی هستن و کاربردشون چیه اگر میشه یه مثال کامل هم بزنید ممنوم
پاسخ: 
سلام
توضیح این مبحث در این قسمت ممکن نیست، صرفا در حد اطلاعات اولیه:
prepared statement قابلیتی در سیستم های مدیریت پایگاه داده (DBMS) است که در آن اطلاعات پیش از ذخیره در دیتابیس یک بار به صورت آزمایشی اجرا می شوند (مرحله Prepare)، در صورتی که در این اجرا اشکال و خطایی وجود نداشته باشد، اجرای اصلی و نهایی یا Execute اتفاق می افتد، این شیوه به لحاظ قابلیت اجرای چند باره با یک بار Prepare ، می تواند برای نوشتن برنامه های کاربردی مفید باشد، اما مزیت اصلی در جلوگیری از حملات و نفوذ به دیتابیس یا Injection است که از این لحاظ حاشیه امن بسیار خوبی ایجاد می کند.
prepared statement در PHP در رابطه با اکستنشن PDO و mysqli صدق می کند که هر کدام چند روش (استفاده از علامت ?، استفاده از bind و...) را برای این منظور پشتیبانی می کنند.
نکته: برای درک کامل این قابلیت باید در کنار یادگیری PDO یا mysqli با آن آشنا شوید.
نویسنده: علی
۱۴:۳۳ ۱۳۹۳/۰۷/۱۵
سلام دوست عزیز
واقعاً کارتون معرکه هست. آفرین، لذت بردم، یه سوال که البته مربوط به مبحث حاضر نمیشه و مربوط به درس هستش و اونم این که چه ادیتوری رو برای نوشتن کد های PHP پیشنهاد می کنید و خودتون استفاده می کنید؟ من مدت زیادی VB, VB.Net، سی پلاس پلاس و سی شارپ کار کردم و از Visual Studio استفاده می کردم، اما تازه سراغ PHP اومدم و می خوام بدونم آیا ادیتوری همچون Visual Studio برای این زبان موجود هست یا خیر؟
با تشکر از شما و آموزش عالیتون
پاسخ: 
سلام
در برنامه نویسی وب عملا نیاز چندانی به وجود برنامه ای چون Visual Studio نیست، برنامه های تحت وب عموما مجموعه ای به هم پیوسته از کدهای زیان سمت سرور (مانند PHP) و سمت کاربر (مانند CSS، JavaScript و...) هستند که در نهایت به صورت قواعد HTML خروجی داده می شوند، لذا برقراری تعامل بین آنها توسط خود برنامه نویس صورت می گیرد، اما برای نوشتن و ویرایش راحتتر کدها و صرفه جویی در وقت، نرم افزارها و IDE هایی وجود دارند که دو مورد زیر توصیه می شود:
- نرم افزاری عالی برای توسعه دهندگان وب: Adobe Dreamweaver
- نرم افزار رایگان و قوی برای برنامه های متن باز: NetBeans IDE
نکته 1: توجه کنید که کدهای PHP و... را با یک ویرایشگر متنی ساده نیز می توان نوشت و اجرا گرفت!
نکته 2: در برنامه نویسی وب به دنبال برنامه های Wizard و تنبلی نباشید، تصور قبلی خود از اپلیکیشن نویسی را فراموش کنید! در غیر این صورت چاره ای جزء انتخاب زبان ASP.NET و استفاده از Visual Studio نیست!
نویسنده: محمد
۱۸:۵۴ ۱۳۹۳/۱۱/۲۰
سلام مشکل چیه چرا وقتی از کاراکتر های [ و ] برای replace استفاده می کنم مشکل دار میشه و به خوبی replace انجام نمی شه؟
مثلا می خوام وقتی این کلمه :
[گل]
اون کد عکسی که قرار دادن قرار بگیره!
اگه میشه درستش کنید. منظورم اینه یه راه حل بدید
این کد :
$sheklak = "[گل] [خنده]";
$result = preg_replace('[گل]' , '<img src=\'1.png\' />', $sheklak );
echo $result;
حالا می خوام یه چند تا ریپلیس روش انجام بدم یعنی بتونم اون خنده رو هم براش جایگزین در نظر بگیرم
چطوری میشه؟
البته گفتم که با [ و ] مشکل داره اینجاست. تست کنید.
تشکر
پاسخ: 
سلام
تابع preg_replace بر اساس دستورات عبارات باقاعده عمل می کند، از تابع
str_replace
استفاده کنید.
$sheklak = "[گل] [خنده]";
$result = str_replace('[گل]' , '<img src=\'1.png\' />', $sheklak );
$result = str_replace('[خنده]' , '<img src=\'2.png\' />', $result);
echo $result;
نویسنده: میثم
۱۸:۰۷ ۱۳۹۴/۰۲/۲۰
چطور میتونم تعداد رقم های یک عدد و تشخیص بدم؟
پاسخ: 
با استفاده از تابع strlen این کار امکانپذیر است:
$num_length = strlen((string)$num);
نویسنده: علی
۲۰:۵۵ ۱۳۹۴/۰۲/۲۳
با سلام.
آیا روشی هست که بتوانیم امضای یک تابع را بفهمیم
منظورم توابع استاندارد نیست بلکه توابعی که خودمان می نویسیم. مثلا بفهمیم چند آرگومان دارد و...
همان طور که می دانید در جاوا اسکریپت کافیه نام یک تابع را بدون پرانتز در دستور آلرت قرار دهیم تا ریز و درشت تابع را بهمون نشون بده ایا در php هم چنین کاری می شود کرد؟
با تشکر
پاسخ: 
سلام
در PHP روش های خاصی برای نمایش اطلاعات متغیرها، توابع و... وجود دارد، برای توابع می توانید از کلاس ReflectionFunction مطابق نمونه زیر استفاده کنید:
$func = new ReflectionFunction('yourFunction');
$filename = $func->getFileName();
$start_line = $func->getStartLine() - 1;
$end_line = $func->getEndLine();
$length = $end_line - $start_line;
$source = file($filename);
$body = implode("", array_slice($source, $start_line, $length));
print_r($body);
اطلاعات بیشتر:
http://php.net/manual/en/class.reflectionfunction.php
نویسنده: sara
۱۹:۱۲ ۱۳۹۴/۰۵/۳۰
سلام. چه جوری می تونم برای یک تابع سازنده از کاربر مقدار بگیرم در php؟
پاسخ: 
سلام
این آموزش در مورد برنامه نویسی شیء گرا نیست!، صرفا جهت آشنایی می توانید نمونه زیر را مد نظر داشته باشید:
<?php
class Person{
public $name = NULL;

public function __construct($name){
$this->name = $name;
}

}
$person = new Person("You");
echo $person->name;
?>
نویسنده: Matori73
۲۲:۴۴ ۱۳۹۴/۰۶/۱۹
خسته نباشید (:
یک سوال :
یک فانکشن نوشتم برای تبدیل اعداد خارجی به اعداد فارسی به اسم e2f
الان چند جای سایتم میخوام اعداد رو فارسی کنم ولی نمیدونم چطور چند تا فانکشن رو همزمان فراخوانی کنم !
مثلا :
 آخرین زمان فعالیت : <?php echo $jcalendar->ReturnDayName(strtolower($W)); ?> <?php echo $N_Date[2] ?>  <?php echo $jcalendar->ReturnMonthName($N_Date[1]) ?> <?php echo $N_Date[0] ?> ساعت  <?php
echo $tim;
?>
چطوری میتونم فانکشن e2f رو به کد بالا اضافه کنم که بدون مشکل، اعداد فارسی بشن !
و همچنین کد پایین :
<?php  
echo $sk['timeline']['birth']['year'].'/'.$sk['timeline']['birth']['month'].'/'.$sk['timeline']['birth']['date'];
$miladidate = jalali_to_gregorian(
$sk['timeline']['birth']['year'],sprintf("%02d",$sk['timeline']['birth']['month']),sprintf("%02d", $sk['timeline']['birth']['date']),'-');
?>
تشکر ..
پاسخ: 
ابتدا باید دید تابع شما چه ساختار و آرگومان هایی دارد، اگر آرگومان های تابع به ترتیب شامل سال، ماه و روز است و به صورت رشته متنی، می توانید به این صورت هر کجا که تابع در دسترس بود (به فرض فایل آن قبلا include شده بود) آن را فراخوانی کنید:
echo e2f($N_Date[2], $N_Date[1], $N_Date[0]);
در واقع هر آرگومانی که بخواهید را در صورتی که قبلا در تابع تعریف کرده باشید، می توان به آن ارسال و در نهایت از خروجی تابع (با return) دریافت کرد، البته در صورتی که آشنایی کافی با مباحث مقدماتی PHP نداشته باشید، توضیح و درک مطلب کمی دشوار خواهد بود!
نویسنده: Matori73
۰۳:۱۷ ۱۳۹۴/۰۶/۲۰
درود !
ممنون بابت پاسخگویی، حقیقت خیر خیلی با PHP آشنا نیستم در مورد کدهای اولی که دادم و گفتید باید دید که تابع چه ساختاری دارد و .. کدهای کامل :
<?php 
$_F_U_Date = date("Y/m/d",$sk['timeline']['time']);
$diff = strtotime(date('Y-m-d')) - strtotime($_F_U_Date);
$Year = floor($diff / (365*60*60*24));
$months = floor(($diff - $Year * 365*60*60*24) / (30*60*60*24));
$day = floor(($diff - $Year * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
?>
سن دلنمایی: <?= e2f($Year) ?> سال و <?= e2f($months) ?> ماه و <?= e2f($day) ?> روز
پاسخ: 
دوست گرامی ساختار تابع جایی وجود دارد که خود تابع (با عبارت function) تعریف شده، این قمست که درج کرده اید فقط ورودی های تابع است!
نویسنده: shervin
۱۱:۰۷ ۱۳۹۴/۰۷/۲۶
سلام
من یک قالب پارالاکس طراحی کردم و برای اینکه در وردپرس فراخوانیش بکنم و دسترسی آسان تری داشته باشم از کدهای پی اچ پی در فانکشن قالبم استفاده کردم و در خصوص فراخوانی متن هم موفق بودم ، ولی متاسفانه در خصوص فراخوانی عکس اصلا" موفق نبودم و هر کار می کنم ادرس رو نصفه ایجاد میکنه و عکس فراخوانی نمیشه. در ادمه قطعه کدی که در فانکشن قرار دادم و همچنین قطعه کدی که برای فراخوانی در اچ تی ام ال گذاشتم رو براتون اینجا میزارم.
    array( "name" => "گالری کوچک",
"desc" => "عکس مورد نظر را آپلود نمایید",
"id" => $shortname."home",
"type" => "text",
"std" => ""),
و کد فراخوانی
<?php echo get_option('home'); ?>
پاسخ: 
سلام
سوال مبهم است! ظاهرا قسمت درج شده ارتباطی به ایجاد تگ img (که جهت نمایش تصویر استفاده می شود) ندارد! در هر صورت در برنامه هایی مانند وردپرس معمولا باید آدرس قسمت src تصویر را با استفاده از توابع استاندارد در خروجی چاپ کنید، به طور مثال:
<img src="<?php echo get_template_directory_uri();?>/image/icon.png" alt="icon">
و یا:
<img src="<?php echo esc_url(home_url());?>/image/icon.png" alt="icon">
نکته: لطفا مشکلات مربوط به CMS ها را در انجمن های مرتبط مطرح نمائید!
نویسنده: سام
۱۸:۰۳ ۱۳۹۴/۰۸/۱۱
با سلام خدمت شما و ممنون از سایت خوبتون.
من میخوام بدونم که چطور میشه به یک ارگومانت در تابع چندین پارامتر ارسال کرد.
مثلا:
من این تابع را برای ارسال چند پارامتر نوشته ام میدونم اشتباه است و یا توابع زیادی برای این کار هستند اما میخوام خودم بنویسمش و نحوه کارش رو بدونم.
خوشحال میشم ایرادات این کد رو از نظر فنی هم بفرمایید.
این تابعی هست که من نوشتم:
<?php
$con=mysqli_connect("localhost","root","","data");
function test($p){
$a=array($p);
for($i=0;$i<count($a);$i++){
return $a[$i];
}
}
if(isset($_POST["send"])){
$name=$_POST["user"];
$b="asiodjiiasi";
mysqli_query($con,"insert into user('name') values(".test("$name,$b").")");
echo "Insert";
}
?>
<form method="post">
<input type="text" name="user">
<input type="submit" name="send">
</form>
میخوام پارامترها بعد از ارسال به این صورت باشند.
"test1","test"
یعنی هر رشته را با کاما جدا هم کنه یعنی اگر کاربر اولی رو نوشت بعد کاما اضافه شه نه همه رو بخونه بعد کاما اضافه کنه. برای مثال میخواهم این تابع را برای استفاده در قسمت ارسال مقادیر value ها به دیتابیس استفاده کنم که تو قسمت insert تابع را فراخوانی کردم.
یک مثال کامل رو خودتون راهنمایی کنید، البته بدون استفاده از توابع اماده.
خیلی ممنون.
پاسخ: 
سلام
در درجه اول باید ببینید ورودی (آرگیومنت) تابع شما یک مقدار ساده است یا یک آرایه، آنطور که از کدهای شما برداشت می شود، این ورودی یک آرایه است! البته در هنگام فراخوانی تابع ظاهرا دو آرگیومنت استفاده شده که صحیح نیست و باید هر دو در قالب یک آرایه تجمیع شوند! با فرض اینکه ورودی یک آرایه است، باید به تعداد کلیدها در حلقه گردش داشته باشید (که تا حدی این کار را انجام داده اید)، اما برای ایجاد خروجی داینامیک و استفاده از آن باید به Syntax دستورات دیتابیس توجه کنید، این مرحله نیاز به تست دقیق دارد که متاسفانه امکان تست کدها به جهت مرتبط به دیتابیس بودن مقدور نیست، اگر تمایل داشتید، کدهایتان را در یک سرور آنلاین پیاده سازی کنید و سپس اطلاع دهید تا ادامه کار بررسی گردد.
نویسنده: Matori73
۱۵:۰۹ ۱۳۹۴/۱۰/۱۴
درود !
من دو قطعه کد نوشتم که متاسفانه هیچکدومشون جواب ندادن، ممنون میشم راهنمایی بفرمایید :
کد اول :
<?php 
$Url = $_SERVER['REQUEST_URI'];
$Url = explode("/",$Url);
$Page_Name = $Url[count($Url)-1];
if( $Page_Name == 'story' ){
echo '<meta name="description" content="'.substr($sk['story']['text'], 0, 200).'">';
} else {
echo '<meta name="description" content="'.$sk['config']['description'].'">';
}
?>
کد دوم ؛
<?php
$des1 = 1;
$des2 = 2;
$Url = $_SERVER['REQUEST_URI'];
$Url = explode("/",$Url);
$Page_Name = $Url[count($Url)-1];
if( $Page_Name == 'story' ){
echo '<meta name="description" content="'. $des1 .'">';
} else {
echo '<meta name="description" content="'. $des2 .'">';
}
?>
تشکر ..
پاسخ: 
سلام
کد اول خطای Syntax داشت و کد دوم به درستی مقدار متغیر را جایگزین نمی کرد (کدها اصلاح شدند!)، برای راحتی و دقت بیشتر بهتر است از برنامه هایی مانند Adobe Dreamweaver استفاده کنید.
نویسنده: حسین
۱۲:۵۷ ۱۳۹۴/۱۰/۱۹
سلام من یه مشکلی دارم که نمیدونم چطوری مطرح کنم !
من یه حلقه foreach دارم که میخوام اطلاعاتش رو وارد دیتابیس کنم! چطوری باید اطلاعات foreach رو بگیرم ؟
مثلا نمیشه
$id = foreach
اینطوری بزنم! یه روشی معرفی کنید ممنون میشم :(
پاسخ: 
سلام
حلقه foreach دستور و روشی برای کار با آرایه ها است و به خودی خود مقداری ندارد که بخواهید از آن استفاده کنید!، یعنی ابتدا باید مفهوم آرایه را در برنامه نویسی بدانید، سپس می توانید در حلقه، از کلید یا مقدار آرایه برای استفاده در پرس و جو استفاده کنید، لطفا به آموزش های مقدماتی آشنایی با آرایه و سپس کار با حلقه ها در PHP مراجعه کنید.
نویسنده: محمد
۱۴:۲۱ ۱۳۹۴/۱۰/۲۷
سلام خسته نباشید
بعد از اجرای کد php برای ورود به سیستم اگه نخوایم به صفحه دیگه بره تو خود همون صفحه پیغام خوش امد بده باید چکار کنیم
پاسخ: 
سلام
در کل باید برنامه نویسی PHP بلد باشید و معنی دستوراتی که استفاده می کنید را بدانید، به طور مثال وقتی از توابع header استفاده نکنید، قاعدتا به صفحه دیگر نیز منتقل نمی شوید، اما برای مدیریت صحیح فعل و انفعالات و چاپ خروجی به نحوه دلخواه، الزاما باید PHP را از مقدمات فرا بگیرید، چون مباحث زیادی برای این کار دخیل هستند.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ کوتاه و مختصر داده خواهد شد!
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.





6 × 5
 refresh
آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form نبی
در:
‏asc و desc رو جابجا نوشتی
۱۳۹۹/۰۷/۰۴

form ساناز محمدی
در:
سلام مرسی از کدی که گذاشتید ♥
۱۳۹۹/۰۷/۰۳

form mahtab
در:
سلام خسته نباشین ببخشید میخواستم بپرسم که چجوری میتونیم یه کلیپ رو از کامپیوتر از انیستا دانلود کنیم ؟؟ اها اینم بگم...
۱۳۹۹/۰۷/۰۲

form سعید
در:
سلام دستتون درد نکنه از پروژه شما استفاده کردم فقط یه مشکل اگه در یک صفحه دو تا لیست کشویی داشته باشیم چطوری...
۱۳۹۹/۰۷/۰۱

form Iman Mafakheri
در:
سلام من یه قالب خارجی اوردم راست چینش کردم حتی فونتشم تغییر دادم اما متاسفانه وقتی متن فارسی مینویسم حروف رو جدا جدا مینویسه نمیدونم...
۱۳۹۹/۰۶/۳۰

form میثم صدیق
در:
سلام برای اضافه کردن یک المان با (append) من یک کلید گذاشتم اضافه میشه ولی با هر بار کلیک کردن اضافه میشود اگر بخواییم یک...
۱۳۹۹/۰۶/۲۹

form amin
در:
سلام و خسته نباشید می خواستم Slash ( / ) رو به صورت اتوماتیک از تمامی URL ها حذف کنم البته با کمک htaccess...
۱۳۹۹/۰۶/۲۵

form محمد
در:
سلام وقت بخیر من یه همچین کدی دارم میشه لطفا راهنمایی کنید مشکلش چیه؟ سپاسگزارم
۱۳۹۹/۰۶/۲۴

form سروش
در:
سلام . من اطلاعات را از دیتابیس دریافت میکنم و در جدول میبینم . میخوام مثلا 6 مورد آخر را در یک ردیف ببینم و...
۱۳۹۹/۰۶/۲۳

form Behdad kanani
در:
سلام اصلا نمی شه اینکارو انجام داد
۱۳۹۹/۰۶/۲۲

form جعفری
در:
سلام قبل از تبدیل تاریخ نوشتید مثلا خب این مقدار تاریخ برای من در دیتابیس در جدولی بنام startedtm بصورت یونیکس...
۱۳۹۹/۰۶/۲۰

form احمد
در:
با عرض سلام و خسته نباشید ببخشید برای فایل دانلودی باید از چه دستوری استفاده کنم فایل با پسوند pdf رو میخوام بزارم اگر امکانش...
۱۳۹۹/۰۶/۲۰

form شیما
در:
سلام آیا وقتی در قسمت وبلاگ دوستان وبلاگی رو ثبت میکنیم صاحب وبلاگ با استفاده از برنامه های خاصی میتونه متوجه بشه ؟
۱۳۹۹/۰۶/۱۹

form mahtab
در:
سلام خسته نباشین من نمیدونم چرا مدیریت وبم برام باز میشه اما وقتی میزنم مشاهده وب رو میزنم نمیاره واسم فقط امیدوارم هک...
۱۳۹۹/۰۶/۱۸

form ساناز محمدی
در:
سلام دوباره این ساب دامین بنده هست اگر یکی از مطالب را مشاهده کنید هر محصولی که ارسال شده داخل از طریق مدیریت یک...
۱۳۹۹/۰۶/۱۷
form محسن
در:
سلام و عرض ادب مجدد کد زیر هم کار نمیکنه مشکل چی میتونه باشه ؟!
۱۳۹۹/۰۶/۱۶
form ساناز محمدي
در:
سلام بنده یه ساب دامین دارم با دامنه شخصی حالا داخل این ساب دامین طرف آدرس سایت خودش رو داخل ساب دامین بنده میذاره مثلآ...
۱۳۹۹/۰۶/۱۶
form محسن
در:
سلام و عرض ادب لطفا راهنمایی کنید مشکل کد زیر چیه
۱۳۹۹/۰۶/۱۶
form احمد
در:
با عرض سلام ببخشید من با دستور append میخوام یه سطری رو به سبدم اضافه کنم ولی چطوری باید داخل append تگ ها رو بنویسم...
۱۳۹۹/۰۶/۱۵
form احمد
در:
با عرض سلام مجدد و خسته نباشید ببخشید طبق فرمایش شما من قبل از دستور else دستور if را نوشته بودم تا جایی که اطلاع...
۱۳۹۹/۰۶/۱۴
form احمد
در:
با سلام ببخشید طریقه استفاده از دستور else در ایجکس به چه صورت هست ایا باید دوباره فانکشن دان رو در هنگام شرط گذاشتن بزارم....
۱۳۹۹/۰۶/۱۳
form مجتهد
در:
سلام ابتدائا از سایت مفیدتون تشکر می کنم. من خیلی از آموزه هام رو از سایت شما یاد گرفتم. یه سوال دارم...
۱۳۹۹/۰۶/۱۳
form محمد حسین
در:
سلام لینک های من وقتی کلیک شوند اررور 404 تولید میکنند. علت چیست؟
۱۳۹۹/۰۶/۱۱
form حسین
در:
سلام بر شما و با تشکر از سایت خوبتون. من ابتدا با تابع mail پیش رفتم و یک if ایجاد کردم که اگر ایمیل...
۱۳۹۹/۰۶/۱۰
form mehdi
در:
خطای -22 مربوط به چیه؟
۱۳۹۹/۰۶/۱۰
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.