php - 如何使用 PHP 和 Mysql 一次只显示一条记录?
问题描述
我正在尝试为用户创建一个选项来编辑我使用 PHP 和 MySQL 创建的表中的信息。我设法创建了这个函数并且正在修改数据,唯一的问题是当我单击表的一条记录上的“编辑”按钮时,编辑屏幕总是显示表中的所有记录,而不是只显示数据我想修改,请问怎么解决?
这是我的代码:
<?php
ini_set('default_charset','UTF-8');
$host="localhost";
$username="********";
$password="********";
$db_name="*********";
$con=mysqli_connect("$host", "$username", "$password", "$db_name")or die("cannot connect");
mysqli_set_charset($con,"utf8");
$sql = "SELECT `ID`, `carro`, `datasaida` , `horasaida` , `datachegada`, `horachegada`, `kminicial`, `kmfinal`, `destino`, `motorista` FROM `carro`";
$query = $con->query($sql);
while ($dados = $query->fetch_assoc()) {
$id = $dados["ID"];
$carro = $dados["carro"];
$datasaida = $dados["datasaida"];
$horasaida = $dados["horasaida"];
$datachegada = $dados["datachegada"];
$horachegada = $dados["horachegada"];
$kminicial = $dados["kminicial"];
$kmfinal = $dados["kmfinal"];
$destino = $dados["destino"];
$motorista = $dados["motorista"];
echo "
<form id=\"form1\" name=\"form1\" method=\"post\" action=\"salvar_edicao.php\">
ID: <input name=\"id\" type=\"text\" readonly=\"readonly\" id=\"id\" value=\"$id\" size=\"35\"/><br>
CARRO: <input name=\"carro\" type=\"text\" id=\"id\" value=\"$carro\" size=\"35\"/><br>
DATA DE SAIDA: <input name=\"datasaida\" type=\"text\" id=\"id\" value=\"$datasaida\" size=\"35\"/><br>
HORA DE SAIDA: <input name=\"horasaida\" type=\"text\" id=\"id\" value=\"$horasaida\" size=\"35\"/><br>
DATA DE CHEGADA: <input name=\"datachegada\" type=\"text\" id=\"id\" value=\"$datachegada\" size=\"35\"/><br>
HORA DE CHEGADA: <input name=\"horachegada\" type=\"text\" id=\"id\" value=\"$horachegada\" size=\"30\"/><br>
KM INICIAL: <input name=\"kminicial\" type=\"text\" id=\"id\" value=\"$kminicial\" size=\"35\"/><br>
KM FINAL: <input name=\"kmfinal\" type=\"text\" id=\"id\" value=\"$kmfinal\" size=\"35\"/><br>
DESTINO: <input name=\"destino\" type=\"text\" id=\"id\" value=\"$destino\" size=\"35\"/><br>
MOTORISTA: <input name=\"motorista\" type=\"text\" id=\"id\" value=\"$motorista\" size=\"35\"/><br>
<input type=\"submit\" onclick=\"return confirm('Deseja mesmo editar esse registro?');\" name=\"Submit\" value=\"SALVAR ALTERAÇÕES\" class=\"btnNew\"/>
</form>
";
}
?>
解决方案
PHP 内置了格式化/模板,您可以使用它来改进代码的格式:
<?php
ini_set('default_charset','UTF-8');
$host = "localhost";
$username = "********";
$password = "********";
$db_name = "*********";
$con = mysqli_connect("$host", "$username", "$password", "$db_name")or die("cannot connect");
mysqli_set_charset($con,"utf8");
$sql = "SELECT `ID`, `carro`, `datasaida` , `horasaida` , `datachegada`, `horachegada`, `kminicial`, `kmfinal`, `destino`, `motorista` FROM `carro`";
$query = $con->query($sql);
while($dados = $query->fetch_assoc()){
$id = $dados["ID"];
$carro = $dados["carro"];
$datasaida = $dados["datasaida"];
$horasaida = $dados["horasaida"];
$datachegada = $dados["datachegada"];
$horachegada = $dados["horachegada"];
$kminicial = $dados["kminicial"];
$kmfinal = $dados["kmfinal"];
$destino = $dados["destino"];
$motorista = $dados["motorista"];
// we can make use of PHP's built formatting/templating functionality here
?>
<form id="form1" name="form1" method="post" action="salvar_edicao.php">
ID: <input name="id" type="text" readonly="readonly" id="id" value="<?php echo $id; ?>" size="35"/><br>
CARRO: <input name="carro" type="text" id="carro" value="<?php echo $carro; ?>" size="35"/><br>
DATA DE SAIDA: <input name="datasaida" type="text" id="datasaida" value="<?php echo $datasaida; ?>" size="35"/><br>
HORA DE SAIDA: <input name="horasaida" type="text" id="horasaida" value="<?php echo $horasaida; ?>" size="35"/><br>
DATA DE CHEGADA: <input name="datachegada" type="text" id="datachegada" value="<?php echo $datachegada; ?>" size="35"/><br>
HORA DE CHEGADA: <input name="horachegada" type="text" id="horachegada" value="<?php echo $horachegada; ?>" size="30"/><br>
KM INICIAL: <input name="kminicial" type="text" id="kminicial" value="<?php echo $kminicial; ?>" size="35"/><br>
KM FINAL: <input name="kmfinal" type="text" id="kmfinal" value="<?php echo $kmfinal; ?>" size="35"/><br>
DESTINO: <input name="destino" type="text" id="destino" value="<?php echo $destino; ?>" size="35"/><br>
MOTORISTA: <input name="motorista" type="text" id="motorista" value="<?php echo $motorista; ?>" size="35"/><br>
<input type="submit" onclick="return confirm('Deseja mesmo editar esse registro?');" name="Submit" value="SALVAR ALTERAÇÕES" class="btnNew"/>
</form>
<?php
}
提交表单后,您的代码salvar_edicao.php
应如下所示:
<?php
ini_set('default_charset','UTF-8');
$host = "localhost";
$username = "********";
$password = "********";
$db_name = "*********";
$con = mysqli_connect("$host", "$username", "$password", "$db_name")or die("cannot connect");
mysqli_set_charset($con,"utf8");
// check that the data has been posted
if(!isset($_POST["id"])){
// No `id` found in post data
die;
}
$sql = "SELECT `ID`, `carro`, `datasaida` , `horasaida` , `datachegada`, `horachegada`, `kminicial`, `kmfinal`, `destino`, `motorista` FROM `carro` WHERE `ID` = ?";
$statement = $con->prepare($sql);
$statement->bind_param('i', $_POST['id']);
$statment->execute();
$query = $statement->get_result();
$dados = $query->fetch_assoc();
if(is_null($dados)){
// No rows exist for this ID
die;
}
// $dados = row in database
// $_POST = data submitted from form
推荐阅读
- python - TF_Agent,observation_spec 和 action_spec 为 2D 矩阵
- academic-graph - 从 Project Academic Knowledge API 评估方法
- docker - 从 Windows 容器中更改主机名
- reactjs - .map 不是函数 [React & Firestore]
- c# - 如何知道我的物联网集线器设备是否存在于 Azure 物联网集线器中?
- arrays - 二维数组中的多个字符串在C中分配
- php - 多次刷新页面时,fastCGI 崩溃并出现 500 错误
- prolog - 在 Prolog 中是否可以在语句的左侧进行 NOT 操作?
- wpf - 如何将 .NET Framework 5.0 添加到 Visual Studio Professional 2019?
- php - 捕获“缺少或不正确的 CSRF cookie 类型”。例外