编辑表中的数据

时间:2014-06-11 19:37:36

标签: php

我有一个带有编辑按钮的表(每个产品1个),点击后我希望它编辑该特定行..

这是我的表

<?php
    require 'connect.php';

    $query = $link->query("SELECT * FROM fornecedor");

    echo "<table border='1' cellpadding='2' cellspacing='2'";

    echo "<tr>
            <td>Nome</td>
            <td>NIF</td>
            <td>Cidade</td>
            <td>Rua</td>
            <td>NrPorta</td>
            <td>Website</td>
            <td>email</td>
            <td>Editar</td>
            <td>Eliminar</td>
            <td>Adicionar</td>
        </tr>"; 

        while ($row = $query->fetch_array() ) {

            echo "<tr>";
            echo "<td>" . $row["Nome"] . "</td>";
            echo "<td>" . $row["NIF"] . "</td>";
            echo "<td>" . $row["Cidade"] . "</td>";
            echo "<td>" . $row["Rua"] . "</td>";
            echo "<td>" . $row["NrPorta"] . "</td>";
            echo "<td>" . $row["Website"] . "</td>";
            echo "<td>" . $row["Email"] . "</td>";
            echo "<td><a href='editarFornecedor.php'><img src='images/edit.svg' width='40px' height='30px'></a></td>";
            echo "<td><a href='eliminarFornecedor.php'><img src='images/delete.png' width='30px' height='30px'></a></td>";
            echo "</tr>";  
        };
          echo "</table>";

          $link->close();

?>

这是我的编辑页面:

include 'connect.php';

$result = mysqli_query($link,"SELECT * FROM Fornecedor");

while($row = mysqli_fetch_array($result))

?>

  <form method="post" action="edit_data.php">
  <input type="text" name="id" value="<?php echo "$row[id]"?>">
    <tr>        
      <td>Nome</td>
      <td>
        <input type="text" name="Nome" size="40" value="<?php echo "$row[Nome]"?>">
      </td>
    </tr>
    <tr>
      <td>Nif</td>
      <td>
        <input type="text" name="Nif" size="40"  value="<?php echo "$row[NIF]"?>">
      </td>
    </tr>
    <tr>
      <td>Cidade</td>
      <td>
       <input type="text" name="Cidade" size="40" value="<?php echo "$row[Cidade]"?>">
      </td>
    </tr>
    <tr>
      <td>Rua</td>
      <td>
        <input type="text" name="Rua" size="40" value="<?php echo "$row[Rua]"?>">
      </td>
    </tr>
    <tr>
      <td>NrPorta</td>
      <td>
        <input type="text" name="NrPorta" size="40"  value="<?php echo "$row[NrPorta]"?>">
      </td>
    </tr>
    <tr>
      <td>Website</td>
      <td>
        <input type="text" name="Website" size="40"  value="<?php echo "$row[Website]"?>">
      </td>
    </tr>
    <tr>
      <td>Email</td>
      <td>
        <input type="text" name="Email" size="40" value="<?php echo "$row[Email]"?>">
      </td>
    </tr>
    <tr>
      <td align="right">
        <input type="submit" name="submit value" value="Edit">
      </td>
    </tr>
  </form>
  </table>


<?php mysqli_close($link);?> 

我只看到没有值的表单,我想让它们可见,以便用户可以编辑数据。我究竟做错了什么 ?糟糕的编码或遗漏的东西?

5 个答案:

答案 0 :(得分:2)

您的所有$row值都是这样的:

$row[Nome]

当他们应该有这样的单引号时:

$row['Nome']

此外,HTML中的echo行如下所示:

<input type="text" name="Email" size="40" value="<?php echo "$row[Email]"?>">

但是不需要那些"双引号,所以它应该是这样的:

<input type="text" name="Email" size="40" value="<?php echo $row['Email'] ?>">

