Add values to a database by PHP

1

I'm trying to add values to a database through PHP. I'm using PHPMyAdmin for both databases and also for the site in question.

At this moment the code I have is the following, I present my doubts at the end:

<html>
    <head>
        <meta charset="UTF-8">

            <link rel="stylesheet" type="text/css" href="mystyle_inserir.css">
            <link rel="stylesheet" type="text/css" href="w3schoolsExample.css">

        <title>Inserir utilizador</title>
        <style>
            form label{
                display: inline-block;
                width: 100px;
                font-weight: bold;   
            }       
        </style> 
    </head>
<body>

        <?php

            $servername = "localhost";
            $username = "root";
            $password = "";
            $dbname = "rhumanos";

            // Create connection
            $conn = mysqli_connect($servername, $username, $password, $dbname);

            // Check connection
            if (!$conn) {
                die("Conecção falhou: " . mysqli_connect_error() );
            }
            echo "Conectado";

            function addToDB(){

                $nome = $_POST['nome'];
                $cargo = $_POST['cargo'];
                $email = $_POST['email'];
                $localidade = $_POST['localidade'];
                $setor = $_POST['setor'];   
                $telefone = $_POST['telefone'];
                $salario = $_POST['salario'];
                $horario = $_POST['horario'];

                $sql = "INSERT INTO trabalhador (nome, cargo, email, localidade, setor, telefone, salario, horario) 
                VALUES ($nome, $cargo, $email, $localidade, $setor, $telefone, $salario, $horario)";

                if (mysqli_query($conn, $sql)) {
                    echo "Adicionado com sucesso";
                } else {
                    echo "Erro: " . $sql . "<br>" . mysqli_error($conn);
                }
                mysqli_close($conn);
            }    
        ?>

    <h2>Exemplo de inserção numa MySQL database ao usar PHP</h2>

        <br><br>

        <form action="addToDB()" method="post">
            <label for="nome">Nome: </label>                          <input type="text" name="nome" />
            <br><br>
            <label for="cargo">Cargo: </label>                        <input type="text" name="cargo" />
            <br><br>
            <label for="email">E-Mail: </label>                       <input type="text" name="email" />
            <br><br>
            <label for="localidade">Localidade: </label>              <input type="text" name="localidade" />
            <br><br>
            <label for="setor">Setor de Trabalho: </label>            <input type="text" name="setor" />
            <br><br>
            <label for="telefone">Telefone: </label>                  <input type="text" name="telefone" />
            <br><br>
            <label for="salario">Salario (/h): </label>               <input type="text" name="salario" />
            <br><br>
            <label for="horario">Horário (QT horas): </label>         <input type="text" name="horario" />
            <br><br>
            <input type="submit" value="submit">
        </form>

</body>

</html>

I am currently experiencing 2 problems ...

1st I want, by clicking on my Submit button, the addToDB () function is executed and at this point I do not understand the process of how to do it.

2º I already tried without using function and the server returned me a format error, I know it has to do with the data that I put.

VARCHAR data needs to be formatted as follows:

- > "Employee name", enclosed in quotation marks to be accepted

And I'm simply adding

- > given, unformatted and I do not know how to fix it.

The goal is simply to add the data I've placed in this image into the database and I'm not getting it.

Thank you in advance.

    
asked by anonymous 12.12.2018 / 22:23

1 answer

1
  

Your code is all mixed up. The PHP function will not run on the client. You should create a PHP page to treat your form data and put in the action of your form :

index.php :

<html>
    <head>
        <meta charset="UTF-8">

            <link rel="stylesheet" type="text/css" href="mystyle_inserir.css">
            <link rel="stylesheet" type="text/css" href="w3schoolsExample.css">

        <title>Inserir utilizador</title>
        <style>
            form label{
                display: inline-block;
                width: 100px;
                font-weight: bold;
            }
        </style>
    </head>
    <body>

        <h2>Exemplo de inserção numa MySQL database ao usar PHP</h2>

            <br><br>

            <form action="form.php" method="post">
                <label for="nome">Nome: </label>                          <input type="text" name="nome" />
                <br><br>
                <label for="cargo">Cargo: </label>                        <input type="text" name="cargo" />
                <br><br>
                <label for="email">E-Mail: </label>                       <input type="text" name="email" />
                <br><br>
                <label for="localidade">Localidade: </label>              <input type="text" name="localidade" />
                <br><br>
                <label for="setor">Setor de Trabalho: </label>            <input type="text" name="setor" />
                <br><br>
                <label for="telefone">Telefone: </label>                  <input type="text" name="telefone" />
                <br><br>
                <label for="salario">Salario (/h): </label>               <input type="text" name="salario" />
                <br><br>
                <label for="horario">Horário (QT horas): </label>         <input type="text" name="horario" />
                <br><br>
                <input type="submit" value="submit">
            </form>

    </body>

</html>

form.php :     

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);

    // Check connection
    if (!$conn) {
        die("Conecção falhou: " . mysqli_connect_error() );
    }
    // echo "Conectado";

    $nome = $_POST['nome'];
    $cargo = $_POST['cargo'];
    $email = $_POST['email'];
    $localidade = $_POST['localidade'];
    $setor = $_POST['setor'];
    $telefone = $_POST['telefone'];
    $salario = $_POST['salario'];
    $horario = $_POST['horario'];

    $sql = "INSERT INTO trabalhador (nome, cargo, email, localidade, setor, telefone, salario, horario)
    VALUES ($nome, $cargo, $email, $localidade, $setor, $telefone, $salario, $horario)";

    if (mysqli_query($conn, $sql)) {
        echo "Adicionado com sucesso";
    } else {
        echo "Erro: " . $sql . "<br>" . mysqli_error($conn);
    }
    mysqli_close($conn);

?>
  

Data of type VARCHAR needs to be formatted as follows:   - > "Employee name", enclosed in quotation marks to be accepted

Just update your query :

// ...
$sql = "INSERT INTO trabalhador (nome, cargo, email, localidade, setor, telefone, salario, horario)
VALUES ('$nome', '$cargo', '$email', '$localidade', '$setor', '$telefone', '$salario', '$horario')";
// ...

It's worth remembering that this way your system becomes BEEEM vulnerable. Best way to execute such queries (when data comes from some input ) is to use the so-called Prepared Statements ...

Remembering: PHP is run on the server. HTML is run on the client. This means that you can not call a function from PHP in HTML ...     

13.12.2018 / 00:15