如何刷新页面并发送变量

时间:2019-11-01 12:06:16

标签: javascript php html

我有一个php页面,在这里我按一个按钮在另一页上编辑mysql db记录: 页面名称'distintaBase.php' 这里有一个名称列表,即产品名称。每个产品包含一个组件列表。 当我按下一种产品的编辑按钮时,我将重定向到新页面“ modifDistBase.php”。

<a href="modifDistBase.php?dist_base=<?php echo $dist_base; ?>"></a>

$ dist_base变量被传递到新页面。我在页面标题上使用

<h2>Modifica distinta base <?php echo $_GET['dist_base']; ?></h2>

然后加载mysql数据库

<?php 
                $dist_base = $_GET['dist_base'];
                $sql = "SELECT $dist_base.Id, $dist_base.Designator, $dist_base.Quantity, $dist_base.Description, $dist_base.Package, 
                                $dist_base.Manufacturer, $dist_base.Pn_Manufacturer, $dist_base.Pn_Utterson, $dist_base.Mounted
                                FROM $dist_base";                                                                                                     
?>

按下添加按钮,我添加了一个新组件

if(isset($_POST['add_item'])){
                    $designator = $_POST['designator'];
                    $quantity = $_POST['quantity'];
                    $description = $_POST['description'];
                    $package = $_POST['package'];
                    $manufacturer = $_POST['manufacturer'];
                    $pn_manufacturer = $_POST['pn_manufacturer'];
                    $pn_utterson = $_POST['pn_utterson'];
                    $mounted = $_POST['mounted'];
                    $sql = "INSERT INTO $dist_base (designator,quantity,description,package,manufacturer,pn_manufacturer,pn_utterson,mounted)
                                            VALUES ('$designator','$quantity','$description','$package','$manufacturer','$pn_manufacturer','$pn_utterson','$mounted')";

                 if ($conn->query($sql) === TRUE) {                         
                        echo '<script>window.location.replace("modifDistBase.php?dist_base=" + $dist_base.value)</script>';
                    } else {
                        echo "Errore: " . $sql . "<br>" . $conn->error;
                        }
                }           

JavaScript可能有问题。

echo '<script>window.location.replace("modifDistBase.php?dist_base=" + $dist_base.value)</script>';

新组件已添加到数据库(例如,具有#5 id),但未显示在页面modifDistBase.php

如果我在浏览器或f5上按刷新,现在我可以看到新组件(#5 id),但是在数据库中添加了一个新组件#6,其项与#5相同

PS -标头已由菜单页面发送 -尝试过window.location.href,但结果相同

2 个答案:

答案 0 :(得分:3)

为什么不尝试:

header('Location: modifDistBase.php?dist_base='.$dist_base);

您可以立即重定向到页面+变量,而不是echo javascript

答案 1 :(得分:1)

您的代码中有一些要解决的问题

注意您输出的javascript

echo '<script>window.location.replace("modifDistBase.php?dist_base=" + $dist_base.value)</script>';

将精确地

<script>window.location.replace("modifDistBase.php?dist_base=" + $dist_base.value)</script>

无需检查与目标相关的js的正确性,马上就可以看到您应该写的代替

echo '<script>window.location.replace("modifDistBase.php?dist_base="' . $dist_base . '")</script>';

将php值注入到javascript字符串中。 (您也忘记了b.t.w的双引号)

如果您对javascript存有疑问,可以在浏览器中检查并查看页面(右键单击并单击“检查元素”或“分析元素”)。

请记住,不建议您接受用户输入并按SQL指令中的说明使用它。在将它们放入sql之前,应该进行一些清理并使用准备好的语句或对这些值进行转义。

也就是说,您执行的javascript重定向看起来有些奇怪,也许您可​​以从php脚本进行重定向而无需要求客户端这样做。查看标头php函数以获取有关服务器端重定向完成的说明。