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

0

I'm trying to retrieve data from a table inside an input where the user can be updated and save to the same table through UPDATE. I was able to do the UPDATE, but I edit the data by input and send, it saves in the right bank, but when I refresh the page it erases all the bank's fields.

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> 
    
asked by anonymous 02.08.2016 / 15:46

2 answers

1

What happens is that your form is in the same file as the posting to the database. I know this because you do not have an action on the form. This can generate some bugs because 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: query with mysql_* are out of date. You need to upgrade to mysqli_* or PDO .

If errors persist post in the comments that I help

    
02.08.2016 / 19:17
0

Access 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>
    
02.08.2016 / 16:05