我有一个带有编辑按钮的表(每个产品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);?>
我只看到没有值的表单,我想让它们可见,以便用户可以编辑数据。我究竟做错了什么 ?糟糕的编码或遗漏的东西?
答案 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>