PDA

View Full Version : سوال: چگونه مي توان با كليك بر روي يك آيكن تابع مورد نظر را اجرا كرد؟



Ali_Sedaghat
شنبه 22 خرداد 1389, 09:51 صبح
با سلام خدمت كاربران محترم سايت برنامه نويس
مشكلي كه برام به وجود آمده به شرح ذيل است:

من در حال طراحي سايتي براي خودم هستم كه در قسمت مديريت كاربران با مشكلاتي مواجه شده ام كه نمي توانم آن ها را حل كنم و به جواب برسم. چنان چه كسي (كساني) هستند كه مي توانند مرا در اين زمينه ياري كنند ازشون ممنون مي شوم كه راهنمايي ام كنند.
براي ادمين سايت امكاناتي را قرار داده ام از جمله مديريت كاربران. در اين قسمت ادمين قادر خواهد بود كه تمام كاربران را به صورت ليست شده مشاهده كرده و در صورت نياز بتواند اطلاعات مورد نياز كاربر را مشاهده كرده يا ويرايش نموده و يا حذف نمايد.
جهت انجام اين كار فايلي را به نام All_Users.php ايجاد كرده ام و كدهاي لازم را در آن نوشته ام.
ابتدا با دستور زير يك فرم را تعريف كرده ام.



<form name="All_Users" method="post" action="All_Users.php">


وقتي ادمين بر روي لينك ليست تمام كاربران كليك مي كند نام كاربري كاربران به صورت مرتب شده در صفحه جديد نمايان مي شود كه در جلوي هر كدام از اين كاربران سه دكمه به نام هاي مشاهده - ويرايش و حذف وجود دارد.
به عنوان مثال سر ستون ها عبارتند از :
رديف - نام كاربر - انتخاب نوع عمليات
1- User1 - مشاهده - ويرايش - حذف
2- User2 - مشاهده - ويرايش - حذف
3- User3 - مشاهده - ويرايش - حذف
و الي آخر (مثلاً تا 100 كاربر)

براي مشاهده كاربر مورد نظر تابع View_User() و براي ويرايش كاربر تابع Edit_User() و در پايان براي حذف كاربر تابع Delete_User() را نوشته ام.

اما سؤالاتي كه دارم :
1- با چه دستوري مي توان با كليك كردن بر روي يك آيكن تابع مورد نظر را اجرا كرد؟ مثلاً وقتي ادمين بر روي آيكن ويرايش كليك كرد تابع Edit_User() اجرا شود.
البته ناگفته نماند كه با استفاده از دستور onclick مي توان تابع جاوا اسكريپت را فراخواني كرد منتهاي مراتب من قصد دارم كه توابع مربوط به php فراخواني شوند چون آشنايي كامل با جاوا اسكريپت و ارتباط آن با بانك اطلاعاتي ندارم.

2- من قصد دارم كه در هر صفحه 30 كاربر نمايش داده شود و جهت مشاهده 30 كاربر بعدي و يا قبلي بر روي دكمه صفحه بعد و يا صفحه قبل كليك شود. براي اين كار نياز به چه كدي است؟

از اين كه حوصله كرديد و متن را به طور كامل خوانديد از شما سپاس گزارم. ممنون مي شوم به سؤالاتم جواب دهيد.
با تقديم احترام
صداقت

Reza1607
شنبه 22 خرداد 1389, 10:06 صبح
1)


<script language='javascript'>
function subform(var x){
document.getElementById('task').value=x;
frm.submit();
}
</script>
<form name="All_Users" id='frm' method="post" action="All_Users.php">
<input type='hidden' name='task' id='task' value=''>
<input type='button' value='حذف' onclick="subform('del');">
<input type='button' value='نمایش' onclick="subform('view');">
<input type='button' value='ویرایش' onclick="subform('edit');">
</form>

<?php
if(isset($_POST['task'])){
switch($_POST['task']){
case 'del':
//delete
break;
case 'view':
//edit
break;
case 'edit':
//edit
break;
}
}
?>
2) شما باید از دستور limit تو کوئریتون استفاده کنید


SELECT * FROM student LIMIT 0,10
این کوئری 10 رکورد اول رو برمی گردونه
امیدوارم کمکتون کرده باشم

babak.php
شنبه 22 خرداد 1389, 13:30 عصر
آقای رضا صحیح جواب دادند .
ولی راههای دیگه ای هم هست .

Ali_Sedaghat
شنبه 22 خرداد 1389, 18:52 عصر
سلام آقا رضا
از شما به خاطر پاسخ مناسب تان ممنونم.

جناب آقای بابک آیا شما راه دیگری در نظر دارید؟
ممنون می شم که آن را برایم بیان کنید.
با تقدیم احترام
صداقت

امیـرحسین
شنبه 22 خرداد 1389, 19:08 عصر
می تونید توسط Query اطلاعات دکمه کلیک شده رو به هر فایلی که خواستید بفرستید.
مثلا برای Delete یک فایل مجزا درست می کنید به نام delete.php که ID کاربر رو میگیره تا حذفش کنه. توی این فایل مراتب امنیتی Delete هم طبیعتا چک میشه و کافیه لینک رو شبیه این بسازیم:
<a href="delete.php?id=<?php echo $userId; ?>" title="Delete">Delete</a>

یا یک فایل پردازشی برای همه actionها بسازید و اینجوری لینک بدید:
<a href="actions.php?action=delete&id=<?php echo $userId; ?>" title="Delete">Delete</a>

