我希望在没有刷新的情况下在DataBase中写入后更新html表的两行。现在一切正常,除非这件事我必须刷新页面以查看表中的修改值。
这是我的网页:
first.php
<?php
require_once('config.php');
$id=$_GET['id'];
$sql="SELECT S.ID_student, C.name, D.h-theory, D.h-practice FROM students as S, students_details as D WHERE D.ID_student=C.ID_student AND S.ID_student=$id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo'</br></br>
<table class="my-tabel">
<tr><td>Student name</td><td>'.$row['name'].'</td></tr>
<tr><td>Hours of practice/td><td>'.$row['h-theory'].'</td></tr>
<tr><td>Hours of theory</td><td>'.$row['h-practice'].'</td></tr>
</table>';
?>
<form action="javascript:void(0);" method="post">
<label>Hours of practice:    </label> </td> <td><input type="text" id="practice" class="text" name="h_practice"/>
<label>Hours of theory:</label> </td> <td> <input type="text" id="theory" class="text" name="h_theory"/>
<input type="submit" class="send-h" value="Submit">
</form>
<script>
$('.send-h').click(function(){
$('.send-h').fadeOut();
var practice = false;
var theory = false;
practice = $('#practice').val();
theory = $('#theory').val();
var id = <?php echo json_encode($id) ?>;
jQuery.get('add.php?practice='+practice+'&theory='+theory+'&id='+id, function(data,self){
});
});
</script>
add.php
<?php
require_once('config.php');
$id=$_GET['id'];
$practice=$_GET['practice'];
$theory=$_GET['theory'];
$sql="UPDATE `student_details` SET `ore_practice`='$practice', `ore_theory`='$theory' WHERE ID_student='$id'";
$result = mysql_query($sql);
?>
提前谢谢!
答案 0 :(得分:1)
首先:
$ id = $ _GET ['id']; // mysql注入危险
$query =" ... HERE D.ID_student=C.ID_student AND S.ID_student=$id";
使用mysql_real_escape_string作为字符串 $ id是数字,所以至少要
$ query =“... HERE D.ID_student = C.ID_student AND S.ID_student =”。($ id + 0);
要添加html行,您需要在接收表单数据的函数中使用ajax。 http://api.jquery.com/jquery.ajax/
一个不那么优雅的解决方案是add.php将输出表中所需的新html:
$('.send-h').click(function(){
$.ajax({
url: 'add.php?practice='+practice+'&theory='+theory+'&id='+id,
}).done(function(html_response) {
$( "#YOUR_LIST_ID" ).append(html_response);
});
}
请记住,查询可能由于各种原因而失败。 这就是为什么你不应盲目添加你提交的数据。 add.php还必须输出“成功”标志。
所以add.php可以输出
echo json_encode(array('success'=>1, 'html'=> $generated_html)); //if all ok
或
echo json_encode(array('success'=>0, 'html'=> '')); //if all not ok
并在.done(函数(响应))中执行
var obj = jQUery.parseJSON(response);
if (obj.success == 1) {
$( "#YOUR_LIST_ID" ).append(obj.html);
}else{
alert('dberror');
}
您也可以使用数据表(http://datatables.net/examples/api/add_row.html) 如果你打算经常使用这种东西。
答案 1 :(得分:0)
我相信你应该能够做到以下
<script>
$('.send-h').click(function(){
$('.send-h').fadeOut();
var practice = false;
var theory = false;
practice = $('#practice').val();
theory = $('#theory').val();
var id = <?php echo json_encode($id) ?>;
jQuery.get('add.php?practice='+practice+'&theory='+theory+'&id='+id, function(data,self){
console.log(data); // Shows the returned data in the console
$('#my_id').html(data); // Shows the returned data in an element with the id `my_id`
});
});
</script>
您可以在echo
中add.php
添加回复,因此echo $result;
之类的内容将成为add.php
文件中的最后一行,并且应该在data
中你函数的变量。
然后您可以使用$(some_selector).html(data)
在某个选择器中显示返回的内容,也可以使用append
,$(some_selector).append(data)