使用链接更改表格内容

时间:2014-02-25 09:29:48

标签: php mysql mysqli

我是PHP新手,我制作了一个简单的程序,您可以在其中应用您的姓名和年龄,它会将数据带到数据库,并且表格将添加一个新行。 我想添加一个新列,您可以单击"更改",只有来自该特定行的数据才会显示在几个文本框中并且可以更改。当按提交时我想使用UPDATE函数来更新记录。

示例/情节:

  • 迈克迈向23改变
  • Tyler Frankenstein 24
  • 改变Sophie Baker 22 变化

我想将Sophie Baker的年龄改为24岁,所以我按下该行的更改。 现在我只想从该行获取数据并进行一些更改。

我到目前为止的代码:

在输入字段和输入上方绘制表格:     

$result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='2'> <tr> <th>Voornaam</th> <th>Achternaam</th> <th>Leeftijd</th></tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "<td>" . $row['Age'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>

<html>
<body>
    <br />
    <form action="insert.php" method="post"><br />
    <input type="text" name="firstname"> Firstname <br />
    <input type="text" name="lastname"> Lastname <br />
    <input type="text" name="age"> Age
    <p><input type="submit"></p>
    </form>

</body>
</html> 

分析器:

 <?php
$con = mysqli_connect("localhost", "user" , "", "personInfo");

// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysqli_query($con,$sql))
{
    die('Error: ' . mysqli_error($con));
}
echo "1 record added to the database";
echo "<p><a href=sql2.php>Back to form</a></p>";

mysqli_close($con);

?>

我尝试了一些方法,但我无法弄清楚如何在我想要选择的行上显示内容。 使用更新功能更改实际数据不会成为问题,因此我只需要帮助即可从正确的行获取实际数据。

2 个答案:

答案 0 :(得分:0)

如果存在,则需要使用该表的主键进行选择。如果不是,你应该创建一个。我假设你有一个名为PersonID的主键:

$query = "SELECT * FROM Persons WHERE PersonID = '" . ($_GET['PersonID']) . "'";

添加编辑按钮:

echo "<table border='2'> <tr> <th>Voornaam</th> <th>Achternaam</th> <th>Leeftijd</th><th>Action</th></tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "<td>" . $row['Age'] . "</td>";
  echo "<td><a href = '?PersonID=" . $row['PersonID'] . "'>Edit</a></td>";
  echo "</tr>";
  }
echo "</table>";

答案 1 :(得分:0)

我假设您有一个名为“id”的列。

您可以执行以下操作:

<?php
$con = mysqli_connect("localhost", "user" , "", "personInfo");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

    // when you are in "edit mode" just display the row you will edit row
    if (isset($_GET['id'])
      $result = mysqli_query($con,"SELECT * FROM Persons where id = ".(int)$_GET['id']);
    else
  $result = mysqli_query($con,"SELECT * FROM Persons");

echo "<table border='2'> <tr> <th>Voornaam</th> <th>Achternaam</th> <th>Leeftijd</th></tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "<td>" . $row['Age'] . "</td>";
  echo "<td><a href='?id=" . $row['id'] . "'>change</a></td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);
?>

<html>
<body>
    <br />
    <form action="update.php" method="post"><br />
        <input type="hidden" name="id" value="<?php echo isset($_GET['id']?$_GET['id']:'') ?>" />
        <input type="text" name="firstname" value="<?php echo isset($row['FirstName'])?$row['FirstName']:'' ?>"/> Firstname <br />
        <input type="text" name="lastname" value="<?php echo isset($row['LastName'])?$row['LastName']:'' ?>"/> Lastname <br />
        <input type="text" name="age" value="<?php echo isset($row['Age'])?$row['Age']:'' ?>"/> Age
    <p><input type="submit"></p>
    </form>

</body>
</html> 

update.php(处理插入和更新):

 <?php
$con = mysqli_connect("localhost", "user" , "", "personInfo");

// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
    if (isset($_POST['id'])
      $sql="UPDATE Persons set FirstName = ?, LastName = ?, Age = ? 
        WHERE id = ".(int)$_POST['id'];
    else
      $sql="INSERT INTO Persons (FirstName, LastName, Age) VALUES (?, ?, ?)";

    $sth = mysqli_prepare($con, $sql);
    $sth->bind_param($_POST[firstname],$_POST[lastname],$_POST[age]);

if (!$sth->execute())
{
    die('Error: ' . mysqli_error($con));
}
echo "1 record ".(isset($_POST['id']?'modified':'added')." to the database";
echo "<p><a href=sql2.php>Back to form</a></p>";