使用PHP和SQL,

时间:2018-08-22 12:50:37

标签: php sql forms

我已经花了几个小时了(在这里和谷歌搜索),但是我发现没有任何帮助我使它生效。

我正在尝试制作一种表单,并使用按钮以相同的形式具有Insert INTOUPDATE $table SET函数。

但是无论我如何尝试Update都不会从表单中复制数据。 INSERT INTO有效。但是当我尝试编辑表单时,没有数据被复制。

HTML:

<form id="contact-form" method="post" action="cms_data.php" role="form">
    <div class="col-sm-12">
        <h2>id</h2>
        <input name="id" type="text" placeholder="<?php echo $id;?>" value="1">
    </div>
    <div class="col-sm-12">
        <h2>Omschrijving</h2>
        <textarea name="omschrijving" type="text" style="height:220px;width:100%;resize:none;"><?php echo $omschrijving;?></textarea>
    </div>
    <div class="col-sm-12">
        <h2>Datum</h2>
        <input name="datum" type="text" value="<?php echo $datum;?>">
    </div>
    <div class="col-sm-12">
        <h2>Tijd</h2>
        <input name="tijd" type="text" value="<?php echo $tijd;?>">
    </div>
    <div class="col-sm-12">
        <h2>Locatie</h2>
        <input name="locatie" type="text" value="<?php echo $locatie;?>">
    </div>
    <div class="col-sm-12">
        <h2>Dresscode</h2>
        <input name="dresscode" type="text" value="<?php echo $dresscode;?>">
    </div>
    <div class="col-sm-12 text-right">
        <input type="submit" class="btn btn-success btn-send" value="Versturen" id="sent" <?php // echo $_SESSION['disabled']; ?>>
        <a href="update-cms.php">Update </a>
    </div>
</form>

CMS_DATA.php

<?php session_start();?>
<?php
    $servername = "localhost";
    $username = "xxx";
    $password = "xxx";
    $dbname = "xxx";

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    //echo '<div style="width:100%;background:green;color:#FFF;font-size:2rem;text-align:center;">Connected to '. $dbname. '</div>';

    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

$id = $_POST['id'];
$omschrijving = $_POST["omschrijving"];
$datum = $_POST["datum"];
$item = $_POST["tijd"];
$locatie = $_POST["locatie"];
$dresscode = $_POST["dresscode"];

$quote = iconv("UTF-8", "WINDOWS-1252//TRANSLIT");
$date = date('Y-m-d');
date_default_timezone_set("Europe/Amsterdam");
$time = date("h:i:sa");
$sql = "INSERT INTO $table (ID, Omschrijving, Datum, Tijd, Locatie, Dresscode )
                        VALUES ('" .$id."','" .$omschrijving."','".$datum."',' ".$item."','".$locatie."','".$dresscode."')";

if ($conn->query($sql) === TRUE) {
    echo "";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

UPDATE-CMS.php

<?php session_start();?>
<?php
    $servername = "localhost";
    $username = "xxx";
    $password = "xxx";
    $dbname = "xxx";

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    //echo '<div style="width:100%;background:green;color:#FFF;font-size:2rem;text-align:center;">Connected to '. $dbname. '</div>';

    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

$id = $_POST['id'];
$omschrijving = $_POST["omschrijving"];
$datum = $_POST["datum"];
$item = $_POST["tijd"];
$locatie = $_POST["locatie"];
$dresscode = $_POST["dresscode"];

$quote = iconv("UTF-8", "WINDOWS-1252//TRANSLIT");
$date = date('Y-m-d');
date_default_timezone_set("Europe/Amsterdam");
$time = date("h:i:sa");
$sql = "UPDATE $table SET
    Omschrijving = '$omschrijving', Datum = '$datum', Tijd = '$item', Locatie = '$locatie', Dresscode = '$dresscode' WHERE ID = '1'";

if ($conn->query($sql) === TRUE) {
    echo "Done";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

就像我说的,INSERT INTO正常工作。但是,使用更新时不会复制任何数据(值)。我只是用空行覆盖ID 1……希望有人能帮助我……在此先感谢。

3 个答案:

答案 0 :(得分:1)

您已经在表单action="cms_data.php"上定义了操作,因此负责提交该表单的按钮可以正常工作,但是另一方面,您定义了另一个按钮(anchor标记),该按钮仅具有href(因此指向另一个页面),因此,如果单击它,则不会传递任何参数。

正如我在问题下方的评论中提到的那样,我的建议是使用两个按钮,两个按钮都具有Submit属性,然后通过JavaScript处理单击它们。

捕获提交时,您可以在表单上进行动态更改,这样您的数据将被传递到所需的脚本。

处理表单中的多个按钮: Process a Form Submit with Multiple Submit Buttons in Javascript

操纵表单的action属性: How to use JavaScript to change the form action

另一个建议是您在查询中使用准备好的语句,这样您就不会受到SQL注入的攻击(从注释部分,我看到您只会在本地使用它,但这是一个好习惯)

使用Mysqli准备的语句: https://stackoverflow.com/a/24989090/5018750

答案 1 :(得分:0)

Echo只在您各自的文本框中在屏幕上显示值,而不会将该值分配给您的实际字段。

相反,您可以做的是在联系表的开头启动会话并将这些字段存储在会话变量中。

当用户选择UPDATE选项时,他将被重定向到UPDATE-CMS.php页面。在UPDATE-CMS.php中,您可以检索存储的会话变量并将其分配给实际变量。这样,您可以继承旧的和新的价值观。

答案 2 :(得分:0)

anchor just links the page it will not pass data

you are trying to have submit and update button in one form

solution:

in html5 button has formaction attribute .formaction specifies page data to be transferred .so that different button can have different action page

<form id="contact-form" method="post" action="cms_data.php" role="form">
    <div class="col-sm-12">
        <h2>id</h2>
        <input name="id" type="text" placeholder="<?php echo $id;?>" value="1">
    </div>
    <div class="col-sm-12">
        <h2>Omschrijving</h2>
        <textarea name="omschrijving" type="text" style="height:220px;width:100%;resize:none;"><?php echo $omschrijving;?></textarea>
    </div>
    <div class="col-sm-12">
        <h2>Datum</h2>
        <input name="datum" type="text" value="<?php echo $datum;?>">
    </div>
    <div class="col-sm-12">
        <h2>Tijd</h2>
        <input name="tijd" type="text" value="<?php echo $tijd;?>">
    </div>
    <div class="col-sm-12">
        <h2>Locatie</h2>
        <input name="locatie" type="text" value="<?php echo $locatie;?>">
    </div>
    <div class="col-sm-12">
        <h2>Dresscode</h2>
        <input name="dresscode" type="text" value="<?php echo $dresscode;?>">
    </div>
    <div class="col-sm-12 text-right">
        <buttin formaction="CMS-DATA.php" type="submit" class="btn btn-success btn-send" value="Versturen" id="sent" <?php // echo $_SESSION['disabled']; ?>>
        <button formaction="UPDATE-CMS.php" >Update </button>
    </div>
</form>