PDA

View Full Version : پاس دادن شماره ID به جاوااسکریپت



manager_66
یک شنبه 16 بهمن 1390, 12:32 عصر
سلام . من واسه صفحه ادمینم یک صفحه به اسم سفارشات رسیده درست کردم که هر سفارشی میاد اونجا لیست میشه . حالا میخوام یکی از سفارشتو حذف کنم . قسمتی از کدم که دکمه حذف سفارش رو میاره اینه :




<?php
while($row=mysql_fetch_assoc($res))
{

?>
<script type="text/javascript">
function delord(){
if(confirm("براي حذف سفارش مطمئنيد؟")){
<?php echo 'window.location="?act=orders&k=usr&u='.$row["user_name"].'&id='.$row["user_id"].'"'; ?>
}
}
</script>
<tr>
<td><a onclick="delord();" ><img src="../_images/del.png" class="delpic"/></a></td>
///////// some code here


منتها مشکلی که دارم اینه که وقتی میخام سفارشو پاک کنم همیشه آخرین سفارشو میاد پاک میکنه !!! این کد پاک کردنمه که با window.location به اینجا منتقل میشم:



if(isset($_GET["k"]) and $_GET['k']!=null)
{
$id=$_GET['id'];
switch($_GET['k']){
case "gue":
/////// ///// some codes here
break;

case "usr":
$username=$_GET['u'];
$order_id=$username.'_'.$id;
mysql_query("DELETE FROM `orders` WHERE `order_id`='{$order_id}'") or die(mysql_error());
mysql_query("DELETE FROM `bag_user` WHERE `user_id`='{$id}'") or die(mysql_error());
header("location: ?act=orders");
break;
}
}







حالا باید چیکار کنم که وقتی رو پاک کردن سفارش کلیک میکنم خودش پاک شه نه آخرین سفارش وارد شده ؟:قلب:

البته بجای تابع میتونم این کارو اینطوری بنویسم وجواب میده ولی هم حجم کد میره بالا و هم از لحاظ خوانایی زشت میشه . اینه که میخوام تابع باشه (مثلا این در یک پروژه دیگم درست کار میکنه):




$url= '?act=select&go=del&cid='.$cid.'&aid='.$rowalbum["id"];
echo "<td><a href='#' onclick=\"if(confirm(' آیا مطمئنید ? ')) window.location='$url' \"><img src='../_images/not.gif' style=\"border:none;\"/></a></td>";

manager_66
یک شنبه 16 بهمن 1390, 18:33 عصر
میشه اصلا با تابع یک همچین کاری کرد یا خطی بنویسم ؟:متفکر:

پ-ن : اسم تاپیک االان که خوب نگاه میکنم خیلی ربطی به کاری که میخوام بکنم نداره !!

Prosoft
یک شنبه 16 بهمن 1390, 19:47 عصر
سلام

شما داری برای هر رکورد یه تابع ایجاد میکنی و این جالب نیست! اگه 100 رکورد داشته باشی، شما داری 100 تا تابع با یک نام ایجاد میکنی، و هر گزینه‌ی حذفی که زده می‌شه، در اصل باید همه اینا رو فراخوانی کنه اما چون همشون یک نام دارن، میره آخرین تابع ایجاد شده با همون نام رو اجرا میکنه! برا همین شما میگید آخرین رکورد رو همیشه حذف می‌کنه!
شما باید اون تابع رو بیرون حلقه ایجاد کنی تا فقط 1 بار ایجاد بشه و دوتا پارامتر ورودی براش ایجاد کنی! و در هر رکورد، فقط فراخوانی همراه پارامترها رو انجام میدی!
یعنی کد شما باید بشه چنین چیزی:

<script type="text/javascript">
function delord(user_name, user_id){
if(confirm("براي حذف سفارش مطمئنيد؟")){
window.location="?act=orders&k=usr&u=" + user_name + "&id=" + user_id
}
}
</script>



<?php
while($row=mysql_fetch_assoc($res))
{
echo '<tr><td><a onclick="delord(' . $row["user_name"] . ', ' . $row["user_id"] . ');"><img src="../_images/del.png" class="delpic"/></a></td>';
}
?>


موفق باشی

Prosoft
یک شنبه 16 بهمن 1390, 19:49 عصر
سلام

شما داری برای هر رکورد یه تابع ایجاد میکنی و این جالب نیست! اگه 100 رکورد داشته باشی، شما داری 100 تا تابع با یک نام ایجاد میکنی، و هر گزینه‌ی حذفی که زده می‌شه، در اصل باید همه اینا رو فراخوانی کنه اما چون همشون یک نام دارن، میره آخرین تابع ایجاد شده با همون نام رو اجرا میکنه! برا همین شما میگید آخرین رکورد رو همیشه حذف می‌کنه!
شما باید اون تابع رو بیرون حلقه ایجاد کنی تا فقط 1 بار ایجاد بشه و دوتا پارامتر ورودی براش ایجاد کنی! و در هر رکورد، فقط فراخوانی همراه پارامترها رو انجام میدی!
یعنی کد شما باید بشه چنین چیزی:

<script type="text/javascript">
function delord(user_name, user_id){
if(confirm("براي حذف سفارش مطمئنيد؟")){
window.location="?act=orders&k=usr&u=" + user_name + "&id=" + user_id
}
}
</script>



<?php
while($row=mysql_fetch_assoc($res))
{
echo '<tr><td><a onclick="delord(' . $row["user_name"] . ', ' . $row["user_id"] . ');"><img src="../_images/del.png" class="delpic"/></a></td>';
}
?>


موفق باشی