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 attributenameto 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