php - mysql仅在post包含数据的情况下更新数据

标签 php mysql

我有一个简单的 html 表单,用户可以从网站上的表格中选择 ID(所需数据),然后他可以/或不更改 2 个字段。第一个是包含 2 个值(字符串)的下拉列表,第二个是空位数量! 因此,如果用户将两个字段留空并错误地单击“发送”,则不会发生任何情况。如果用户仅更改其中一个字段,则只需更改该字段!

我已经检查了这里的每个论坛和几乎所有帖子,但仍然无法让它工作。

    <form action="viv_settings_tecaji.php" method="post">
Datum termina (izberi ID):
  <input type="number" name="ID" required><br><br>
        <!--Sprememba tega datuma (če ne želiš spremenit pusti prazno):
  <input type="date" name="nov_datum"><br><br>-->
       Sprememba statusa (če želiš da ostane isto vpiši trenutni status!:
  <select name="STATUS">
<option></option>
  <option value="zaprt">Zaprt</option>
  <option value="odprt">Odprt</option>
</select><br><br>
        Sprememba števila odprtih mest
  <input type="number" name="st_odprtih_mest"><br><br>
  <input type="submit">
</form><br>

php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "viverius_education";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

$update_status = $_POST['STATUS'];
$update_st_odprtih_mest = $_POST['st_odprtih_mest'];
$update_ID = $_POST['ID'];

if (empty($update_status) AND empty($update_status)){
    header('Location: viv_settings_tecaji_main.php'); exit;
}

  else{  
$sql = "UPDATE razpisani_tecaji 
SET 
STATUS = IF('$update_status'='',STATUS,'$update_status'),
ST_ODPRTIH_MEST = IF('$update_st_odprtih_mest'='',STATUS,'$update_st_odprtih_mest'),
WHERE ID_TECAJA = $update_ID";
}
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
header('Location: viv_settings_tecaji_main.php'); exit;
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}$conn->close();

?>

最佳答案

一个合适的表单示例如下所示

<form action='' method='post'>
    <input type='text' name='field1' required>
    <select name='fieldSelect'>
        <option value='value1'>Value1</option>
        <option value='value2'>Value2</option>
    </select>
    <input type='submit' name='send'>
</form>

那么 PHP 就会像这样

<?php 
if(isset($_POST['send'] && (!empty($_POST['field1']) || !empty($_POST['fieldSelect']))){
    $field1 = $_POST['field1'];
    $fieldSelect = $_POST['fieldSelect'];
    //YOUR SQL CODE
} else {
    echo "Please Insert Some Data";
}
?>

简而言之:

  1. 为您的“提交”按钮命名
  2. 通过 if(isset($_POST['submit-button-name'])){} 检查提交按钮是否被点击
  3. 用名称定义表单的 $_POST 变量。
  4. 继续使用 SQL。

关于php - mysql仅在post包含数据的情况下更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083272/

相关文章:

php - 如何使用 PHP 制作 Canonicals

php - Symfony 中的时差

c# - 检查是否已与服务器建立连接的最简单方法

MySQL获取最大日期

mysql - 加载数据本地 infile ERROR 2 找不到文件

php - 在 laravel eloquent 中获取*相关*链接模型而不是原始 SQL

php - 使用 PHP 动态显示选项值

php - mysql:从日期时间显示日期

mysql - 删除mysql中两个表之间的重复项

php - 在同一台服务器上运行 PHP 5.4 和 PHP 7