这是我尝试清理上述问题。我相信它应该有效:

  <form method="post" action="edit_data.php">
  <input type="text" name="id" value="<?php echo $row['id'] ?>">
    <tr>        
      <td>Nome</td>
      <td>
        <input type="text" name="Nome" size="40" value="<?php echo $row['Nome'] ?>">
      </td>
    </tr>
    <tr>
      <td>Nif</td>
      <td>
        <input type="text" name="Nif" size="40"  value="<?php echo $row['NIF'] ?>">
      </td>
    </tr>
    <tr>
      <td>Cidade</td>
      <td>
       <input type="text" name="Cidade" size="40" value="<?php echo $row['Cidade'] ?>">
      </td>
    </tr>
    <tr>
      <td>Rua</td>
      <td>
        <input type="text" name="Rua" size="40" value="<?php echo $row['Rua'] ?>">
      </td>
    </tr>
    <tr>
      <td>NrPorta</td>
      <td>
        <input type="text" name="NrPorta" size="40"  value="<?php echo $row['NrPorta'] ?>">
      </td>
    </tr>
    <tr>
      <td>Website</td>
      <td>
        <input type="text" name="Website" size="40"  value="<?php echo $row['Website'] ?>">
      </td>
    </tr>
    <tr>
      <td>Email</td>
      <td>
        <input type="text" name="Email" size="40" value="<?php echo $row['Email'] ?>">
      </td>
    </tr>
    <tr>
      <td align="right">
        <input type="submit" name="submit value" value="Edit">
      </td>
    </tr>
  </form>
  </table>

答案 1 :(得分:0)

您忘了将数组对象的名称放在引号中。

而不是:

$row[Email]

尝试:

$row['Email']

等等。

答案 2 :(得分:0)

问题是您忘记在编辑页面上使用$row['']的引号!

哦,我也不知道如何使用$row['']在下一页上再次获取ID。尝试使用查询字符串进行链接:

/editarFornecedor.php?id=" . $row['id'] . "

然后,在编辑页面上,使用ID查找用户想要编辑的行:

$_GET['id'],将其变为变量并在input标记上使用它!另外,您可以在该输入上添加disable

答案 3 :(得分:0)

在您的编辑按钮上,输入您行的ID

echo "<td><a href='editarFornecedor.php?id={$row['id']}'><img src='images/edit.svg' width='40px' height='30px'></a></td>";

在编辑页面中,接收id并获取相对于此

的行
if (!isset($_GET['id'])) {
    throw new Exception('Supplier ID not supplied');
}

$id = mysqli_real_escape_string($_GET['id']);

$result = mysqli_query($link,"SELECT * FROM Fornecedor WHERE id = $id");

然后删除while,因为您只获得一行

$row = mysqli_fetch_array($result);

答案 4 :(得分:0)

您可以使用<?=来回显单个值。例如,Hello <?=$name?>!

您也可以使用引号来处理数组中字符串标识的项目。例如,$row['id']。 PHP将隐式隐藏文本,没有空格到字符串,但将字符串数据放在引号内始终是一个好习惯。

  <form method="post" action="edit_data.php">
  <input type="text" name="id" value="<?=$row['id']?>">
    <tr>        
      <td>Nome</td>
      <td>
        <input type="text" name="Nome" size="40" value="<?=$row['Nome']?>">
      </td>
    </tr>
    <tr>
      <td>Nif</td>
      <td>
        <input type="text" name="Nif" size="40"  value="<?=$row['NIF']?>">
      </td>
    </tr>
    <tr>
      <td>Cidade</td>
      <td>
       <input type="text" name="Cidade" size="40" value="<?=$row['Cidade']?>">
      </td>
    </tr>
    <tr>
      <td>Rua</td>
      <td>
        <input type="text" name="Rua" size="40" value="<?=$row['Rua']?>">
      </td>
    </tr>
    <tr>
      <td>NrPorta</td>
      <td>
        <input type="text" name="NrPorta" size="40"  value="<?=$row['NrPorta']?>">
      </td>
    </tr>
    <tr>
      <td>Website</td>
      <td>
        <input type="text" name="Website" size="40"  value="<?=$row['Website]']?>">
      </td>
    </tr>
    <tr>
      <td>Email</td>
      <td>
        <input type="text" name="Email" size="40" value="<?=$row['Email']?>">
      </td>
    </tr>
    <tr>
      <td align="right">
        <input type="submit" name="submit value" value="Edit">
      </td>
    </tr>
  </form>
  </table>