رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
محل قرارگیری کد جاوااسکریپت در این کد php
#1
با سلام.

در کد زیر اطلاعاتی از دیتابیس خوانده شده و در جدولی نمایش داده میشود .در ستون آخر هر سطر یک لینک با نام تایید قرار دارد که وقتی روی کلمه تایید کلیک شد باید شماره دانشجویی همان سط را نمایش دهد ولی در این کد وقتی روی تایید هر سطر کلیک کنیم شماره دانشجویی آخرین سطر رو نمایش میدهد .
به فرض اگر سه سطر داشته باشیم با شماره دانشجویی 105 و 106 و 107 روی تایید هر سطری که کلیک کنیم شماره دانشجویی 107 رو نمایش میدهد.
لطفا راهنمایی کنید به چه صورت تغیر دهم.

البته این کد در ابتدا یک مشکل دیگه هم داشت که با کمک مدیر محترم حل شد.

while ($row1=mysql_fetch_assoc($r1))
{
$shomareh=$row1['shd'];
$r3=mysql_query("select * from nazarmo where nazarmo.shd=$shomareh");
$n3=@mysql_num_rows($r3);
if($n3<1)
{


if($os2=mysql_fetch_assoc($os))
{
//echo 'sssssssssssssssssssssssssssssssssssss';
// echo $os2['nazarost'];
//echo $os2['shd'];
// echo $os1;
}

$os3=mysql_query("select * from nazaros where nazaros.shd='$shomareh'");
$os4=@mysql_num_rows($os3);
if($os4<1)
{
$valuos='خیر';
}
else
{
$os5=mysql_fetch_assoc($os3);
$valuos=$os5['nazarost'];
}


$sar3=mysql_query("select * from nazarsar where nazarsar.shd='$shomareh'");
$sar4=@mysql_num_rows($sar3);
if($sar4<1)
{
$valusar='خیر';
}
else
{
$sar5=mysql_fetch_assoc($sar3);
$valusar=$sar5['nazar'];
}




$_SESSION['in2']=$row1['reshteh'];
$_SESSION['in3']=$row1['shd'];
$vaset=$row1['shd'];
echo '<tr>
  
 <td>'.$row1['shd'].'</td>
 <td>'.$row1['name'].'</td>
 <td>'.$row1['family'].'</td>
 <td> '.$row1['ostad'].'</td>
 <td>'.$row1['taahodd'].'</td>
 <td>'.$valusar.'</td>
 <td>'.$valuos.'</td>
 <td>'.$row1['reshteh'].'</td>
 <td>'.$row1['magh'].'</td>
 <td>'.$row1['sherkat'].'</td>
 <td><a href="" class="taga"> تایید</a></td>
</tr>';

}

}

?>

</table>
<script type="text/javascript">
$(document).ready(function() {
       
  $('.taga').click(function() {

if(confirm(" دانشجو تایید شود؟ "))
{
 var value="<?php echo $vaset; ?>";
 alert(value);
 
}
        
       });
        
       
    });
</script>

</body>
</html>

پاسخ
تشکر شده توسط:
#2
سؤال شما ربطی به PHP نداره و مربوط به Javascript میشه. باید با Siblingها توی jQuery کار کنید. تاپیک به بخش jQuery منتقل شد.
پاسخ
تشکر شده توسط: hemat
#3
با سلام و عرض ادب

اگر امکان داره راهنمایی کنید چون تا اینجای کدها رو نوشتم ولی توی این قسمت گیر افتادم و نمیدونم کد جاوااسکریپت رو چه تغیری بدم.

با تشکر
پاسخ
تشکر شده توسط:
#4
کلا بهتره کدهای جاوا اسکریپت رو آخر صفحه قرار بدید.
برای کد شما هم راحتترین راه حل رو نوشتم.

