How to merge edit / new button?

-1

I would like that, if already there is $nome registered in the table, it gives an update and if it does not exist, it gives an insert. I do not understand what the problem is in my code.

$dbconn = mysqli_connect($servername, $username, $password, $dbname)or die("Failed to connect to database:" . mysqli_error($dbconn));
if (isset($_POST['botao_editar']))
{

$Nome = trim($_POST['txtNome']); 
$NIF = trim($_POST['txtNif']); 
$bday = trim($_POST['txtnascimento']); 
$email = trim($_POST['txtEmail']); 
$telemovel = trim($_POST['txtTelemovel']); 
$morada = trim($_POST['txtMorada']); 
$codigo = trim($_POST['txtCodigo']); 
$localidade = trim($_POST['txtLocalidade']); 
$especialidade = trim($_POST['txtEspecialidade']); 
$observacao = trim($_POST['txtObservacao']); 
$cbnome= trim($_POST['cbMedicos']);

 $query = "UPDATE Medicos SET nome= '".$Nome."', NIF='".$nif."', data_nascimento='".$bday."', email='".$email."', telemovel='".$telemovel."', morada='".$morada."', codigo_postal= '".$codigo."', Localidade= '".$localidade."', especialidade= '".$especialidade."', observacoes= '".$observacao."' WHERE nome = '$cbnome'";  
$data = mysqli_query($dbconn, $query);
    $result = mysqli_num_rows($data);

    if ($result == 0) 
    {
        $query = "INSERT INTO Medicos (nome, NIF, telemovel, data_nascimento, email, morada , observacoes, codigo_postal, especialidade, Localidade )  VALUES ('".$Nome."', '".$nif."', '".$telemovel."', '".$bday."', '".$email."', '".$morada."', '".$observacao."', '".$codigo."', '".$especialidade."', '".$localidade."')";

    $data = mysqli_query($dbconn, $query);

    echo  "<br>Dados do pacientes gravados com sucesso <br>";
}
        else
        {
                echo "<br> O novo paciente foi inserido com sucesso <br>";
            }

else
    {

        echo  "<br>Falhou a inserir os dados <br>";
        ?>

    <?php
    }
    mysqli_close($dbcon);
    ?>
    
asked by anonymous 01.07.2017 / 13:24

2 answers

0

I believe the $name field in this insert should be $Nome .

And I was missing a mysqliquery right after the Insert:

    if ($result == 0) 
    {
      $query = "INSERT INTO Medicos (nome, NIF, telemovel, 

      data_nascimento, email, morada , observacoes, codigo_postal,

      especialidade, Localidade ) 

      VALUES ('".$name."', '".$nif."','".$telemovel."', '".$bday."',

              '".$email."', '".$morada."', '".$observacoes."', 

              '".$codigo_postal."', '".$especialidade."', '".$localidade."')";

        $data = mysqli_query($dbconn, $query);

        echo  "<br>Dados do pacientes gravados com sucesso <br>";
    }
    
01.07.2017 / 17:17
0

I recommend doing the check already inside the SQL, with INSERT ... ON DUPLICATE KEY UPDATE .

$query = "INSERT INTO Medicos (nome, NIF, telemovel, 
      data_nascimento, email, morada , observacoes, codigo_postal,
      especialidade, Localidade ) 
      VALUES ('".$name."', '".$nif."','".$telemovel."', '".$bday."',
              '".$email."', '".$morada."', '".$observacoes."', 
              '".$codigo_postal."', '".$especialidade."', '".$localidade."')";
      ON DUPLICATE KEY UPDATE
              nome= '".$Nome."', NIF='".$nif."', data_nascimento='".$bday."',
              email='".$email."', telemovel='".$telemovel."',
              morada='".$morada."', codigo_postal= '".$codigo."',
              Localidade= '".$localidade."', especialidade= '".$especialidade."',
              observacoes= '".$observacao."'";

I do not know if you're right, you can check the original documentation .

    
01.07.2017 / 18:21