表单值在php中没有传递给self


Form values not passing to self in php

转述问题:

我正在更新一个web应用程序从一个独立的PHP页面的东西,是数据库驱动的,并有管理控制(旧页:uoflclimbingclub.com/everestchallenge/elevationcounter/)。

我在两个不同的页面上使用表单:一个管理页面和一个显示页面。表单将隐藏输入的值发送到显示页面上的一个变量中,该变量在sql语句中定义一个字段名。

返回的数据行将在显示页面上使用,并结合CSS和PHP显示图形。显示页面也是要更新数据的地方。

当从管理页面执行时,代码执行并成功显示页面,但从同一页面执行时,即使成功更新了数据库中的数据,也无法显示页面。谁能告诉我我哪里做错了?我已经搜索了我能想到的一切,并阅读了PHP文档来找到一个解决方案,但到目前为止还没有运气,我仍然在寻找一个解决方案,任何帮助都会非常感激。

我的代码

链接到显示页面的管理页面:http://shemsimmons.com/uoflclimbingclub/everestchallenge/admin

显示页面的代码如下:

    <?php 
    ob_start();
    include $_SERVER["DOCUMENT_ROOT"].'/uoflclimbingclub/everestchallenge/inc/conn/ulcc_user.php';
    $team = mysqli_real_escape_string($con, $_POST['teamname']);
    $increment = "/uoflclimbingclub/images/icons/favicon.png";
    $getElevation = "SELECT * FROM everest2014 WHERE team= '$team'";
    $result = mysqli_query($con, $getElevation);
    echo "The Team Name is:";
    echo $team;
    while($climbs = mysqli_fetch_assoc($result)){
        if(isset($_POST['update'])){
            foreach ($_POST as $key => $value){
              $$key=$value;
            }
            $updateElevation = "UPDATE everest2014 
                                SET 
                                rope1=$rope1Climbs,
                                rope2=$rope2Climbs,
                                rope3=$rope3Climbs,
                                rope4=$rope4Climbs,
                                rope5=$rope5Climbs,
                                rope6=$rope6Climbs,
                                rope7=$rope7Climbs,
                                rope8=$rope8Climbs,
                                rope9=$rope9Climbs,
                                rope10=$rope10Climbs,
                                rope11=$rope11Climbs,
                                rope12=$rope12Climbs,
                                rope13=$rope13Climbs
                                WHERE team='$team'";
            $retval = mysqli_query($con, $updateElevation);
            if(! $retval ){
              die('Could not update data: ' . mysqli_error());
            }
            header('Location: '.$_SERVER['PHP_SELF']);
            mysqli_close($conn);
        } else {
?>
<!DOCTYPE html>
<html>
<head>
<title>TEAM <?php echo $team; ?> Counter</title>
<link rel="icon" type="image/png" href="/uoflclimbingclub/images/icons/favicon.png">
<link rel="stylesheet" type="text/css" href="/uoflclimbingclub/everestchallenge/css/elevationstyle.php" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="/uoflclimbingclub/everestchallenge/js/adder.js"></script>
<script type="text/javascript" src="/uoflclimbingclub/everestchallenge/js/jscolor/jscolor.js"></script>
<style>
.point { 
  border-bottom: 25px solid <?php echo $climbs["colour"]; ?>;
}
.shaft, #teambg{
  background: <?php echo $climbs["colour"]; ?>;
}
</style>
</head>
<body>
<?php
        include $_SERVER["DOCUMENT_ROOT"].'/uoflclimbingclub/everestchallenge/inc/everestVar.php';
        include $_SERVER["DOCUMENT_ROOT"].'/uoflclimbingclub/everestchallenge/inc/set_elevation_inc.php';
?>
</body>
</html>
<?php 
        }
    }
    mysqli_free_result($result);
?>

everestVar.php包含的只是一堆简单的算术,使样式看起来很漂亮(div高度,将绳爬升数转换为爬升总米数等)

另一个include是body html:

    <!-- Graphic of Everest -->
<img src="/uoflclimbingclub/everestchallenge/img/summit.png">
<div id="everestwrapper"><div id="everestwrap">
    <div id="everest"><img src="/uoflclimbingclub/everestchallenge/img/elevationmetre.png"><div id="metres" style="bottom:<?php echo $elevation; ?>%;"><span id="elevation"><?php echo $elevationClimbed; ?></span><img src="/uoflclimbingclub/everestchallenge/img/metres.png"></div></div>
    <div id="lightbg"></div>
    <div id="teambg" class="everestfill" style="height:<?php echo $elevation; ?>%;"></div>