while ($row1=mysql_fetch_assoc($r1))
{
$shomareh=$row1['shd'];
$r3=mysql_query("select * from nazarmo where nazarmo.shd=$shomareh");
$n3=@mysql_num_rows($r3);
if($n3<1)
{


if($os2=mysql_fetch_assoc($os))
{
//echo 'sssssssssssssssssssssssssssssssssssss';
// echo $os2['nazarost'];
//echo $os2['shd'];
// echo $os1;
}

$os3=mysql_query("select * from nazaros where nazaros.shd='$shomareh'");
$os4=@mysql_num_rows($os3);
if($os4<1)
{
$valuos='خیر';
}
else
{
$os5=mysql_fetch_assoc($os3);
$valuos=$os5['nazarost'];
}


$sar3=mysql_query("select * from nazarsar where nazarsar.shd='$shomareh'");
$sar4=@mysql_num_rows($sar3);
if($sar4<1)
{
$valusar='خیر';
}
else
{
$sar5=mysql_fetch_assoc($sar3);
$valusar=$sar5['nazar'];
}




$_SESSION['in2']=$row1['reshteh'];
$_SESSION['in3']=$row1['shd'];
echo '<tr data-student-id="' . $row1['shd'] . '">
  
<td>'.$row1['shd'].'</td>
<td>'.$row1['name'].'</td>
<td>'.$row1['family'].'</td>
<td> '.$row1['ostad'].'</td>
<td>'.$row1['taahodd'].'</td>
<td>'.$valusar.'</td>
<td>'.$valuos.'</td>
<td>'.$row1['reshteh'].'</td>
<td>'.$row1['magh'].'</td>
<td>'.$row1['sherkat'].'</td>
<td><a href="" class="taga"> تایید</a></td>
</tr>';

}

}

?>

</table>
<script type="text/javascript">
$(document).ready(function() {

   $('.taga').click(function() {
       if(confirm(" دانشجو تایید شود؟ "))
       {
           alert($(this).closest('tr').data('studentId'));
       }
   });
   
});
</script>
</body> 
</html>

پ.ن: بهتره متغییر ها رو با اسامی معنا دار و انگلیسی انتخاب کنید تا در آینده و همچنین کمک گرفتم از دیگران کمتر دچار مشکل بشید.
...
پاسخ
تشکر شده توسط: hemat
#5
با سلام

ممنون از راهنمایی های شما دوست عزیز

اگر امکان داره در مورد کد هایی که اضافه کردید یه توضیح مختصر بدید. ممنون میشم

و یک سوال: اگر بخوام بجای اینکه شماره دانشجویی را alert کنم ,در یک متغیر جاوااسکریپت ذخیره کنم به چه صورت تغییر بدم؟


با تشکر
پاسخ
تشکر شده توسط:
#6
تو سطر 48 شماره دانشجویی (فیلد shd) در ویژگی دیتای data-student-id تگ tr قرار داده میشه.
تو سطر 76 هم وقتی رو لینک با کلاس taga کلیک میشه میره تگ tr والدش رو پیدا میکنه و ازش ویژگی دیتای student-id رو بدست میاره.
...
پاسخ
تشکر شده توسط: hemat
#7
با سلام و عرض ادب
 
ممنون از راهنمایی شما .
 
با کمک شما مشکلم حل شد و مطالبی رو هم یاد گرقتم
 
یک سوال:  من یه نکته ای رو خوب متوجه نشدم و اینکه ویژگی  data-student-id  بر چه اساسی نام گذاری میشه؟ و اگر بخواهیم
 
یک نام دیگه در نظر بگیریم به چه صورت میشه. و دوم اینکه  چرا در data('studentId')   این نام قرار گرفت  studentId  منظورم اینکه چرا  دقیقا مثل ویزگی نیست؟
 
 
با تشکر
پاسخ
تشکر شده توسط:
#8
ویژگی -data از مواردی هست که در html5 اضافه شده به این ترتیب که میتونید بعد از -data نام دلخواه خودتون رو بنویسید و مقدار دهی کنید.
مثل data-id ، data-name ، data-name-name-name و ..... و مقدارش میتونه یه متن ساده یا یه شی باشه.
اینکه چرا نحوه استفاده از این ويژگی متفاوته این هم بر میگرده به استاندارد w3c و جاوا اسکریپت به اینگونه که کلمه -data رو حذف میکنیم سپس تمام - (dash) ها رو حذف کرده و حرف بعد از هر - (dash) رو به حرف بزرگ تبدیل میکنیم.

برای آشنایی بیشتر با این attribute لینک های زیر رو هم میتونید مطالعه کنید:
http://www.w3.org/html/wg/drafts/html/ma...attributes
https://developer.mozilla.org/en-US/docs...attributes
https://api.jquery.com/data/
...
پاسخ
تشکر شده توسط: __undercover
#9
برای ذخیره در متغییر هم بصورت زیر عمل کنید.
var studentId = $(this).closest('tr').data('studentId');
...
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان