How to compare in update

0

The main code is this:

$dbconn = mysqli_connect($servername, $username, $password, $dbname)or die("Failed to connect to database:" . mysqli_error($dbconn));

$query = "SELECT id_medico as txtid, nome as txtNome, email as txtEmail, telemovel as txtTelemovel, morada as txtMorada, especialidade as txtEspecialidade, NIF as txtNif, Localidade as txtLocalidade, codigo_postal as txtCodigo, data_nascimento as txtnascimento, observacoes as txtObservacao  FROM Medicos";
$data = mysqli_query($dbconn, $query);
$result = mysqli_num_rows($data);       
$meujson = array();   


?>
<div id=Corpo>
<br>
    <br>
<form name="medicos" method="post" action="">
<label for="cbMedicos">Selecione um M&eacute;dico</label>
<select id="cbMedicos" name="cbMedicos">
<option>Selecione...</option>

<?php while($prod = $data->fetch_assoc()) { 
    echo '<option value="'.$prod['txtid'].'">'.$prod['txtNome'].'</option>';
    $meujson[$prod['txtid']] = $prod; // coleciona as linhas no $meujson
     $_SESSION[$prod['txtid']] = $prod['txtid'];

   }
   ?>
</select>

<br> <br> <br>

&nbsp &nbsp <label for="txtid">Nome:</label>
<input type="text" id="txtNome" name="txtNome" value="" size=90 /> <br> <br>
&nbsp &nbsp<label for="txtid">NIF:</label> &nbsp &nbsp
<input type="number" id="txtNif" name="txtNif" value="" /> &nbsp &nbsp &nbsp 
&nbsp
&nbsp &nbsp<label for="txtid">Data de Nascimento:</label> &nbsp
<input type="date" id="txtdata" name="txtdata" value="" /> <br> <br>
&nbsp &nbsp<label for="txtid">Email:</label> 
<input type="text" id="txtEmail" name="txtEmail"value="" size=30 /> &nbsp 
&nbsp
&nbsp &nbsp<label for="txtid">Telem&oacute;vel:</label>
<input type="number" id="txtTelemovel" name="txtTelemovel" value="" /> <br> 
<br>
&nbsp &nbsp<label for="txtid">Morada:</label>
<input type="text" id="txtMorada" name="txtMorada" value="" size=90 /> <br> 
<br>
&nbsp &nbsp<label for="txtid">C&oacute;digo Postal:</label>
<input type="number" id="txtCodigo" name="txtCodigo" value="" /> 
&nbsp &nbsp<label for="txtid">Localidade:</label>
<input type="text" id="txtLocalidade" name="txtLocalidade"value="" /> <br> 
<br>
 &nbsp &nbsp<label for="txtid">Especialidade:</label>
 <input type="text" id="txtEspecialidade" name="txtEspecialidade" value="" /><br> <br>
 &nbsp &nbsp<label for="txtid">Observa&ccedil;&otilde;es:</label>
 <input type="text" id="txtObservacao" name="txtObservacao" value="" size=90/><br> <br>


<script type="text/javascript">

var dados = <?php echo json_encode($meujson); ?>;
document.getElementById("cbMedicos").addEventListener("change", function () 
{
var linha = dados[this.value];
for (var ch in linha) {
    (document.getElementById(ch) || {}).value = linha[ch];
}
});
</script>

<script type="text/javascript">
document.getElementById("cbMedicos").addEventListener("change", function () 
{
    document.getElementById("txtid").value = this.value;
});
</script>

        <br>
    <br>
    <br> 


        &nbsp &nbsp <input type="submit" value="Novo" class="botaoNovo" name="botao_novo"> 
        &nbsp &nbsp &nbsp <input type="reset" value="Apagar" class="botaoApagar" name="botao_apagar"> 
        &nbsp &nbsp &nbsp <input type="submit" value="Editar" class="botaoEditar" name="botao_editar"> 
        </div>
        </form> 

And then the code below is called to the main page. And I want in the query update to compare the name of the database with the chosen name of the combobox, I had put like this:

....
$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>";
}


?>
<?php
    }
    mysqli_close($dbconn);
    ?>

But it's not working, does anyone know how to do it?

    
asked by anonymous 02.07.2017 / 16:08

2 answers

1

First on the line of update WHERE nome = '$cbnome' has an error.

This variable $cbnome does not refer to the nome column, but the id_medico column

So the correct one is WHERE id_medico = '$cbnome'";

  

This variable $cbnome was badly named and thus causing some confusion.

There are more errors

This code snippet

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

if ($result == 0) 
{

does not work correctly, it does update and insert regardless of the button clicked Novo or Editar

As shown below will work correctly:

if ($_POST['botao_novo'] == "Novo") 
{
    $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> O novo paciente foi inserido com sucesso<br>";
}

if ($_POST['botao_editar'] == "Editar") 
{
   $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 id_medico = '$cbnome'"; 

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

   echo "<br> Dados do paciente atualizados com sucesso <br>";
}
  

If you can not enter new ones with some predefined criteria, for example, by email, it is necessary to check the existence of this before inserting.

Example:

$query = "SELECT email FROM Medicos Where email= '$email'";
$data_mail = mysqli_query($dbconn, $query);
$result_mail = mysqli_num_rows($data_mail); 


    if ($result_mail == 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> O novo paciente foi inserido com sucesso<br>";
    }
    else 
    {

       $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 id_medico = '$cbnome'"; 
       $data = mysqli_query($dbconn, $query);

       echo "<br> Dados do paciente atualizados com sucesso <br>";
    }
  

In this case just a submit button, and the insert will only happen if there is a change of email in the email field

    
02.07.2017 / 23:39
0

The error was in this line of code: instead of '' $ prod ['txtid'].

echo '<option value="'.$prod['txtNome'].'">'.$prod['txtNome'].'</option>';

Since the query changes to:

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'";
    
03.07.2017 / 00:35