2016-10-26 9 views
0

そこに!複数のチェックボックスを含むフォームから複数の値を挿入するには

私は、このHTMLがあります。

<form method="POST" action="incluindo1.php"> 
     <fieldset> 
      <legend>Incluir Produto</legend> 
      <label for="nome">Nome:</label><br> 
      <input type="text" name="nome" class="" placeholder="Digite o nome"><br> 
      <label for="email">Email:</label><br> 
      <input type="email" name="email" class="" placeholder="Digite o email"><br> 
      <label for="categoria">Categoria:</label><br> 
      <select name="categoria"> 
       <option value="selecione">Selecione</option> 
       <option value="a">A</option> 
       <option value="b">B</option> 
       <option value="c">C</option> 
       <option value="d">D</option> 
      </select><br> 
      <label for="preferencias">Preferências musicais:<br> 
       <input type="checkbox" name="preferencias[]" value="Clássica">Clássica 
       <input type="checkbox" name="preferencias[]" value="Rock">Rock 
       <input type="checkbox" name="preferencias[]" value="Pop">Pop 
       <input type="checkbox" name="preferencias[]" value="MPB">MPB 
       <input type="checkbox" name="preferencias[]" value="Flashouse">Flashouse 
      </label><br> 
      <textarea name="observacao" class="" placeholder="Digite sua observação"></textarea><br> 
      <input type="submit" value="Incluir" name="incluir" id="incluir"> 
     </fieldset> 
    </form> 

をそして私はこのPHPがあります。

include "conecta_mysqli.inc.php"; 

$nome=$_POST["nome"]; 
$email=$_POST["email"]; 
$categoria=$_POST["categoria"]; 
$preferencias=$_POST["preferencias"]; 
$observacao=$_POST["observacao"]; 

$inclusao = mysqli_query($conexao, "INSERT INTO pessoas_a VALUES(null,'$nome','$email','$categoria','$preferencias','$observacao')"); 

そして、このSQLを:

create table pessoas_a(
id int(11) AUTO_INCREMENT, 
nome varchar(50) not null, 
email varchar(30) not null, 
categoria char(1) not null, 
preferencias text not null, 
observacao text not null, 
primary key(id) 
); 

どのようにそれらの値を挿入するための最良の方法ですMySQL

答えて

0

Rは非常にシンプルな形は、(残りの部分を残して、代わりに$preferenciaを使用してください)あなたは/

をくださいしたいalllあなたは$preferencias as $preferencia (その配列理由)を反復して、クエリ内の各エントリを挿入することができますですが、それは、各エントリのために書き込みますデータベース内の行、ただしimplode(',',$_POST["preferencias"])も1つのエントリを書き込むことができます(この方法で実装できる場合)。あなたがやりたいことややりたいことすべてに依存します

0

データが同じ行に残る場合は、シリアル化する必要があります。欠点は、それらの値を索引付けして照会することができないことです。そうでない場合は、別のテーブルを作成してデータを相互参照する必要があります。以下はシリアライズのアプローチです。

include "conecta_mysqli.inc.php"; 
$nome=$_POST["nome"]; 
$email=$_POST["email"]; 
$categoria=$_POST["categoria"]; 
$preferencias= serialize($_POST["preferencias"]); 
$observacao= serialize($_POST["observacao"]); 

$inclusao = mysqli_query($conexao, "INSERT INTO pessoas_a VALUES(null,'$nome','$email','$categoria','$preferencias','$observacao')"); 
関連する問題