Multiple select saves everything in the bank, how to save only what I chose in select?

Asked

Viewed 201 times

-1

I have a select Multiple in my form, what happens is that when I submit the form, it’s saving all Options in the bank, I wanted it to record in the bank only those that I clicked on select Example: I only clicked on (SEGUNDA,TERCA) there he would record only this in the bank, only he is recording as if I had selected SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO and DOMINGO, follow my code below help me please:

select page select this here only.

FORM CODE:

<div class="form-group">
           <h1>Selecione os dias dos Ensaios:</h1>
          <select multiple class="form-control" name="diaensaio[]" id="diaensaio">
                   <option>SEGUNDA</option>
                   <option>TERCA</option>
                   <option>QUARTA</option>
                   <option>QUINTA</option>
                   <option>SEXTA</option>
                   <option>SABADO</option>
                   <option>DOMINGO</option>
          </select>
      </div> 

Code of the page that makes the insertion in the bank.

saveFichaCadastralMusica.php

<?php

session_start();

$codUsuario = $_SESSION['UsuarioID'];
$ieqbairro = strtoupper($_POST['ieqbairro']);
$pastor = strtoupper($_POST['pastor']);
$lider = strtoupper($_POST['lider']);
$celulaAtivas = strtoupper($_POST['celulasativas']);
$participantes = strtoupper($_POST['participantescelulas']);
$quantidadereunioes = strtoupper($_POST['quantidadereunioes']);
$quantidaensamensal = strtoupper($_POST['quantidaensamensal']);
/*$diaensaio = strtoupper($_POST['diaensaio']);*/
$horaensaio = strtoupper($_POST['horaensaio']);
$totalmembrosdepartamento = strtoupper($_POST['totalmembrosdepartamento']);
$vocal = strtoupper($_POST['vocal']);
$mulhercontralto = strtoupper($_POST['mulhercontralto']);
$mezzosoprano = strtoupper($_POST['mezzosoprano']);
$soprano = strtoupper($_POST['soprano']);
$homensbaixo = strtoupper($_POST['homensbaixo']);
$baritono = strtoupper($_POST['baritono']);
$tenor = strtoupper($_POST['tenor']);
$guitarra = strtoupper($_POST['guitarrista']);
$baterista = strtoupper($_POST['bateristas']);
$tecladista = strtoupper($_POST['tecladistas']);
$violao = strtoupper($_POST['violao']);
$baixo = strtoupper($_POST['baixistas']);
$meialua = strtoupper($_POST['meialua']);
$cajon = strtoupper($_POST['cajon']);
$outros = strtoupper($_POST['outros']);
$ministeriodecarreira = strtoupper($_POST['ministeriocarreira']);
$descrinomemstcarreira = strtoupper($_POST['nomeministeriocarreira']);
$connect = mysqli_connect('localhost','root','') or die('Erro ao conectar ao banco de dados');
$db = mysqli_select_db($connect,'db_uberlandia');
mysqli_set_charset($connect,'utf8');

$diaensaio = '';
foreach($_POST['diaensaio'] as $s){
    $diaensaio .= ',' . $s;
}
//para remover a primeira virgula
$diaensaio = ltrim($diaensaio, ',');

$query = mysqli_query($connect,"INSERT INTO ficha_Cadastral_Musica (CodUsuario,ieqbairro, pastor, lider, celulaAtivas, participantescelulas, quantidadereunioes, quantidaensamensal,diaensaio, horaensaio, totalmenbrosminis, vocalquant, mulhercontralto, mulhermezzosoprano, mulhersoprano, homensbaixo, homensbaritono, homenstenor, guitarraqtd, bateristaqtd, tecladistaqtd, violaoqtd, baixoqtd, meialuaqtd, cajonqtd, outros, ministeriodecarreira, descrinomemstcarreira) VALUES ('$codUsuario','$ieqbairro', '$pastor', '$lider', '$celulaAtivas', '$participantes', '$quantidadereunioes', '$quantidaensamensal', '$diaensaio', '$horaensaio', '$totalmembrosdepartamento','$vocal', '$mulhercontralto', '$mezzosoprano','$soprano', '$homensbaixo', '$baritono', '$tenor', '$guitarra', '$baterista', '$tecladista', '$violao', '$baixo', '$meialua', '$cajon', '$outros', '$ministeriodecarreira', '$descrinomemstcarreira')") or die('Erro ao inserir ao banco de dados'); 

