PDA

View Full Version : کمک در مورد ثبت اطلاعات در دیتابیس با استفاده از ajax



a.b2000
چهارشنبه 02 مرداد 1392, 15:02 عصر
سلام خدمت همه دوستان من یه فرمی به نام ثبت نمره برای استاد دارم حالا می خواستم بدونم که چطور می شه که وقتی استاد روی دکمه ثبت کلیک کرد تمام نمره ها در دیتابیس ثبت بشه
107844
اینهم کد ajax که اطلاعات رو بصورت سریالی به فرم مقصد ارسال می کنه.
107845
این کدی که نوشتم فقط آخرین سطر رو ذخیره می کنه . از استاد راهنما وقتی در رابطه با این مشکل سوال کردم گفت باید در فرم مقصدی که داده ها رو دریافت و ذخیره می کنه یه حلقه بنویسی که تمام داده های ارسالی رو ذخیره کنه حالا سوال اصلی من اینه که چطور این حلقه رو بنویسم و براساس چه مغییری کار کنه.
این کد فرم مقصد برای ذخیره اطلاعات :


<style type="text/css">
.a1{color:#AA1F00; text-align:center; font-family:Tahoma, Geneva, sans-serif; font-size:15px;};
</style>
<script type="text/javascript" src="../jquery/jquery.js"></script>
<?php
include('config.php');
include('jdf.php');
$jdate=explode('_', jdate('a_b_c_d_e_f_g_h_i_m_n_o_p_q_r_s_t_k_l_w_z_x _v_y_u_j') );

$day=$jdate[3];
$month=$jdate[9];
$year=$jdate[11];
$date3=$year.'/'.$month.'/'.$day;


$count=$_POST["count"];
$spi=$_POST["spi"];
$tittle=$_POST["tittle"];
$id_student=$_POST["student"];
$code=$_POST["code"];
$id_num=$_POST["id_num"];
$nomref=$_POST["nomref"];
$nomre=$_POST["nomre"];
$select=$_POST["select"];
if($select=="yes")
$date="امکان اعتراض وجود ندارد";
else if($select=="no")
$date=$_POST["date2"];
$final=$_POST["final"];
if($final=="protest")
$final2="1";
else if($final=="fina")
$final2="2";
if(($month >=4)and($month <11))
$nimsal="اول";
else if(($month >=11)and($month<7))
$nimsal="دوم";

$date_fr_to=$_POST['date_fr_to'];
$date_fr_to=$_POST['date_fr_to'];
$date_fr_from=$_POST['date_fr_from'];
$date_tr_to=$_POST['date_tr_to'];
$date_tr_from=$_POST['date_tr_from'];
$date_p_to=$_POST['date_p_to'];
$date_p_from=$_POST['date_p_from'];
$date_exa=$_POST['date_exa'];
if($nomre=='')
$nomre='-';
if($nomref=='')
$nomref='-';

if($date<>'')
{
if($final2==1)
{
if(($nomref=='')or($nomref=='-'))
{
if(($date_tr_to >= $date3)and($date_tr_from <= $date3))
{
$sea=mysql_query("select * from score_karshenasi where lesson_code='$code' and id_student='$id_student'
and teacher_id='$id_num' and year='$year' and nimsal='$nimsal'")or die(mysql_query());
if(mysql_num_rows($sea)<>0)
{
while($row=mysql_fetch_array($sea))
{
$score_f=$row['score_final'];
$score=$row['score'];
$date_insert=$row['date_insert'];
}
if(($score_f <>'')and($score_f<>'-'))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره این دانشجو در ترم جاری نهایی شده است!");
});
</script>
<?php
}
else if((($score_f=='-')or($score_f=='')))
{
if($date_tr_to >= $date3)
{
if($date <= $date_p_to)
{

if(($nomre > 20))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره وارد شده بیشتر از حد مجاز است");
});
</script>
<?php
}
else if(($nomre <= 20))
{
mysql_query("update score_karshenasi set score=\"$nomre\",date_eateraz=\"$date\"
where lesson_code='$code'
and id_student='$id_student'and teacher_id='$id_num' and year='$year' and nimsal='$nimsal'")
or die(mysql_query());
echo '<div class="a2">نمره موقت ویرایش شد</div>';
exit();
}
}
else if($date > $date_p_to)
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("تاریخ تعیین شده برای اعتراض بیشتر از حد مجاز است");
});
</script>
<?php
}
}
}
}
else if(mysql_num_rows($sea)==0)
{
if($date <>"امکان اعتراض وجود ندارد")
{
if(($date <= $date_p_to)and($date >= $date_p_from))
{
if(($nomre > 20))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره وارد شده بیشتر از حد مجاز است");
});
</script>
<?php
}
else if(($nomre <= 20))
{
mysql_query("insert into score_karshenasi(lesson_name,lesson_code,student_n ame,id_student,teacher_id,year
,nimsal,score_final,date_eateraz,date_insert,score )value
(\"$tittle\",\"$code\",\"$spi\",\"$id_student\",\"$id_num\",\"$year\",\"$nimsal\",\"$nomref\",\"$date\",
\"$date3\",\"$nomre\")")or die(mysql_query());
echo '<div class="a2">نمره دانشجویان با موفقیت ثبت موقت شد</div>';
mysql_close($db);
exit();
}
}
else if($date > $date_p_to)
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("تاریخ تعیین شده برای اعتراض بیشتر از حد مجاز است");
});
</script>
<?php
}
}
else
{
if(($nomre > 20))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره وارد شده بیشتر از حد مجاز است");
});
</script>
<?php
}
else if(($nomre <= 20))
{
mysql_query("insert into score_karshenasi(lesson_name,lesson_code,student_n ame,id_student,teacher_id,year
,nimsal,score_final,date_eateraz,date_insert,score )value
(\"$tittle\",\"$code\",\"$spi\",\"$id_student\",\"$id_num\",\"$year\",\"$nimsal\",\"$nomref\",\"$date\",
\"$date3\",\"$nomre\")")or die(mysql_query());
echo '<div class="a2">نمره دانشجویان با موفقیت ثبت موقت شد</div>';
mysql_close($db);
exit();
}
}
}
}
else if(($date_tr_from > $date3))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("تاریخ ثبت موقت فرا نرسیده است");
});
</script>
<?php
}
else if($date_tr_to < $date3)
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("تاریخ ثبت موقت گذشته است");
});
</script>
<?php
}
}
else
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("امکان ثبت نهایی وجود ندارد");
});
</script>
<?php
}
}
else if($final2==2)
{
if(($date_fr_from >= $date_p_to)and($date_fr_from >= $date3))
{
if($nomref<>'')
{
$sea=mysql_query("select * from score_karshenasi where lesson_code='$code' and id_student='$id_student'
and teacher_id='$id_num' and year='$year' and nimsal='$nimsal'")or die(mysql_query());
if(mysql_num_rows($sea)<>0)
{
while($row=mysql_fetch_array($sea))
{
$score_f=$row['score_final'];
}
if(($score_f <>'')and($score_f<>'-'))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره این دانشجو در ترم جاری ثبت نهایی شده است!");
});
</script>
<?php
}
else
{
if(($nomref > 20))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره وارد شده بیشتر از حد مجاز است");
});
</script>
<?php
}
else if(($nomref <= 20))
{
mysql_query("update score_karshenasi set score_final=\"$nomref\" where lesson_code='$code'
and id_student='$id_student'and teacher_id='$id_num' and year='$year' and nimsal='$nimsal'")
or die(mysql_query());
echo '<div class="a2">نمره نهایی با موفقیت ثبت شد</div>';
exit();
}
}
}
if(mysql_num_rows($sea)==0)
{
if($date <>"امکان اعتراض وجود ندارد")
{
if(($date <= $date_p_to)and($date >= $date_p_from))
{
if(($nomref > 20))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره وارد شده بیشتر از حد مجاز است");
});
</script>
<?php
}
else if(($nomref <= 20))
{
mysql_query("insert into score_karshenasi(lesson_name,lesson_code,student_n ame,id_student,teacher_id,year
,nimsal,score_final,date_eateraz,date_insert,score )value
(\"$tittle\",\"$code\",\"$spi\",\"$id_student\",\"$id_num\",\"$year\",\"$nimsal\",\"$nomref\",\"$date\",
\"$date3\",\"$nomre\")")or die(mysql_query());
echo '<div class="a2">نمره دانشجویان با موفقیت ثبت نهایی شد</div>';
mysql_close($db);
exit();
}
}
else if($date > $date_p_to)
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("تاریخ تعیین شده برای اعتراض بیشتر از حد مجاز است");
});
</script>
<?php
}
}
else
{
if(($nomref > 20))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره وارد شده بیشتر از حد مجاز است");
});
</script>
<?php
}
else if(($nomref <= 20))
{
mysql_query("insert into score_karshenasi(lesson_name,lesson_code,student_n ame,id_student,teacher_id,year
,nimsal,score_final,date_eateraz,date_insert,score )value
(\"$tittle\",\"$code\",\"$spi\",\"$id_student\",\"$id_num\",\"$year\",\"$nimsal\",\"$nomref\",\"$date\",
\"$date3\",\"$nomre\")")or die(mysql_query());
echo '<div class="a2">نمره دانشجویان با موفقیت ثبت شد</div>';
mysql_close($db);
exit();
}
}
}
}
else
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نمره نهایی را وارد کنید");
});
</script>
<?php
}
}
else if(($date_fr_from < $date_p_to) and($date_fr_from < $date3))
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("تاریخ ثبت نهایی فرا نرسیده است");
});
</script>
<?php
}
else if($date_fr_to < $date3)
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("تاریخ ثبت نهایی گذشته است");
});
</script>
<?php
}
}
else if($final2 <>1 and $final2 <>2)
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نوع ثبت را تعیین کنید");
});
</script>
<?php
}
}
else
{?>
<script type="text/javascript">
$(document).ready(function() {
alert("نوع اعتراض را تعیین کنید");
});
</script>
<?php
}

