首页 > 解决方案 > 如何使用 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>
  ";    
}
?>

标签: phpmysql

解决方案


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

推荐阅读