2014-02-07 76 views
0

我已经尽我所能对此问题进行了研究,并且迄今尚未找到可行的解决方案。提交表格后关闭标签

本质上,我所拥有的是一个PHP页面,用户在其中输入匹配结果,表单操作包括一个将它们带到更新的联赛表格的标题。我从用户输入结果的页面禁用了缓存,但这不适用于在浏览器中单击的“后退”按钮。如果他们点击返回,页面会显示它以前的状态,在他们输入的最后一个分数之前,如果提交了这些分数,就会在联盟表中造成实际问题。

在那个时候,我已经有了一个表单动作来运行一个新的标签页,这意味着他们不能在浏览器中点击'返回',而是必须使用'后退'链接,渲染。太棒了,但问题是,表单页面在其原始选项卡中仍处于打开状态。

有没有办法解决这个问题。我意识到调用javascript closeWindow()函数'onSubmit'将在数据库更新之前关闭窗口。

这是我到目前为止,新选项卡打开,但原来的一个仍然打开。 欲了解更多信息,我需要关闭的页面将通过主页上的链接在新标签中打开。

<?php 

require_once "pdo_enl_connect.php"; 
$database=dbNB_connect(); 

echo "<table>"; 
echo "<form action=\"update_table_a.php\" target=\"_blank\" method=\"post\">"; 
$query=$database->query("SELECT team_id, team_name, team_score, opposition_score,  opposition_id, opposition_name from results_a"); 

while ($row = $query->fetch(PDO::FETCH_NUM)) { 
echo "<input type=\"hidden\" name=\"team[]\" value=\"$row[1]\"> 
    <input type=\"hidden\" name=\"opposition[]\" value=\"$row[5]\"> 
    <input type=\"hidden\" name=\"team_id[]\" value=\"$row[0]\"> 
    <input type=\"hidden\" name=\"opposition_id[]\" value=\"$row[4]\"> 
    <tr><td>$row[1]<td><input type=\"text\" name=\"team_score[]\" value=\"$row[2]\"  <td> 
    <input type=\"text\" name=\"opposition_score[]\" value=\"$row[3]\"><td>$row[5] </tr>"; 
} 
echo "</table>"; 
$query2=$database->query("SELECT team_score, opposition_score from results_a"); 

while ($row = $query2->fetch(PDO::FETCH_NUM)) { 

echo "<input type=\"hidden\" name=\"prev_team_score[]\" value=\"$row[0]\"> 
     <td><input type=\"hidden\" name=\"prev_o_score[]\" value=\"$row[1]\">"; 
} 


echo "<input type=\"submit\" value=\"Go\" name=\"go\">"; 

echo "</form>"; 

    if(isset($_POST['go'])) { 
echo "<script>window.close();</script>"; 
} 

?> 
+0

更新后未设置变量.... – user1844933

+0

对不起,请您详细说明一下吗? – DJC

回答

0
<?php  


    if(isset($_POST['buttonname'])) 
echo "<script>window.close();</script>"; 

?> 

和删除window.close()onSubmit

+0

我试过了,但它只是关闭窗口,因为它打开。我将它放在表单页面上的php脚本的末尾,这是正确的位置吗? – DJC

+0

是的,这是正确的位置 – CodeFanatic

+0

嗯,仍然没有运气,我也试过这之前,因为已经看到它张贴在本网站的其他地方。新标签打开,但这个仍然是开放的 – DJC

0

使用AJAX的的onsubmit也许尝试?

var request = new XMLHttpRequest(); 
request.open("POST","submitdata.php",false); 
request.onload = function(){ window.close(); }; 
request.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
request.send("name="+name+"&surname="+surname+"&pass="+pass...); 

这将表单数据发送到PHP脚本,更新数据,然后响应加载后,它会关闭该窗口。这是同步的(请求打开时为“false”),所以用户不应该把数据库搞乱。