我正在使用两个php文件。第一个文件包含一个搜索引擎,在第二个php文件中输出结果。第二个php文件显示在第一个php文件的搜索引擎下面的iframe中。此文件还包含需要使用post提交的数据。我可以提交表单并将其重定向到第3个php文件。但我不想离开当前页面。到目前为止,我能做的是在同一页面上调用isset函数并将insert命令激发到我的表。但它刷新了第二个php文件。刷新将重置从第一个php文件传递的搜索值,这是不好的。请帮忙
这是我的第二个php文件:
<!DOCTYPE html>
<html>
<head>
<title>RFC System</title>
<script src="jquery-1.12.4.js"></script>
<link rel="stylesheet" type="text/css" href="style2.css">
<link rel="stylesheet" type="text/css" href="modal.css">
</head>
<body>
<?php
require ("../funcs.php"); site_security();
set_error_handler ("my_error_handler");
set_time_limit(0);
date_default_timezone_set ("Asia/Manila");
require("../connmysql.php");
$session_user_id = $_SESSION["USERCID"];
$session_branch = $_SESSION["BRANCHCODE"];
$branchname=$_POST['branchname'];
$empbio=$_POST['empbio'];
$dtrdate_from=$_POST['dtrdate_from'];
$dtrdate_to=$_POST['dtrdate_to'];
##########HELP HERE!
if(isset($_POST['reason'])){
#save to database without refreshing the page
}
#####################
if((empty($branchname)) || (empty($empbio)) || (empty($dtrdate_from)) || (empty($dtrdate_to))){
echo "<font color='#FF0000'><b>Please fill-in all fields to start search</b></font>";
}else{
$startDate = DateTime::createFromFormat("Y/m/d","$dtrdate_from",new DateTimeZone("Asia/Manila"));
$endDate = DateTime::createFromFormat("Y/m/d","$dtrdate_to",new DateTimeZone("Asia/Manila"));
$periodInterval = new DateInterval( "P1D" ); // 1-day, though can be more sophisticated rule
$period = new DatePeriod( $startDate, $periodInterval, $endDate );
$queryname=mysqli_query($conn,"select a.nsemp_fname,a.nsemp_mname,a.nsemp_lname,a.nsemp_sufixname,a.nsemp_empid,a.nsemp_bionum,a.nsemp_brcode from rfc_prf_nsemp a where a.nsemp_bionum=12476")or die();
while($row=mysqli_fetch_array($queryname)){
$fname=$row[0];
$mname=$row[1];
$lname=$row[2];
$suffix=$row[3];
$empid=$row[4];
$bionum=$row[5];
$brcode=$row[6];
}
echo"<hr/>
<h3><b>Name:</b>$fname $mname[0] $lname $suffix<br/>
<b>Employee No:</b> $empid<br/>
<b>Branch:</b> $brcode<br/></h3>
<table class='x'><tr>";
foreach($period as $date){
$x = $date->format("Y-m-d");
$day = date('l', strtotime($x));
if($day=="Sunday"){$background="#00e673";}else if($day=="Saturday"){$background="#ffff99";}else{$background="#ffffff";}
echo"<td height='150px' style='border-style: solid; background:$background'>
<form method='post' action='#'>
<b><font color='#1a1aff'>$x<br/>$day</font></b><br/><br/>";
$query=mysqli_query($conn,"select dtr_time,(CASE in_or_out WHEN 0 THEN 'IN' WHEN 1 THEN 'OUT' END) AS status,datacid from rfc_bio_dtr where dtr_date='$x' and empbio='12476';")or die(mysqli_error());
$check="";
while($row=mysqli_fetch_array($query)){
echo "$row[0] $row[1] <br/>";
$check .=$row[1];
}
if(preg_match('(IN)', $check) && preg_match('(OUT)', $check)) { echo" ";}else{
$queryReason=mysqli_query($conn,"select tk_reason_id,tk_reason_desc from rfc_timekeeping_param;")or die();
echo "<br/><br/>Remarks:<select name='' id=''>";
while($row=mysqli_fetch_array($queryReason)){
echo "<option value='$row[0]'>$row[1]</option>";
}
echo"</select><br/>Notes:<br/><textarea></textarea><input type='submit' value='save' name='reason' id='reason' class='totobutton'>";
}
echo"</form></td>";
}
}
?>
</body>
这是使用jquery / ajax的更新代码。下一个表数据存在问题,它们不会被提交。只提交了第一个表格数据:
<!DOCTYPE html>
<html>
<head>
<title>RFC System</title>
<script src="jquery-1.12.4.js"></script>
<link rel="stylesheet" type="text/css" href="style2.css">
<link rel="stylesheet" type="text/css" href="modal.css">
<script>
$(function () {
$('#myform').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'savetodb.php',
data: $('#myform').serialize(),
success: function () {
alert('form was submitted');
}
});
});
});
</script>
</head>
<body>
<?php
require ("../funcs.php"); site_security();
set_error_handler ("my_error_handler");
set_time_limit(0);
date_default_timezone_set ("Asia/Manila");
require("../connmysql.php");
$session_user_id = $_SESSION["USERCID"];
$session_branch = $_SESSION["BRANCHCODE"];
$branchname=$_POST['branchname'];
$empbio=$_POST['empbio'];
$dtrdate_from=$_POST['dtrdate_from'];
$dtrdate_to=$_POST['dtrdate_to'];
if((empty($branchname)) || (empty($empbio)) || (empty($dtrdate_from)) || (empty($dtrdate_to))){
echo "<font color='#FF0000'><b>Please fill-in all fields to start search</b></font>";
}else{
$startDate = DateTime::createFromFormat("Y/m/d","$dtrdate_from",new DateTimeZone("Asia/Manila"));
$endDate = DateTime::createFromFormat("Y/m/d","$dtrdate_to",new DateTimeZone("Asia/Manila"));
$periodInterval = new DateInterval( "P1D" ); // 1-day, though can be more sophisticated rule
$period = new DatePeriod( $startDate, $periodInterval, $endDate );
$queryname=mysqli_query($conn,"select a.nsemp_fname,a.nsemp_mname,a.nsemp_lname,a.nsemp_sufixname,a.nsemp_empid,a.nsemp_bionum,a.nsemp_brcode from rfc_prf_nsemp a where a.nsemp_bionum=12476")or die();
while($row=mysqli_fetch_array($queryname)){
$fname=$row[0];
$mname=$row[1];
$lname=$row[2];
$suffix=$row[3];
$empid=$row[4];
$bionum=$row[5];
$brcode=$row[6];
}
echo"<hr/>
<h3><b>Name:</b>$fname $mname[0] $lname $suffix<br/>
<b>Employee No:</b> $empid<br/>
<b>Branch:</b> $brcode<br/></h3>
<table class='x'><tr>";
foreach($period as $date){
$x = $date->format("Y-m-d");
$day = date('l', strtotime($x));
if($day=="Sunday"){$background="#00e673";}else if($day=="Saturday"){$background="#ffff99";}else{$background="#ffffff";}
echo"<td height='150px' style='border-style: solid; background:$background'>
<b><font color='#1a1aff'>$x<br/>$day</font></b><br/><br/>";
$query=mysqli_query($conn,"select dtr_time,(CASE in_or_out WHEN 0 THEN 'IN' WHEN 1 THEN 'OUT' END) AS status,datacid from rfc_bio_dtr where dtr_date='$x' and empbio='12476';")or die(mysqli_error());
$check="";
while($row=mysqli_fetch_array($query)){
echo "$row[0] $row[1] <br/>";
$check .=$row[1];
}
if(preg_match('(IN)', $check) && preg_match('(OUT)', $check)) { echo" ";}else{
$queryReason=mysqli_query($conn,"select tk_reason_id,tk_reason_desc from rfc_timekeeping_param;")or die();
?>
<form id="myform">
<select name="reason" value="reason">
<?php
while($row=mysqli_fetch_array($queryReason)){
echo "<option value='$row[0]'>$row[1]</option>";
}
?></select>
<textarea name="notes" value="notes"></textarea><br>
<input name="submit" type="submit" value="Submit">
</form><?php
}
echo"</td>";
}
}
?>
</body>
这是savetodb.php
<?php
require("../connmysql.php");
$fname=$_POST['reason'];
$lname=$_POST['notes'];
$queryx=mysqli_query($conn,"insert into test (fname,lname) values ('$fname','$lname');")or die(mysqli_error());
?>
答案 0 :(得分:1)
你已经加载了jQuery,所以从一个onclick处理程序启动AJAX并将保存放在一个完全不同的PHP文件中(一个只输出“OK”或“ERROR:something。”请参阅http://pqxb.qr.ai了解相关内容教程。