【问题标题】:Dynamic Form, PHP and MYSQL动态表单、PHP 和 MYSQL
【发布时间】:2019-02-09 09:28:49
【问题描述】:

我正在尝试制作一个表格,您可以在其中填写以下字段:

PC 型号, 电脑串口, 软件等

如果他们拥有多于一台 PC,您可以单击添加更多,在同一个表中它会添加并创建列 pcmodel_2 或类似的东西,然后在视图页面中显示他们拥有的尽可能多的计算机.

我想出了以下不好的方法,因为它不是自己做的,希望能得到帮助,以正确和更智能的方式做到这一点。

edit.php

  <form action="add.php?id=<?php echo $row['id']; ?>" method="post">
  <input type="hidden" name="id" value="<?php echo $id; ?>">
  <input type="text" name="firstname" value="<?php echo $row['firstname'] ?>">

  <?php if ($row['name'] == NULL){ }else {?>
  <input type="text" name="firstname" value="<?php echo $row['name'] ?>">
  <?php } ?>

  <input type="submit" name="update" value="update">
</form>

添加.php

 if(isset($_POST['update'])) {
  $id = $_POST['id'];
  $firstname = $_POST['firstname'];
  $name = $_POST['name'];

  // Update
  if ($firstname == NULL){
    mysqli_query($db,"UPDATE users SET firstname='$firstname' WHERE id=$id");
  }else {
    mysqli_query($db,"ALTER TABLE users ADD COLUMN name varchar(255)");
    mysqli_query($db,"UPDATE users SET name='$firstname' WHERE id=$id");
  };

  //GOTO
  header('location:index.php');
};

index.php

<?php
$count=1;
$sel_query="Select * from users ORDER BY id desc;";
$result = mysqli_query($db,$sel_query);
while($row = mysqli_fetch_assoc($result)) { ?>
<tr><td align="center"><?php echo $row["id"]; ?></td>
<td align="center"><?php echo $row["firstname"]; ?></td>

<td><?php if ($row['name'] == NULL){ echo "empty"; }else {
  echo $row['name'];
} ?></td>

这是我尝试做的一个基本的开始。

【问题讨论】:

  • 有点不清楚这是怎么回事。可以通过 1:N 映射表将多个资产关联到一个用户。您的摘录目前似乎仅与用户列表部分有关。也许先把它带到一个帮助论坛(/r/phphelp),或者发布一些更孤立的东西来适应。 // 你会得到的唯一建议是:阅读参数绑定 / 并让 mysqli_ 死掉。

标签: php jquery html mysql


【解决方案1】:

这里有很多需要改变的地方。我只是用简短的例子指出它们,但你应该花时间学习和练习。

第一:ER 设计

您的应用程序不应该在工作时更改您的数据库方案,更改数据库是我们在更改实体关系设计时所做的事情,因此您实际上需要的是数据规范化过程。

对于这种情况,您应该有两个表,第一个用于用户:

编号 |用户 --- | --- 1 |用户1 2 |用户2

另一个记录所有用户资产的表:

编号|用户 ID |资产 --|---------|------ 1 | 1 |机器属于用户 1 2 | 1 |外设属于用户 1 3 | 2 |机器属于用户 2

在两个表中,id 字段值称为 Primary key,而在第二个表中我们称为 user_id 字段值 Parent Key,它指的是与资产相关的用户记录.

二:UI前端

添加更多元素实际上是(通常)使用 JavaScript 实现的常见功能,您可以创建一个输入数组(不是真正的数组,而是模拟它们),如下例所示:

function add() {
  var divApp = document.getElementById("app");
  var inputElement = document.createElement("input");
  divApp.appendChild(inputElement);
}
<div id="app">
  <button onclick="add()">+</button>
</div>

三:SQL注入

对于现实生活中的应用程序,此类代码容易出现许多问题,sql 注入攻击是最常见的攻击之一,可能是按照您的方式将输入变量连接到 sql 语句中,为防止它们,您应该始终使用escaping functions

【讨论】:

  • 感谢您花时间解释艾哈迈德,我说得对吗如果我做了两张名为计算机和人员的表并像这样加入它们 $id=$_GET['id']; $query=mysqli_query($db,"select * from computer, people WHERE pcid ='$id' and pcid = id"); $row=mysqli_fetch_array($query);我将如何为笔记本电脑 2(计算机第 2 行)制作表格并将计算机中的行(表 2)添加到人员(表 1)链接感谢您抽出时间来帮助我。
  • 不客气,为了表示结果,您在 peoples 表中的一行与计算机表中的许多行相连,在这里您可以阅读有关 joining tables 的更多信息,它有时会让人感到困惑但是通过跟踪和练习,您可以获得所需的正确结果(一张包含用户及其机器的表)。
【解决方案2】:

提交数据库连接

$conn=mysqli_connect("localhost", "root", "", "companyprofile");
Update Data in Databaseif(!empty($_POST['des'])){$des=$_POST['des'];
$updquery=mysqli_query($conn, "UPDATE profile SET des ='$des' WHERE id = 1");
if($updquery) { echo "Company Profile has been Successfully Updated";}
else{echo "Updated Failed";}}
?>

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多