Save the result of select in a variable and use this variable to fill the input that will then be used to do an UPDATE in the same table

Asked

Viewed 2,451 times

0

I am trying to recover the data from a table inside an input where the user can be updated and save in the same table through UPDATE. I managed to do the UPDATE, but edit the data by input and send, it saves in the right database, but when I update the page it erases all fields of the database.

if (isset($_POST)){
            $sql = "UPDATE cadastros SET nome = '{$_POST['nome']}', email = '{$_POST['email']}', telefone = '{$_POST['telefone']}', site = '{$_POST['site']}', endereco = '{$_POST['endereco']}', bairro = '{$_POST['bairro']}', cidade = '{$_POST['cidade']}', estado = '{$_POST['estado']}', cep = '{$_POST['cep']}', produtos = '{$_POST['produtos']}', descricao = '{$_POST['descricao']}', nomeCliente = '{$_POST['nomeCliente']}' WHERE idusuario = '$idusuario'";
            mysql_query($sql);

        }
        $sql = "SELECT * FROM cadastros WHERE idusuario = '$idusuario'";
        $result = mysql_query($sql);
        $registro = mysql_fetch_assoc($result);

        $nome =             $registro['nome'];
        $email =            $registro['email'];
        $telefone =         $registro['telefone'];
        $site =             $registro['site'];
        $endereco =         $registro['endereco'];
        $bairro =           $registro['bairro'];
        $cidade =           $registro['cidade'];
        $estado =           $registro['estado'];
        $cep =              $registro['cep'];
        $produtos =         $registro['produtos'];
        $descricao =        $registro['descricao'];
        $nomeCliente =      $registro['nomeCliente'];
    ?>


     <!-- FORMULÁRIO -->
      <form class='tab-pane transition scale fade in active' autocomplete="off" id='myForm' method="POST">

            <div class="field">
                <label for="doge" class="field-label">Seu nome completo:</label>
                <input type="text" id="doge" name="nomeCliente"  required="" class="field-input" value="<?php echo $nomeCliente ?>">
            </div>                    
            <div class="field">
                <label for="doge" class="field-label">Nome da loja:</label>
                <input type="text" id="doge" name="nome"  required="" class="field-input" value="<?php echo $nome ?>">
            </div>                 
            <div class="field">
                <label for="doge" class="field-label">E-mail loja:</label>
                <input type="text" id="doge" name="email"  required="" class="field-input" value="<?php echo $email ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">Telefone:</label>
                <input type="text" id="doge" name="telefone"  required="" class="field-input" OnKeyPress="formatar('##-#########', this); return somenteNumero(event)" maxlength="12" value="<?php echo $telefone ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">Site:</label>
                <input type="text" id="doge" name="site"  required="" class="field-input" value="<?php echo $site ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">Endereço com número:</label>
                <input type="text" id="doge" name="endereco"  required="" class="field-input" value="<?php echo $endereco ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">Bairro:</label>
                <input type="text" id="doge" name="bairro"  required="" class="field-input" value="<?php echo $bairro ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">Cidade:</label>
                <input type="text" id="doge" name="cidade"  required="" class="field-input" value="<?php echo $cidade ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">Estado</label>
                <input type="text" id="doge" name="estado"  required="" class="field-input" value="<?php echo $estado ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">CEP:</label>
                <input type="text" id="doge" name="cep"  required="" class="field-input" value="<?php echo $cep ?>">
            </div>
            <div class="field">
                <label for="doge" class="field-label">Produtos e marcas que você atende:</label>
                <input type="text" id="doge" name="produtos"  required="" class="field-input" value="<?php echo $produtos ?>">
            </div>
          <div class="field">
                <label for="doge" class="field-label">Descrição:</label>
                <textarea type="text" id="doge" name="descricao"  required="" class="field-input" value="<?php echo $descricao ?>"></textarea>
          </div>
        <div class="space-top-2x clearfix">
            <button type="submit" class="btn btn-success pull-right"><i class="flaticon-correct7"></i> Enviar</button>
        </div>               

          </form> 

2 answers

1


What happens is that your form is in the same file that is posted in the database. I know this because you do not have an action in the form. This can generate some bugs as your form is always "posted" when you update it.

Solution:

 // coloque um name no seu submit (isso ajuda)
 if (isset($_POST['salvar'])){
        $sql = "UPDATE cadastros SET nome = '{$_POST['nome']}', email = '{$_POST['email']}', telefone = '{$_POST['telefone']}', site = '{$_POST['site']}', endereco = '{$_POST['endereco']}', bairro = '{$_POST['bairro']}', cidade = '{$_POST['cidade']}', estado = '{$_POST['estado']}', cep = '{$_POST['cep']}', produtos = '{$_POST['produtos']}', descricao = '{$_POST['descricao']}', nomeCliente = '{$_POST['nomeCliente']}' WHERE idusuario = '$idusuario'";
        mysql_query($sql);

       // redirecione sua página para ela mesmo assim ela não será submetita 2x
       header("Location: recebeloja.php");
    }
    $sql = "SELECT * FROM cadastros WHERE idusuario = '$idusuario'";
    $result = mysql_query($sql);
    $registro = mysql_fetch_assoc($result);

    $nome =             $registro['nome'];
    $email =            $registro['email'];
    $telefone =         $registro['telefone'];
    $site =             $registro['site'];
    $endereco =         $registro['endereco'];
    $bairro =           $registro['bairro'];
    $cidade =           $registro['cidade'];
    $estado =           $registro['estado'];
    $cep =              $registro['cep'];
    $produtos =         $registro['produtos'];
    $descricao =        $registro['descricao'];
    $nomeCliente =      $registro['nomeCliente'];
?>


 <!-- FORMULÁRIO -->
  // coloque um action no form
  <form action="recebeloja.php" class='tab-pane transition scale fade in active' autocomplete="off" id='myForm' method="POST">

  ... todo o formulário

  // coloque o name no submit
    <div class="space-top-2x clearfix">
        <button name="salvar" type="submit" class="btn btn-success pull-right"><i class="flaticon-correct7"></i> Enviar</button>
    </div>               

      </form> 

Probably the bugs will end. One more thing: the query with mysql_* are outdated. You need to upgrade to mysqli_* or PDO.

If the mistakes persist post in the comments that I help

0

Go to the edit page with a GET parameter, id=X to open an edit form:

<?php    
    if (isset($_POST)){
        $sql = "UPDATE tabela SET telefone = '{$_POST['telefone']}' WHERE id = '{$_GET['id']}'";
        mysql_query($sql);

    }
    $sql = "SELECT * FROM tabela WHERE id = '{$_GET['id']}'";
    $result = mysql_query($sql);
    $registro = mysql_fetch_assoc($result);
    $telefone = $registro['telefone'];
?>
<form method="POST">
    <input name="telefone" value="<?php echo $telefone ?>" />
    <button type="submit">Enviar</button>
</form>
  • but then you don’t need the page to receive.php to do the UPDATE when the user edits the data?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.