SilverLearn
چهارشنبه 02 مرداد 1392, 15:53 عصر
ببین این می تونه بهت کمک کنه ...

http://www.w3schools.com/php/php_ajax_database.asp

a.b2000
چهارشنبه 02 مرداد 1392, 17:20 عصر
مرسی دوست عزیز این چیزی که فرستادی فکر کنم تو دیتابیس جستجو میکنه و اطلاعات رو نمایش می ده

wallfa
چهارشنبه 02 مرداد 1392, 19:01 عصر
خوب این کارت رو راه میندازه ؟
http://www.tutorialspoint.com/jquery/ajax-serialize.htm

a.b2000
چهارشنبه 02 مرداد 1392, 19:32 عصر
سلام مرسی این قسمت
{ $.post( "/jquery/serialize.php", $("#testform").serialize(), function(data) { $('#stage1').html(data); }
مخصوصا خط jquery/serialize.php/" چی کار میکنه

فرزند کوروش
چهارشنبه 02 مرداد 1392, 20:38 عصر
اگه بخوای چند تا سطر رو بصورت همزمان به دیتابیس بفرستی باید اونو بصورت ارایه ارسال کنی.مثلا input box تو شرایط عادی اینجوری هست

<input type="text" name="name" />و اگه بخوای همینو بصورت ارایه بفرستی میشه

<input type="text" name="name[]" />ضمن اینکه وقتی بصورت ارایه ارسال میکنی باید توی php مقدارهای اونو توی حلقه فور بریزی تا بتونی اطلاعتشو نمایش بدی
مثلا برای مثال بالا

$name = $_POST['name'];
for($i=0;$i<count($name);$i++){
echo $name.'<br>' ;
}

و اگه بخوای بر اساس هر مقدار اونو تو دیتابیس ثبت کنی میشه :



$name = $_POST['name'];
for($i=0;$i<count($name );$i++){
// echo $name.'<br>' ;
mysql_query(" INSERT INTO tbl-name (name) VALUES ($name) ");
}
راستی سعی کن کدهایی که اینجا میزاری حتما داخل تگ php باشه تا بشه خوندش.

a.b2000
چهارشنبه 02 مرداد 1392, 21:44 عصر
سلام مرسی این کدی که من نوشتم داده ها رو وقتی که روی دکمه فرم کلیک می شه می یاد تابع ajax مربوط به خودش رو فراخوانی می کنه به فرض اگر این کد html باشه :


$karshenasi=mysql_query("select * from select_lesson_karshenasi where teacher_id='$id_num' and lesson_code='$code' and
time_s='$time1' and time_e='$time2'")or die(mysql_query());
if(mysql_num_rows($karshenasi)<>0)
{
echo'
<div id="student_kardani">
<form id="scorekarshenasi" name="scorekarshenasi" action="#" method="post">
<table cellpadding="0" cellspacing="12" align="right" width="905" height="100%" background="../images/templatemo_banner_button.png" >
<input type="text" name="student" value="'.$id_student.'" hidden="hidden" />
<input type="text" name="student" value="'.$id_student.'" hidden="hidden" />
<input type="text" name="tittle" value="'.$tittle.'" hidden="hidden" />
<input type="text" name="spi" value="'.$spi.'" hidden="hidden"/>
<input type="text" name="code" value="'.$code.'" hidden="hidden" />
<input type="text" name="id_num" value="'.$id_num.'" hidden="hidden" />
<input type="text" name="count" value="'.$count.'" hidden="hidden" />

}
echo'
<tr>
<td align="center" colspan="8">
<input type="submit" name="send" id="send2" value="ثبت"/>
<input type="reset" name="delete" id="delete2" value="انصراف" />
</td>
</tr>
</table>
</form>

حالا وقتی که روی دکمه کلیک می شه می یاد این دستور رو فراخوانی می کنه:


$("#send2").click(function(){
$("#scorekarshenasi").submit(function(){
var data=$("#scorekarshenasi").serialize();
$.ajax({
url:"save-score-karshenasi.php",
type:'POST',
data:'a='+data,
success: function(data)
{
$('.n').html(data);
}
});
return false;
});
});

حالا با چیزی که شما گفتید می یاد تمام اطلاعات رو بصورت چند آرایه مجزا یا یک آرایه ارسال می کنه(یعنی بعزای هر text یک آرایه با مقادیر مختلف) به فرم مقصد بعد تو فرم مقصد باید از حلقه for استفاده کنی .
من می خوام که با ajax این کار رو انجام بدم

فرزند کوروش
چهارشنبه 02 مرداد 1392, 22:04 عصر
روبروی تمام name ها تو اینپوت باکست علامت [] بزار

<input type="text" name="student[]" value="'.$id_student.'" hidden="hidden" />
<input type="text" name="tittle[]" value="'.$tittle.'" hidden="hidden" />
....
با ای جکس تا حالا تست نکردم ولی فک نمیکنم به مشکل بخوره! ای جکس هم بصورت ارایه پست میکنه

T.R.G.T
پنج شنبه 03 مرداد 1392, 12:09 عصر
من برای ارسال اطلاعات از این تابع استفاده میکنم کارشم خیلی سادس متد و لینک و نوع داده رو میگیره و داده رو ارسال میکنه جوابشم بهت میده


function creat_http(){
if(window.ActiveXObject){
http=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
http=new XMLHttpRequest();
}
return http;
}
function send_ajax(metod,url,send,type){
Http_Request=creat_http();
if(metod=='POST'){
Http_Request.open('POST',url,false);
Http_Request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
Http_Request.send(send);
}else{
Http_Request.open('GET',url,false);
Http_Request.send(send);
}
if(Http_Request.readyState==4){
if(Http_Request.responseText=='login_expired'){
window.location='index.php';
}else{
if(type=='text'){
response=Http_Request.responseText;
}else if(type=='xml'){
response=Http_Request.responseXML;
}
return response;
}
}
}


اما اینکه اطلاعات رو به دست بیاری خیلی سادس روی آنکلیک سابمیت یک تابع رو قرار بده داخل اون تابع مقادیر فرم رو دریافت کن بعد هم یا باهم ترکیب کن و در سرور از هم جداشون کن یا به صورت یک درخواست استاندارد ترکیب کن تا به صورت متغییر های سرور به php داده بشه
برای دریافت کردن مشخصات فرم دو روش وجود داره
1-فرم به وسیله جاوا اسکریپت ایجاد بشه
__در این صورت میتونی ... فرم ایجاد کنی وبرای هر داده یک آیدی اختصاصی ایجاد کنی بعد هم میتونی به صورت آرایه ای از آرایه ها تبدیلش کنی و به صورت یک رشته یا درخواست به سرور ارسال کنی
2-میتونی به هر داده یک آیدی خاص بدی بعد وقتی روی ارسال کلیک میکنی با استفاده از آیدی داده های هر فرم رو در یافت پردازش و ارسال کنی
3-میتونی یک هدف برای فرم مشخص کنی بعد هم ارسال کنی و نتیجه رو در هدف خاصت چاپ کنی