Registering form in the database

0

  <body>
        <?php
        $titulo = $_POST['titulo2'];
        $cap = $_POST['capitulo2'];
        $opt = $_POST['opcoes'];


        $conexao = mysqli_connect("localhost","root","","report");
        $sql2 = "insert into avise values(null,'".$titulo."','".$cap."','".$opt."')";



        if(mysqli_query($conexao, $sql2)) {

            $msg = "Enviado! Obrigado pelo feedback.";
        } else {
            $msg = "Erro ao enviar!";
        }
        mysqli_close($conexao);

        ?>

        <script> alert('<?php echo $msg;?>');
            location.href="index.php";
            </script>
    </body>

Hello! I recently stayed here and they helped me to send warnings by email. Now I'm wanting to send these warnings to the database. But he is not registering.

body {
    margin: 0;
    font-family: "Tahoma";
}

.reporte {
    background-color: #ffffff;
    width: 400px;
    text-align: center;
    border-radius: 10px;
    position: fixed;
    z-index: 10001;
    top: 50%;
    left: 50%;
    margin-left: -230px;
    margin-top: -150px;
    display: none;
}

.campo h2 {
    display: inline-block;
    color: #a42f2f;
}

.campo p {
    margin-top: 0;
    color: #127d2b;
    display: none;
}

select, input {
    margin-bottom: 10px;
    outline: 0;
}

label {
    font-size: 14px;
    color: #888888;
}

select, input {
    border: none;
    background-color: #e2e2e2;
    padding: 5px 10px;
    border-radius: 5px;
}

select {
    color: #888888;
}

#btn {
    background-color: #ffffff;
    border: 2px solid #a42f2f;
    color: #a42f2f;
    padding: 6px 15px;
    cursor: pointer;
    margin-bottom: 10px;
}

#btn:hover {
    background-color: #a42f2f;
    color: #ffffff;
}

#opacidade {
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.6);
    position: fixed;
    z-index: 10000;
    display: none;
}

.teste a {
background-color: #ffffff;
border: 1px solid #a42f2f;;
color: #a42f2f;

}
<body>
<div class="teste">
  <a href="#">Enviar</a>
</div>
    <div class="reporte">
        <div class="campo">

            <h2>Informe o Erro</h2>
            <p class="feedback">Enviado! Obrigado pelo feedback.</p>
            <form action="gravar-aviso.php" method="post">

                <label for="titulo2">Digite o título:</label></br>
                <input type="text" name="titulo2" id="titulo2" placeholder="Naruto..." required></br>

                <label for="capitulo2">Digite o número:</label></br>
                <input type="text" name="capitulo2" id="capitulo2" placeholder="01..." required></br>
                <input type="submit" value="Enviar" id="btn">
            </form>

        </div>
    </div>
    <div id="opacidade"></div>
</body>

<!-- begin snippet: js hide: false console: true babel: false -->
    
asked by anonymous 12.07.2017 / 23:14

3 answers

0

Create a connection file:

class Connection
{
    private $localhost;
    private $username;
    private $password;
    private $database;

    public function __construct()
    {
        $this->username = 'root';
        $this->password = '';
        $this->database = 'report';
        $this->localhost = 'localhost';
    }

    public function getInstance()
    {
        return new mysqli($this->localhost, $this->username, $this->password, $this->database);
    }

}

You can do something like this:

<?php
class Avise
{
    private $titulo;
    private $capitulo;
    private $opcoes;
    private $query;

    public function __construct($request)
    {
       $conn = new Connection();
       $this->query = $conn->getInstance();

       $this->titulo = isset($request['titulo2']) ? $request['titulo2'] : "";
       $this->capitulo = isset($request['capitulo2']) ? (int) $request['capitulo2'] : "";
       $this->opcoes = isset($request['opcoes'])  ? $request['opcoes'] : "";
    }

    public function cadastrar()
    {

        try {
            $stmt = $this->query->prepare("INSERT INTO avise VALUES(?, ?, ?)");

            if ($this->titulo == "") {
                throw new Exception('Título não deve ser vazio.');
            }

            if ($this->capitulo == "") {
                throw new Exception('O capítulo não pode ser vazio.');
            }

            if ($this->opcoes == "") {
                throw new Exception('Opções não pode ser vazio.');
            }

            if (!$stmt->bind_param('sis', $this->titulo, $this->capitulo, $this->opcoes)) {
                throw new Exception('Número de parâmetros incorreto! Erro: '. $stmt->error);
            }

            if (!$stmt->execute()) {
               throw new Exception('Erro de execução! Erro: '. $stmt->error);
            }

            return array(
               'message' => 'Enviado! Obrigado pelo feedback.',
               'status' => true
            );

        } catch (Exception $e) {
            return array(
              'message' => $e->getMessage(),
              'status' => false
            );
        }
    }
}
//usando a classe Avise...

$mensagem_erro = null;
$mensagem_sucesso = null;
    if ($_POST) {
       $avise = new Avise($_POST);
       $result = $avise->cadastrar();
       if ($result['status']) {
           //gravou normal
          $mensagem_sucesso = $result['message'];
       } else {
          //mensagem de erro
          $mensagem_erro = $result['message'];
       }
    }
    ?>
    <body>
    <div class="teste">
      <a href="#">Enviar</a>
    </div>
        <div class="reporte">
            <div class="campo"> <?php
           if ($mensagem_erro != null) {
                echo '<h2>Informe o Erro</h2>
                   <p class="feedback">'.$mensagem_erro.'</p>';
           }

           if ($mensagem_sucesso != null) {
               echo '<h2>Informe o Sucesso</h2>
                   <p class="feedback">'.$mensagem_sucesso.'</p>';
           }
           ?>
                <form action="<?php echo $_SERVER['SCRIPT_NAME'];?>" method="post">

                    <label for="titulo2">Digite o título:</label></br>
                    <input type="text" name="titulo2" id="titulo2" placeholder="Naruto..." required></br>

                    <label for="capitulo2">Digite o número:</label></br>
                    <input type="text" name="capitulo2" id="capitulo2" placeholder="01..." required></br>
                    <input type="hidden" name="opcoes" value="blablabla" id="opcoes">
                    <input type="submit" value="Enviar" id="btn">
                </form>

            </div>
        </div>
        <div id="opacidade"></div>
    </body>
    
13.07.2017 / 00:13
0

Instead of using null , to use a default value (auto_increment), use default .

And from what you told me, your table is made like this:

cod int primary key auto_increment,
manga varchar(50),
capitulo varchar(50),

Totalizing 3 columns, you are trying to insert 4 parameters.

Try this:

$sql2 = "INSERT INTO avise VALUES(default,'$titulo','$cap')";
    
13.07.2017 / 01:37
0

Solved. I changed the configuration in the database.

//o banco de dados estava:

erro enum('Sem páginas','Capítulo repetido', 'Páginas embaralhadas', 'Falta página', 'Páginas repetidas')

//mudei para: 

erro varchar(50)
    
13.07.2017 / 02:16