Send blank field to database

Asked

Viewed 385 times

0

I created a database and am sending the information normally. However, I have an optional field in the form. If the user wants to provide more details, he normally writes, if not, I wanted to send the following message to the database Sem Mensagem.

<?php

$user = $_POST["user2"];
$manga = $_POST["titulo2"];
$capitulo = $_POST["capitulo2"];
$mensagem = $_POST["mensagem2"];
$assunto = $_POST["opcoes"];

$con = mysqli_connect("localhost","root","","report");
$sql = "insert into denuncia values(null,'".$user."','".$manga."','".$capitulo."','".if($mensagem == 0){"Sem mensagem"} else {$mensagem}."','".$assunto."')";



if(mysqli_query($con, $sql)) {

    $msg = "Obrigado! Sua denúncia foi enviada.";
} else {
    $msg = "Erro ao enviar.";
}


mysqli_close($con);

?>

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

2 answers

3

Ignoring existing security problems.

For me you have four easy alternatives:

  1. Set to "DEFAULT" in Mysql.
  2. Set in INSERT in PHP.
  3. Set text as output in PHP.
  4. Set text as output in Mysql.

Set DEFAULT in Mysql:

ALTER TABLE denuncia MODIFY COLUMN coluna VARCHAR(255) NOT NULL DEFAULT 'Sem mensagem';

Then you could do the INSERT without such a field, or could use the DEFAULT instead of the value.


Set in insert, still in PHP:

$mensagem = $_POST['mensagem2'] ?? 'Sem mensagem';
$mensagem = mysqli_real_query($con, $mensagem);

If using some old version of PHP could also do:

$mensagem = isset($_POST['mensagem2']) ? $_POST['mensagem2'] : 'Sem mensagem';
$mensagem = mysqli_real_query($con, $mensagem);

Handle text display in PHP:

Insert the blank text, usually in Mysql and treat this in the output:

mysqli_query('SELECT * FROM denuncia ...');
//...

if($ResultadoDaQuery['mensagem'] === ''){
    $ResultadoDaQuery['mensagem'] = 'Sem mensagem';
}

//...

This would replace the text at the time of showing, logically there are other ways to make this substitution.


Handle text display, in Mysql:

As in the previous form, however making the work of Mysql:

SELECT IF(mensagem = '', 'Sem mensagem', mensagem) as mensagem FROM denuncia

This query will cause the "No message" message to be returned if the message is empty.

1

You can do a simple check for this by declaring the variable $mensagem:

$mensagem = $_POST["mensagem2"] == "" ? $_POST["mensagem2"] : "Sem Mensagem";

Browser other questions tagged

You are not signed in. Login or sign up in order to post.