在php中更新查询sql之后更新表单值

时间:2015-10-20 09:30:24

标签: php mysql forms

您好我的问题是在使用查询更新数据库后,表单中的值不会更改,即使代码底部的相同值(例如team1)给了我更新值。要更新表单中的值,我要刷新页面。

<form action="" method="post" id="form-partite">
    Team Home: <input type="text" name="team1" value="<?php echo $team1 ?>">
    Team Away: <input type="text" name="team2" value="<?php echo $team2 ?>">
    <input type="submit" name="submit" id="submit">
</form>
<?php 
    if (isset($_POST['submit'])) {
        if ($_POST['team1'] == "" || $_POST['team2'] == ""){
            echo "Devi inserire entrambe le squadre";
        } else {
            $team1 = $_POST['team1'];
            $team2 = $_POST['team2'];
            $data = array(
                'team1' => $team1,
                'team2' => $team2
            );
            global $wpdb;
            $wpdb -> update( wp_partite, $data, array( id => '1' ) );
            global $wpdb;
            $partita = $wpdb -> get_row("SELECT team1, team2 FROM wp_partite");
            $team1 = $partita -> team1;
            $team2 = $partita -> team2;
            echo "Partita inserita: " . $team1 . " vs " . $team2 . "!";
            unset($_POST);
        }
        }

2 个答案:

答案 0 :(得分:0)

不要在PHP之前回显表单,而是在PHP之后执行:

<?php 
    if (isset($_POST['submit'])) {
        if ($_POST['team1'] == "" || $_POST['team2'] == ""){
            echo "Devi inserire entrambe le squadre";
        } else {
            $team1 = $_POST['team1'];
            $team2 = $_POST['team2'];
            $data = array(
                'team1' => $team1,
                'team2' => $team2
            );
            global $wpdb;
            $wpdb -> update( wp_partite, $data, array( id => '1' ) );
            global $wpdb;
            $partita = $wpdb -> get_row("SELECT team1, team2 FROM wp_partite");
            $team1 = $partita -> team1;
            $team2 = $partita -> team2;
            echo "Partita inserita: " . $team1 . " vs " . $team2 . "!";
            unset($_POST);
        }
    }
?>
<form action="" method="post" id="form-partite">
    Team Home: <input type="text" name="team1" value="<?php echo $team1 ?>">
    Team Away: <input type="text" name="team2" value="<?php echo $team2 ?>">
    <input type="submit" name="submit" id="submit">
</form>

答案 1 :(得分:0)

正如Luis所指出的那样,在使用它的变量之前总是调用PHP。 也不要取消设置$ _POST,因为它是一个全局变量,不能取消设置。 取消设置全局变量是一种不好的做法。避免它。

另外,在检查$ _POST ['submit']之前定义$ team1和$ team2,以便它们始终可用并且不会给出未定义的变量错误。

使用trim,因为您不希望用户填写表单中的空格。

你可以取消设置$ _POST中的team1和team2偏移。

以下是代码:

    <?php 

    $team1 = $team2 = ''; // ADD THIS LINE, else form will show undefined variable error.

    if (isset($_POST['submit'])) {
        if (trim($_POST['team1']) == "" || trim($_POST['team2']) == ""){  // Modified
            echo "Devi inserire entrambe le squadre";
        } else {
            $data = array(
                'team1' => $_POST['team1'], // Modified
                'team2' => $_POST['team2'] // Modified
            );
            global $wpdb;
            $wpdb -> update( wp_partite, $data, array( id => '1' ) );
            global $wpdb;
            $partita = $wpdb -> get_row("SELECT team1, team2 FROM wp_partite");
            $team1 = $partita -> team1;
            $team2 = $partita -> team2;
            echo "Partita inserita: " . $team1 . " vs " . $team2 . "!";
            unset($_POST['team1']); // Modified
            unset($_POST['team2']); // Modified
        }
    }
?>
<form action="" method="post" id="form-partite">
    Team Home: <input type="text" name="team1" value="<?php echo $team1 ?>">
    Team Away: <input type="text" name="team2" value="<?php echo $team2 ?>">
    <input type="submit" name="submit" id="submit">
</form>
相关问题