2
I’m having trouble storing multiple checkbox
in the same table field. In this case, by filling in the form and marking more than one checkbox
, it stores only the value of the last checkbox
.
Here are some excerpts from the code related to checkbox
:
Code PHP
:
$form['genero'] = $_POST['genero'];
elseif (isset($form['genero']))
$r1 = implode(",", $form['genero']); //<<<< Não funcionou
Code PHP
to write the checkbox
onscreen:
<div class="form-group col-md-4">
<label for="campo11">Selecione o Gênero</label><br>
<?php
foreach ($generos as $categ) {
echo '<input type="checkbox" name="genero[]" value="'. $categ['id'].'">'. $categ['genero'] .'</input><br>';
} ?>
<br>
</div>
The checkbox
are generated by a table that contains the ID and Name(table genera).
Follow full PHP code.
<?php
$generos = DBRead('generos', 'ORDER BY genero DESC');
if( !$generos)
echo '<h2>Você não possui generos cadastradas, <a href="add-categ.php">clique aqui para resolver isto</a>!</h2>';
else {
if(isset($_POST['publicar'])){
$form['tipo'] = DBEscape( strip_tags( trim( $_POST['tipo']) ) );
$form['titulo'] = DBEscape( strip_tags( trim( $_POST['titulo']) ) );
//$form['genero'] = DBEscape( strip_tags( trim( $_POST['genero']) ) );
$form['qualidade'] = DBEscape( strip_tags( trim( $_POST['qualidade']) ) );
$form['imdb'] = DBEscape( strip_tags( trim( $_POST['imdb']) ) );
$form['lancamento'] = DBEscape( strip_tags( trim( $_POST['lancamento']) ) );
$form['direcao'] = DBEscape( strip_tags( trim( $_POST['direcao']) ) );
$form['elenco'] = DBEscape( strip_tags( trim( $_POST['elenco']) ) );
$form['conteudo'] = str_replace( '\r\n', "\n", DBEscape( trim( $_POST['conteudo']) ) );
$form['url1'] = DBEscape( strip_tags( trim( $_POST['url1']) ) );
$form['genero'] = $_POST['genero'];
$form['status'] = DBEscape( strip_tags( trim( $_POST['status']) ) );
$form['data'] = date('Y-m-d H:i:s');
if (empty( $form ['tipo'] ))
echo '<div class="alert alert-info" role="alert">Preencha o tipo.</div>';
elseif (empty( $form ['titulo'] ))
echo '<div class="alert alert-info" role="alert">Preencha o titulo.</div>';
//elseif (empty( $form ['genero']))
// echo '<div class="alert alert-info" role="alert">Preencha o gênero.</div>';
elseif (empty( $form ['qualidade']))
echo '<div class="alert alert-info" role="alert">Preencha o Qualidade.</div>';
elseif (empty( $form ['imdb']))
echo '<div class="alert alert-info" role="alert">Preencha o IMDB.</div>';
elseif (empty( $form ['lancamento']))
echo '<div class="alert alert-info" role="alert">Preencha o Lançamento.</div>';
elseif (empty( $form ['direcao']))
echo '<div class="alert alert-info" role="alert">Preencha a Direção.</div>';
elseif (empty( $form ['elenco']))
echo '<div class="alert alert-info" role="alert">Preencha o Elenco.</div>';
elseif (empty( $form ['conteudo']))
echo '<div class="alert alert-info" role="alert">Preencha o conteudo.</div>';
//elseif (empty( $form ['capa']))
//echo '<div class="alert alert-info" role="alert">Preencha o capa do filme.</div>';
elseif (empty( $form ['url1']))
echo '<div class="alert alert-info" role="alert">Preencha o URL 1.</div>';
elseif (empty($form['genero']))
echo '<div class="alert alert-info" role="alert">Preencha o campo categoria.</div>';
elseif (empty( $form ['status']) && $form['status'] != '0')
echo '<div class="alert alert-info" role="alert">Preencha o status.</div>';
else {
$dbCheck = DBRead('posts', "WHERE titulo ='". $form['titulo'] . "'"); /*Checa se já existe algum titulo igual no banco*/
if($dbCheck)
echo '<div class="alert alert-warning" role="alert">Já existe uma postagem com este titulo.</div>';
else {
if( DBCreate('posts', $form ) )
echo '<div class="alert alert-success" role="alert">Sua postagem foi enviada com sucesso.</div>';
else {
echo '<div class="alert alert-danger" role="alert">Desculpe ocorreu um erro</div>';
}
}
}
echo '<hr>';
}
?>
I removed all elseif validation form, to work only with checkboxes...
<?php
$generos = DBRead('generos', 'ORDER BY genero DESC');
if( !$generos)
echo '<h2>Você não possui generos cadastradas, <a href="add-categ.php">clique aqui para resolver isto</a>!</h2>';
else {
if(isset($_POST['publicar'])){
$form['tipo'] = DBEscape( strip_tags( trim( $_POST['tipo']) ) );
$form['titulo'] = DBEscape( strip_tags( trim( $_POST['titulo']) ) );
//$form['genero'] = DBEscape( strip_tags( trim( $_POST['genero']) ) );
$form['qualidade'] = DBEscape( strip_tags( trim( $_POST['qualidade']) ) );
$form['imdb'] = DBEscape( strip_tags( trim( $_POST['imdb']) ) );
$form['lancamento'] = DBEscape( strip_tags( trim( $_POST['lancamento']) ) );
$form['direcao'] = DBEscape( strip_tags( trim( $_POST['direcao']) ) );
$form['elenco'] = DBEscape( strip_tags( trim( $_POST['elenco']) ) );
$form['conteudo'] = str_replace( '\r\n', "\n", DBEscape( trim( $_POST['conteudo']) ) );
$form['url1'] = DBEscape( strip_tags( trim( $_POST['url1']) ) );
$form['status'] = DBEscape( strip_tags( trim( $_POST['status']) ) );
$form['data'] = date('Y-m-d H:i:s');
$r1 = "";
$valor = "";
$camposSelecionados= "";
$form = array();
if (isset($_POST['genero'])){
$form = $_POST['genero'];
foreach($form as $valor){
if (!empty($valor)){
$camposSelecionados .= ",$valor";
}
}
$r1 = implode(",", $form);
}
echo "Selecionados: $camposSelecionados<br>";
echo "Todos os checkbox: $r1";
if( DBCreate('posts', $form ) )
echo '<div class="alert alert-success" role="alert">Sua postagem foi enviada com sucesso.</div>';
else {
echo '<div class="alert alert-danger" role="alert">Desculpe ocorreu um erro</div>';
}
}
echo '<hr>';
?>
Now I have an error message: Selected: ,1,2 All checkbox: 1,2You have an error in your SQL syntax; check the manual that Corresponds to your Mysql server version for the right syntax to use near '0, 1 ) VALUES ( '1', '2' )' at line 1
you need to add clasps
[]
in the attributename
to transform this into an array, equal in that question– rray
I did this, but it persists in recording only the last value.
– Henrique Silva
When you give a
print_r($_POST['genero']);
he comes as?– rray
At the beginning of the file where you receive the form data.
– rray
Oops! got... Array ( [0] => 1 [1] => 2 ) Thanks ;)
– Henrique Silva
@Henriquesilva, that pile of
elseif, else, if...
, I suggest you refactor that code better, because it’s really messed up.– Ivan Ferrer
You can summarize a lot of this process in fewer lines.
– Ivan Ferrer
@Ivanferrer Actually I can eliminate all validation, because the form will be just for me, and the main problem at the moment is the Insert of multiple values. Can give me a light?
– Henrique Silva