و فکر نمی کنم لازم باشه که بگم چطوری توی فایل این اطلاعات رو شناسایی کنیم. (اگر لازم بود بگید)

برای صفحه بندی هم همون LIMIT که گفتند رو استفاده کنید. بهترین راه فهمیدن نحوه کار LIMIT استفاده از PhpMyAdmin هست. یک جدول بزرگ رو باهاش باز کنید و بین صفحاتش حرکت کنید و ببنید که SQL رو چطور تغییر میده.


موفق باشید

narsic
یک شنبه 23 خرداد 1389, 13:01 عصر
با سلام
دوست عزیز پیشنهاد میکنم که ابتدا یک دوره آموزش در مورد زبان PHP رو بگذرونید سپس به کدنویسی با این زبان بپردازید چون در این انجمن پاسخ ها همانند پاسخ امیر حسین (http://barnamenevis.org/forum/showpost.php?p=1011125&postcount=5) ارائه میشود و فرض بر آشنایی متوسط شما با این زبان گذاشته میشود .(پاسخ ها جنبه ی راهنمایی دارند کد کامل نوشته نمیشود)
و در نهایت جاوا اسکریپت یک زبان سمت کاربر است و قابلیت اتصال به بانک را ندارد .
موفق باشید

Ali_Sedaghat
یک شنبه 23 خرداد 1389, 21:13 عصر
1)


<script language='javascript'>
function subform(var x){
document.getElementById('task').value=x;
frm.submit();
}
</script>
<form name="All_Users" id='frm' method="post" action="All_Users.php">
<input type='hidden' name='task' id='task' value=''>
<input type='button' value='حذف' onclick="subform('del');">
<input type='button' value='نمایش' onclick="subform('view');">
<input type='button' value='ویرایش' onclick="subform('edit');">
</form>

<?php
if(isset($_POST['task'])){
switch($_POST['task']){
case 'del':
//delete
break;
case 'view':
//edit
break;
case 'edit':
//edit
break;
}
}
?>
2) شما باید از دستور limit تو کوئریتون استفاده کنید


SELECT * FROM student LIMIT 0,10
این کوئری 10 رکورد اول رو برمی گردونه
امیدوارم کمکتون کرده باشم

با سلام مجدد
من این کد را اجرا کردم منتهای مراتب مشکل اصلی اینه که این خط اجرا نمی شه.


frm.submit();

وقتی هم که این قسمت اجرا نشه قاعدتاً کد مربوط به switch هم اجرا نخواهد شد.
به نظر شما چه طور می شه این مشکل را حل کرد؟

درباره ی نظر دوست گرامی آقای امیرحسین
جناب آقای امیرحسین من نمی خوام جهت ویرایش یا حذف و مشاهده اطلاعات کاربران از فایلی جداگانه استفاده کنم. من می خوام تمام این کارها با نوشتن توابع مورد نیاز در یک فایل انجام بدم. باز هم ممنونم از این که مرا راهنمایی نمودید.

و اما درباره صحبت دوست خوبم آقای narsic
جناب آقای نارسیس من درباره php تا حد متوسط آشنایی دارم منتهای مراتب کمک خواستن از دیگران مزیت هایی دارد از جمله این که : هر شخص ممکنه تجربیاتی را در این زمینه کسب کنه که مجموع این تجربیات کمک شایانی به افرادی می کنه که با مشکل مواجه می شن.
مثلاً ممکنه شما یک راه برای حل این مشکل داشته باشید و نفرات بعد هر کدام راه جداگانه که لااقل یکی از این راه ها برای حل این مشکل جواب بدند.
باز هم ممنونم از نظری که برام فرستادید.

چنان چه کسی می تونه مشکل من را در این زمینه حل کنه ممنون می شم راهنمایی کنه.
با تقدیم احترام
صداقت

trade_mark
یک شنبه 23 خرداد 1389, 21:29 عصر
خط مربوط به ارسال در جاوا اسکریپت رو به این شکل تغیر بده

document.frm.submit();مثال بیشتر هم در اینجا

http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml

امیـرحسین
یک شنبه 23 خرداد 1389, 22:32 عصر
درباره ی نظر دوست گرامی آقای امیرحسین
جناب آقای امیرحسین من نمی خوام جهت ویرایش یا حذف و مشاهده اطلاعات کاربران از فایلی جداگانه استفاده کنم. من می خوام تمام این کارها با نوشتن توابع مورد نیاز در یک فایل انجام بدم. باز هم ممنونم از این که مرا راهنمایی نمودید.

توسط مثال دومی که زدم می تونید اینکار رو بکنید:
<a href="actions.php?action=delete&id=10" title="Delete">Delete</a>
<a href="actions.php?action=display&id=10" title="View">View</a>
<a href="actions.php?action=edit&id=10" title="Edit">Modify</a>
و توی فایل actions.php همچین چیزی داشته باشید:
if(isset($_GET['action'])) {

if($_GET['action'] == 'delete') {
if(isset($_GET['id'])
$id = intval($_GET['id']);
else
return;

$sql = "DELETE FROM table WHERE id=$id";
// ...
}


if($_GET['action'] == 'edit') {
if(isset($_GET['id'])
$id = intval($_GET['id']);
else
return;

$form = '...';
// ...
}


if($_GET['action'] == 'display') {
if(isset($_GET['id'])
$id = intval($_GET['id']);
else
return;

$sql = "SELECT * FROM table WHERE id=$id";
// ...
}

}