PDA

View Full Version : سوال: چطور یک فایل با چند لینک بسازم ؟ ( id=x&p=y )



ayelius
چهارشنبه 21 اردیبهشت 1390, 17:32 عصر
با سلام
من تازه چند وقته پی اچ پی رو شروع کردم، و برای رفع مشکلاتم فکر میکنم برنامه نویس بهترین مکان باشه.

من یه صفحه دارم که مثلاً دو لینک داخل اون هست به این صورت :



mods.php?act=add


mods.php?act=edit


حالا میخوام بدونم محتویات فایل mods.php رو باید چطور وارد کنم که هر کدوم از لینک های بالا که کلیک شد محتویات مربوط به همون لینک نمایش داده بشه.
یه نمونه دیدم که با سوئیچ نوشته شده بود ، اما مال یه اسکریپت پیچیده بود ، نتونستم بفهمم دقیق چجوریه.
ممنون میشم یه نمونه کد بهم بدید که بتونم این مشکلم رو حل کنم

ArtMiz
چهارشنبه 21 اردیبهشت 1390, 20:06 عصر
if($_REQUEST['act'] == 'add')
//do something
else if($_REQUEST['act'] == 'edit')
//do something else
كل كار به اين صورت هستش. حالا اگه تعداد مقادير بيشتر بود ميتوني با Switch كار كني.

ghasemweb
چهارشنبه 21 اردیبهشت 1390, 20:10 عصر
با دستور زیر میتونی چک کنی که کدوم مقدار هست و عمل مورد نظر رو انجام بدی:


if(isset($_get['act']))
{
if($_get['act']='edit')
{
code morede nazar..........
}
else if($_get['act']='add')
{
code morede nazar..........
}
}

ayelius
چهارشنبه 21 اردیبهشت 1390, 21:33 عصر
خیلی ممنون از جواب دوستان ، هر دو نمونه رو تست کردم ، نمونه اول مشکلم رو حل کرد، نمونه دوم دستوری رو که برای هر if نوشتم توی صفحه نشون نمیداد، به هر جهت مشکلم حل شد. فقط محض کامل شدن جواب میشه طریقه این کار با switch رو هم بگید؟ واقعاً از لطف دوستان ممنونم

ayelius
چهارشنبه 21 اردیبهشت 1390, 21:44 عصر
آقا مرسی ، حل شد ، به این صورت نوشتم درست شد:




switch ($_REQUEST['act']) {
case "add":
دستور
break;
case "edit":
دستور
break;
default:
دستور
}

MMSHFE
پنج شنبه 22 اردیبهشت 1390, 09:21 صبح
با سلام، براي اينكه كد دوم هم كار كنه، از GET_$ به جاي get_$ استفاده كنيد. ضمناً بنا به دلايل امنيتي بهتره از REQUEST_$ استفاده نكنيد. موفق باشيد.

ghasemweb
پنج شنبه 22 اردیبهشت 1390, 11:53 صبح
با سلام، براي اينكه كد دوم هم كار كنه، از GET_$ به جاي get_$ استفاده كنيد. ضمناً بنا به دلايل امنيتي بهتره از REQUEST_$ استفاده نكنيد. موفق باشيد.

ممنون دوست عزيز كه ياد آوري كرديد. بله بايد با حرف بزرگ مينوشتم البته براي امنيت بهتر از توابع sql injection هم استفاده بشه كه خيال برنامه نويس راحت بشه.تابع mysql_real_escape_string كاربرد داره واسه اين كار

ayelius
پنج شنبه 22 اردیبهشت 1390, 14:49 عصر
توی همون نمونه switch به جای $_REQUEST از $_GET استفاده کردم مشکلی نداشت اما بازم توی همون نمونه اول GET رو با حروف بزرگ نوشتم اما درست عمل نکرد، یعنی برای شرط if یه دستور مینویسم و برای elseif یه دستور دیگه اما چه شرط if درست باشه چه elseif در هر صورت همون دستوری که برای اجرا شدن توی if مینویسم برای esleif هم اجرا میشه، ( این رو فقط محض اطلاع میخوام بدونم مشکلش چیه اما نظر شما در مورد استفاده از سوئیچ چیه ؟ به نظرتون استفاده از سوئیچ بهتر هست یا نه ؟

numberone1
پنج شنبه 22 اردیبهشت 1390, 15:57 عصر
توی همون نمونه switch به جای $_REQUEST از $_GET استفاده کردم مشکلی نداشت اما بازم توی همون نمونه اول GET رو با حروف بزرگ نوشتم اما درست عمل نکرد، یعنی برای شرط if یه دستور مینویسم و برای elseif یه دستور دیگه اما چه شرط if درست باشه چه elseif در هر صورت همون دستوری که برای اجرا شدن توی if مینویسم برای esleif هم اجرا میشه، ( این رو فقط محض اطلاع میخوام بدونم مشکلش چیه اما نظر شما در مورد استفاده از سوئیچ چیه ؟ به نظرتون استفاده از سوئیچ بهتر هست یا نه ؟
مشكلش اينه كه رشته بايد با 2 تا مساوي مقايسه بشه نه يك مساوي

ghasemweb
پنج شنبه 22 اردیبهشت 1390, 15:59 عصر
اصلا من در شرط if اشتباه تحوي داشتم چون من اين كد رو تست نكرده بودم و علامت مقايسه رو بايد == ميذاشتم. كد اصلاح شده زير رو تست كن البته سوئيچ هم خوبه استفاده كنيد چون در اين مثال دو حالت بود من از if استفاده كردم در نمونه دومي از سوئيچ استفاده كردم.
نكته: اگه از دستور isset استفاده كني از خطاي عدم وجود GET_$ جلوگيري ميكنه.


<?php

if(isset($_GET['act']))
{
if($_GET['act']=='edit')
{
//code morede nazar..........
echo $_GET['act'];
}
else if($_GET['act']=='add')
{
//code morede nazar..........
echo $_GET['act'];
}
}

?>



<?php
if(isset($_GET['act']))
{
switch($_GET['act'])
{
case 'edit':
//code morede nazar..........
echo $_GET['act'];
break;
case 'add':
//code morede nazar..........
echo $_GET['act'];
break;
default:
//code morede nazar..........
echo $_GET['act'];
}
}

?>

ayelius
پنج شنبه 22 اردیبهشت 1390, 17:38 عصر
درسته ، اصلاً حواسم به تعداد = ها نبود. این دو نمونه آخر رو تست کردم ok بودن. ممنونم