Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Mais uma dúvida... acho que com essa resolvo meus problemas...por enquanto...rs..
Tenho um form com dois campos tipo "input" simples e um select que é um multiple select
<tr><td>Responsável</td>
<td><input type="text" name="distrib"></td>
<tr><td>Tipo de Parcelamento</td>
<td><input type="text" name="tipo_parc"></td>
<td>Contribuinte</td>
<select multiple name="contrib[]">
<?php
include 'conecta.php';
$sql = mysql_query("SELECT * FROM contrib");
while($monta = mysql_fetch_assoc($sql)){
echo '<option value="'.$monta['cnpj'].'">'.$monta['nome'].'</option>';
}
?>
</select>
Esse campo multiple select vai passar mais de um dado pra ser inserido no BD, mas com apenas um dos outros campos... mais ou menos assim:
Responsável: José
Tipo: Parc 1
Contribuinte: Empresa1, Empresa 2, Empresa 3
ou seja, vou ter que inserir três linhas no BD... assim:
José, Parc 1, Empresa1
José, Parc 1, Empresa2
José, Parc 1, Empresa3
Alguém sabe como fazer?
Na verdade eu tenho que pegar esse multiple select e recebê-lo com Array mas não sei como jogar isso no INSERT
Editei minha primeira reposta agora a pouco fazendo exatamente isso :)
interessante.... pena que vou ter que esperar até amanhã pra testar... Obrigado dedas...
Bom dia,
Puxa... tô impressionado... boa solução!!!!!!!
EDITADO...
JÁ VI QUAL ERA O ERRO ANTERIOR e consegui consertar.. agora só preciso saber se dá pra passar dois valores pelo select
Outra dúvida... o select a seguir tá passando o CNPJ
'<option value="'.$monta['cnpj'].'">'.$monta['nome'].'</option>';
Eu consigo passar o CNPJ e o NOME? Eu preciso dos dois...Obrigado!!!
Você pode passar os 2 valores utilizando algum caractere para separá-los
<form action="">
<select name="select">
<?php
foreach ($result as $monta) {
echo '<option value="'.$monta['nome'].'|'.$monta['cnpj'].'">'.$monta['nome'].'</option>';
}
?>
</select>
</form>
E separar no arquivo submetido
<?php
$data = $_POST;
$extract = explode('|', $data['select']);
$nome = $extract[0];
$cnpj = $extract[1];
var_dump($nome, $cnpj);
Ou se preferir, você pode enviar apenas o cnpj e no arquivo submetido realizar uma consulta no banco para retornar o nome daquele cnpj.
Acho que a opção de enviar é mais fácil pq evita nova pesquisa...
Mas alguma coisa fiz errada pq tá retornando só números e letras... assim:
A
0
8
A
<select style="width:600px;eight:2000px"
multiple name="contrib[]">
<?php
include 'conecta.php';
$sql = mysql_query(
"SELECT * FROM contrib");
while($result =
mysql_fetch_assoc($sql)){
foreach ($result as
$monta) {
echo '<option value="'.$monta['nome'].'|'.$monta['cnpj'].'">'.$monta['nome'].'</option>';
}
}
?>
</select>O código que te passei era apenas para você pegar como exemplo, se você prestar atenção, você inserir um loop dentro de outro sem necessidade.
Tente dessa forma
<select style="width: 600px; height: 2000px" multiple name="contrib[]">
<?php
include 'conecta.php';
$query = mysql_query("SELECT * FROM contrib");
while($result = mysql_fetch_assoc($query)){
echo '<option value="'.$result['nome'].'|'.$result['cnpj'].'">'.$result['nome'].'</option>';
}
?>
</select>
<?php
$data = $_POST;
// Esqueci que seu select era multiple :/
foreach ($data['contrib'] as $value) {
$contribuinte = explode('|', $value);
$nome = $contribuinte[0];
$cnpj = $contribuinte[1];
var_dump($nome, $cnpj);
}
Seu trabalho agora é juntar esse código com o que eu coloquei lá em cima(post #2) e pronto :)
Bem que eu tava achando estranho mesmo...rs...
essa linha... var_dump($nome, $CNPJ);
Tá juntando o nome e o CNPJ né... mas como eu uso ela se ela não é uma variável (pelo menos acho que não)?
se fosse, seria com o implode não? como você fez....
values " . implode(', ', $contribuintes);
Eu dei uma lida sobre essa função no manual php mas não consegui entender como usar....
Cara, a função var_dump apenas imprime o valor e seu tipo. É muito utilizada para fazer depuração. Por exemplo:
<?php
$var = true;
var_dump($var); // bool(true)
Para você pegar os valores nome e cnpj, basta utilizar as variáveis criadas($nome e $cnpj) após a separação.dedas... obrigado pela ajuda!!!! Achei que não ia conseguir mas deu certo!!!!!! Valeu mesmo!!!!
Dessa forma você monta o sql para inserção de múltiplos registros:
Output:
INSERT INTO example (responsavel, tipo, contribuinte) values ('jose', 'parc 1', 'Empresa1'), ('jose', 'parc 1', 'Empresa2'), ('jose', 'parc 1', 'Empresa3')
Porém, se existe a possibilidade de 1 responsável possuir diversos contribuintes, essa não é a maneira mais correta de fazer isso. O ideal seria criar uma tabela apenas para os contribuintes e relacionar com os resposáveis.