</div></div>
<img src="/uoflclimbingclub/everestchallenge/img/eventname.png">
<!-- Growing Rope Arrows -->
<div id="ACC">
    <form id="climbsInput" action="/uoflclimbingclub/everestchallenge/setteam.php" method="post">
    <div id="medWall" class="medWall"> 
        <div id="rope1" style="height:<?php echo $rope1Up; ?>%;">
            <div class="point"><?php echo $rope1 ?>m</div>
            <div class="shaft">1</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope1Climbs" value="<?php echo $climbs["rope1"]; ?>" /></div></div>
        <div id="rope2" style="height:<?php echo $rope2Up; ?>%;">
            <div class="point"><?php echo $rope2 ?>m</div>
            <div class="shaft">2</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope2Climbs" value="<?php echo $climbs["rope2"]; ?>" /></div></div>
        <div id="rope3" style="height:<?php echo $rope3Up; ?>%;">
            <div class="point"><?php echo $rope3 ?>m</div>
            <div class="shaft">3</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope3Climbs" value="<?php echo $climbs["rope3"]; ?>" /></div></div>
        <div id="rope4" style="height:<?php echo $rope4Up; ?>%;">
            <div class="point"><?php echo $rope4 ?>m</div>
            <div class="shaft">4</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope4Climbs" value="<?php echo $climbs["rope4"]; ?>" /></div></div>
        <div id="rope5" style="height:<?php echo $rope5Up; ?>%;">
            <div class="point"><?php echo $rope5 ?>m</div>
            <div class="shaft">5</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope5Climbs" value="<?php echo $climbs["rope5"]; ?>" /></div></div>
    </div>
    <div id="longWall" class="tallWall">
        <div id="rope6" style="height:<?php echo $rope6Up; ?>%;">
            <div class="point"><?php echo $rope6 ?>m</div>
            <div class="shaft">6</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope6Climbs" value="<?php echo $climbs["rope6"]; ?>" /></div></div>
        <div id="rope7" style="height:<?php echo $rope7Up; ?>%;">
            <div class="point"><?php echo $rope7 ?>m</div>
            <div class="shaft">7</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope7Climbs" value="<?php echo $climbs["rope7"]; ?>" /></div></div>
        <div id="rope8" style="height:<?php echo $rope8Up; ?>%;">
            <div class="point"><?php echo $rope8 ?>m</div>
            <div class="shaft">8</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope8Climbs" value="<?php echo $climbs["rope8"]; ?>" /></div></div>
    </div>
    <div id="shortWall" class="shortWall">
        <div id="rope9" style="height:<?php echo $rope9Up; ?>%;">
            <div class="point"><?php echo $rope9 ?>m</div>
            <div class="shaft">9</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope9Climbs" value="<?php echo $climbs["rope9"]; ?>" /></div></div>
        <div id="rope10" style="height:<?php echo $rope10Up; ?>%;">
            <div class="point"><?php echo $rope10 ?>m</div>
            <div class="shaft">10</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope10Climbs" value="<?php echo $climbs["rope10"]; ?>" /></div></div>
        <div id="rope11" style="height:<?php echo $rope11Up; ?>%;">
            <div class="point"><?php echo $rope11 ?>m</div>
            <div class="shaft">11</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope11Climbs" value="<?php echo $climbs["rope11"]; ?>" /></div></div>
        <div id="rope12" style="height:<?php echo $rope12Up; ?>%;">
            <div class="point"><?php echo $rope12 ?>m</div>
            <div class="shaft">12</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope12Climbs" value="<?php echo $climbs["rope12"]; ?>" /></div></div>
        <div id="rope13" style="height:<?php echo $rope13Up; ?>%;">
            <div class="point"><?php echo $rope13 ?>m</div>
            <div class="shaft">13</div>
            <div class="climbCounter ropeInput"><img src="<?php echo $increment; ?>" class="addClimb" /><input type="text" class="climbs" name="rope13Climbs" value="<?php echo $climbs["rope13"]; ?>" /></div></div>
    </div>
    <?php echo "<input type='hidden' name='teamname' value='" . $climbs['team'] . "' />"; ?>
    <div style="clear:both;padding-top:80px;"><input name="update" type="submit" value="Update Elevation"/></div>
    </form>
</div><!-- End ACC -->

原始问题:我有一些代码,工作和不工作。它在从外部页面执行时有效,但在从同一页面执行时不起作用。

<input type='hidden' name='name' value='value' />

上面的输入将一个值传递给一个PHP页面,该页面从SQL数据库加载数据。该值存储在一个变量中,在几个SQL语句中使用。

$name = mysqli_real_escape_string($con, $_POST['name']);
$select = "SELECT * FROM table WHERE `name`= '$name'";
$update = "UPDATE table SET (multiple fields) WHERE `name`='$name'";

它从外部页面完美地工作,但是当我尝试从同一页面更新数据时,使用相同的输入字段,然后发生奇怪的事情。该值似乎没有传递,但不知何故,数据库正在成功更新。

当我说它似乎没有被传递,我的意思是我已经把echo语句在我的代码中找到它在哪里打破,没有在哪里变量有一个值,页面加载空白,如果变量没有值,页面不显示(内容和样式取决于数据库),但由于某种原因,数据被成功发送。我可以点击浏览器上的后退按钮,刷新页面,数据刷新显示更新。

我无法理解为什么变量会为输出数据工作,而不是为传入数据工作,并且没有显示任何值。有人知道发生了什么吗?

如果在点击后退按钮时页面会刷新以显示更新,那么刷新页面将是解决方案。

要刷新页面,应该使用以下PHP代码:

头(地点:currentURL);

检查表单元素中的action属性。确保它被设置为您正在处理的文件的名称。

页面是空白的,因为你的php脚本有一个内部错误。在您解决这个问题之前,不会显示任何内容。

试试这个. .

if ($_POST['submit']){
      ... code to update database here...
 }