if($query){
    echo"<script language='javascript' type='text/javascript'>alert('Dados Salvos com sucesso!');window.location.href='menuMusica.php'</script>";

    }

mysqli_close($connect);
?>

Now see how the information was saved in the bank:

inserir a descrição da imagem aqui

  • What is the result of var_dump($_POST['diaensaio[]']);?

  • @Costamilam you say what you recorded in the database ?

  • When submitting the form to the PHP page saved in the database (by placing this section), what is the result?

  • @Costamilam Voce speaks put in my code so $diaensaio = ''; foreach($_POST['diaensaio'] as $s){ $diaensaio .= ',' . $s; } //to remove the first comma $diaensaio = ltrim($diaensaio, ','); var_dump($_POST['diaensaio[]]); , and submit the form ?

1 answer

0


Just make a implode in the array using the comma as the value separator:

$diaensaio = implode(",", $_POST['diaensaio']);

Suppose we selected the days MONDAY, FOURTH and FIFTH, with the implode the result will already be comma separated values:

SEGUNDA,QUARTA,QUINTA

Your code would look like this (note the line below the comment // dias dos ensaio):

<?php

session_start();

$codUsuario = $_SESSION['UsuarioID'];
$ieqbairro = strtoupper($_POST['ieqbairro']);
$pastor = strtoupper($_POST['pastor']);
$lider = strtoupper($_POST['lider']);
$celulaAtivas = strtoupper($_POST['celulasativas']);
$participantes = strtoupper($_POST['participantescelulas']);
$quantidadereunioes = strtoupper($_POST['quantidadereunioes']);
$quantidaensamensal = strtoupper($_POST['quantidaensamensal']);
// dias dos ensaio
$diaensaio = implode(",", $_POST['diaensaio']);
$horaensaio = strtoupper($_POST['horaensaio']);
$totalmembrosdepartamento = strtoupper($_POST['totalmembrosdepartamento']);
$vocal = strtoupper($_POST['vocal']);
$mulhercontralto = strtoupper($_POST['mulhercontralto']);
$mezzosoprano = strtoupper($_POST['mezzosoprano']);
$soprano = strtoupper($_POST['soprano']);
$homensbaixo = strtoupper($_POST['homensbaixo']);
$baritono = strtoupper($_POST['baritono']);
$tenor = strtoupper($_POST['tenor']);
$guitarra = strtoupper($_POST['guitarrista']);
$baterista = strtoupper($_POST['bateristas']);
$tecladista = strtoupper($_POST['tecladistas']);
$violao = strtoupper($_POST['violao']);
$baixo = strtoupper($_POST['baixistas']);
$meialua = strtoupper($_POST['meialua']);
$cajon = strtoupper($_POST['cajon']);
$outros = strtoupper($_POST['outros']);
$ministeriodecarreira = strtoupper($_POST['ministeriocarreira']);
$descrinomemstcarreira = strtoupper($_POST['nomeministeriocarreira']);
$connect = mysqli_connect('localhost','root','') or die('Erro ao conectar ao banco de dados');
$db = mysqli_select_db($connect,'db_uberlandia');
mysqli_set_charset($connect,'utf8');


$query = mysqli_query($connect,"INSERT INTO ficha_Cadastral_Musica (CodUsuario,ieqbairro, pastor, lider, celulaAtivas, participantescelulas, quantidadereunioes, quantidaensamensal,diaensaio, horaensaio, totalmenbrosminis, vocalquant, mulhercontralto, mulhermezzosoprano, mulhersoprano, homensbaixo, homensbaritono, homenstenor, guitarraqtd, bateristaqtd, tecladistaqtd, violaoqtd, baixoqtd, meialuaqtd, cajonqtd, outros, ministeriodecarreira, descrinomemstcarreira) VALUES ('$codUsuario','$ieqbairro', '$pastor', '$lider', '$celulaAtivas', '$participantes', '$quantidadereunioes', '$quantidaensamensal', '$diaensaio', '$horaensaio', '$totalmembrosdepartamento','$vocal', '$mulhercontralto', '$mezzosoprano','$soprano', '$homensbaixo', '$baritono', '$tenor', '$guitarra', '$baterista', '$tecladista', '$violao', '$baixo', '$meialua', '$cajon', '$outros', '$ministeriodecarreira', '$descrinomemstcarreira')") or die('Erro ao inserir ao banco de dados'); 

if($query){
    echo"<script language='javascript' type='text/javascript'>alert('Dados Salvos com sucesso!');window.location.href='menuMusica.php'</script>";

    }

mysqli_close($connect);
?>

Obs.: the value in $_POST['diaensaio'] should always be full, otherwise it will cause error in implode.

  • could show me how it would look in the code I posted above ?

  • I only put what you gave me, but you didn’t save anything at the bank. I got all this here : $diaensaio = ''; foreach($_POST['diaensaio'] as $s){ $diaensaio .= ',' . $s; } //to remove the first comma $diaensaio = ltrim($diaensaio, ','); E put this only: $diaensaio = implode(",", $_POST['diaensaio']);

  • more need to have the foreach and then the $diaensaio = implode(",", $_POST['diaensaio']); ?

  • Now he has saved in the bank, but he keeps recording everything that is in select and not what I have selected know, he is recording like this in the bank: Example(SECOND, FOURTH, FIFTH, SATURDAY, SUNDAY) being that I have marked SECOND and FIFTH

  • put your code so I can see here please

  • is there something wrong with my Insert or my html I will post here

  • $query = mysqli_query($connect,"INSERT INTO ficha_Cadastral_Musica (CodUsuario,ieqbairro, pastor, lider, celulaAtivas, participantescelulas, quantidadereunioes, quantidaensamensal,diaensaio, horaensaio, totalmenbrosminis, vocalquant, mulhercontralto, mulhermezzosoprano, mulhersoprano, homensbaixo, homensbaritono, homenstenor, guitarraqtd, bateristaqtd, tecladistaqtd, violaoqtd, baixoqtd, meialuaqtd, cajonqtd, outros, ministeriodecarreira, descrinomemstcarreira)

  • VALUES ('$codUsuario','$ieqbairro', '$pastor', '$lider', '$celulaAtivas', '$participantes', '$quantidadereunioes', '$quantidaensamensal', '$diaensaio', '$horaensaio', '$totalmembrosdepartamento','$vocal', '$mulhercontralto', '$mezzosoprano','$soprano', '$homensbaixo', '$baritono', '$tenor', '$guitar', '$drummer', '$keyboardist', '$violao', '$bass', '$meialua', '$Cajon', '$others', '$ministeriodecarreira', '$descrinomemstcarreira')") or die('Error when entering to database');

  • <select Multiple name="diaensaio[]" id="diaensaio"> <option value="SEGUNDA">SEGUNDA</option> <option value="TERCA">TERCA</option> <option value="FOURTH">FOURTH</option> <option value="FIFTH">FIFTH</option> <option value="SIXTH">SIXTH</option> <option value="SABADO">SABADO</option> <option value="DOMINGO">DOMINGO</option> </select> </div>

  • really weird when I echo on the screen to see what’s coming, it’s going on every day of the week, I don’t know how to fix it

  • got now worked worked out, I had forgotten that I had created a function in Avascript that selected everything I had in my Multiple select kkk, thanks for the strength

Show 6 more comments

Browser other questions tagged

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