آگهی
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 مطالب بیشتر:
» دستورات شرطی (Conditional Statements) در PHP
» آموزش برنامه نویسی وب با PHP
» توابع کار با آرایه در PHP - بخش اول
» حلقه for، foreach و while در PHP
» تعریف و استفاده از متغیر (Variable) در 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 لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




9 × 4
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form حامد
در:
عالی بود
۲۱:۳۸:۳۱ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام خیلی ممنون بابت پاسخ سریعتون خیلی دنبال همین دو خط کد بودم برای یادگیری سریع ریجکس ولی با سرچ پیدا نکردم و...
۱۸:۰۳:۴۳ ۱۳۹۸/۱۱/۰۷

form فرید
در:
درود بشما، میخواستم بدونم مثل کلمه @، کلمه ایی ساین هم داریم؟ با تشکر
۱۲:۱۹:۰۷ ۱۳۹۸/۱۱/۰۷

form ناشناس
در:
سلام میشه لطفا به سوالم جواب بدید من می خوام با استفاده از عبارات با قاعده تمام تگ های html رو تشخیص بدم...
۱۰:۱۳:۰۵ ۱۳۹۸/۱۱/۰۷

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

form رسول
در:
سلام میخوام بجای نمایش متن، متن موجود در یه لینکو بهم نشون بده ممنون میشم کمکم کنید
۱۳:۳۸:۱۸ ۱۳۹۸/۱۱/۰۶

form حسن
در:
من مطابق کد نوشته شده شما میخواستم آدرس
۱۴:۱۰:۱۳ ۱۳۹۸/۱۱/۰۵

form saemrezaei
در:
سلام واقعا عالییه خیلی استفاده کردم به وبلاگم سر بزن لطفا.
۱۳:۳۷:۳۴ ۱۳۹۸/۱۱/۰۵

form نصراله رضایی
در:
سلام در ادمین های گذشته که باز می کنم تصاویر مشاهده نمی شود و من را به آدرس Huge domains.com ارجاع می...
۲۲:۳۹:۵۳ ۱۳۹۸/۱۱/۰۴

form نقدی زاده
در:
واقعا مرسی یه overflow-y:hidden به body دادم اسکرل افقی برای صفحه نمایش تبلت از بین رفت
۱۴:۴۴:۱۳ ۱۳۹۸/۱۱/۰۴

form وحید پوربشیری
در:
سلام لطفا یکی که خوب جاوا اسکریپت بلده بیاد به این آیدی ت.ل.گ.ر.ا.م Alpha2020@ یه کد برام بنویسه پول هم میدم
۱۱:۱۲:۳۲ ۱۳۹۸/۱۱/۰۲

form امین
در:
سلام تشکر بابت راهنماییتون. منظور من این بود که: الان با ثبت نام کاربر a در سایت اطلاعاتش در دیتابیس ثبت میشه و یک پوشه...
۰۳:۱۲:۴۰ ۱۳۹۸/۱۱/۰۲

form شریفی
در:
سلام معنی متن زیر چیست؟
۱۸:۲۸:۰۹ ۱۳۹۸/۱۱/۰۱

form امین
در:
سلام خسته نباشید یه اسکریپت دارم که وقتی کاربر ثبت نام میکنه یه پوشه و محتواش ایجاد میشه. میخوام یه صفحه با هر ثبت نام...
۱۴:۱۸:۵۱ ۱۳۹۸/۱۰/۳۰

form Admin
در:
سلام دوست عزیز. میشه بگویید چگونه میتوان در وبلاگ کادری را باز کرد که بازدید کنندگان بتوانند در آن چیزی بنویسند. ممنون میشم...
۱۱:۲۸:۵۰ ۱۳۹۸/۱۰/۳۰
آگهی