Ir para conteúdo
Fórum Script Brasil
  • 0

Inserir várias linhas de uma só vez


myphp

Pergunta

boa tarde galera! sou novo aqui no fórum...

estou desenvolvendo um sisteminha em php e mysql para cadastro de clientes, o sistema também exige que se cadastre "boletos"(na verdade é só o código do boleto, que o banco passa), para se fazer um controle de quem pagou ou não.

1 - esse cadastro eu estou fazendo com um form, tem la os campos, e um deles é a quantidade de parcelas(12 ou 24).

2 - no db eu não preciso de um id_boleto, pois a chave primária é o número do boleto.

3 - quando eu selecionar, no form, o número de parcelas, seja por um campo select ou chekbox ou text, e preencher o restante dos campo e clicar em cadastrar, preciso que seja cadastrado 12 ou 24 boletos no mysql.

4 - no preenchimento do formulário eu vou informar o número do boleto, ex: 25687, esse é o número do boleto 1, preciso que ao cadastrar no mysql os outros 12 ou 24 boletos, automaticamente o php ou o mysql faça o auto incremento no número dos boletos. se o boleto 1 é: 25687, o boleto 2 é: 25688, etc...

estou a alguns meses tentando fazer isso, mas até agora não consegui nada.

não estou procurando um código pronto, nada de mão beijada, quero aprender.

valeu galera, se der p/ ajudar aí agradeço muito.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

para informar o número do boleto, você pode usar o auto_increment no MySQL, você deixa ele selecionado como Primary Key e puxa o último valor e adciona +1 para exibir no formulário o número do boleto.

Quanto a parcela, eu usaria um IF para saber se são 12 ou 24, e então usaria um WHILE para ir gerando a quantidade necessárias de boleto, sem se preocupar com o número dele, uma vez que estaria usando o auto_increment.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá! Bom, se você está a algum tempo já tentando fazer isso, então já deve ter 'alguma noção' do php e mysql

Eu faria assim:

- 2 tabelas:

1a. com o cadastro do cliente, código do cliente, nome, endereço, etc

2a. com os numero dos boletos, opção de baixa, data vencimento de cada parcela, código do cliente, etc

- Ao clicar no botão de 'cadastrar', vai mandar os campos: nome,endereco,..., parcelas (12ou 24), e tb numero do boleto.

- Grave os dados do cadastro na 1a tabela (só cadastro) e tb a quantidade de parcelas (12/24, ou a quantidade que você quiser)

- pegue o numero do registro do cliente gravado no BD (tente o comando "$CODIGO=mysql_insert_id();" depois de você incluir o cadastro do cliente, que ele vai retornar o código do cliente $CODIGO)

- faça um loop (fo ($x=0;$x<$quantidade_parcelas;$x++) ) e inclua no BD, tabela2, todos os registros de boletos, somando $x+numero do boleto, para cada registro. Grave em cada registro do boleto o código do cliente $CODIGO.

Ex de tabelas:

tbl_cadastro:

codigo

nome

endereco

parcelas

tbl_boletos:

numero_boleto

baixa

data_vencimento

codigo_cliente

Espero que ajude um pouco :wacko:

Link para o comentário
Compartilhar em outros sites

  • 0
para informar o número do boleto, você pode usar o auto_increment no MySQL, você deixa ele selecionado como Primary Key e puxa o último valor e adciona +1 para exibir no formulário o número do boleto.

Quanto a parcela, eu usaria um IF para saber se são 12 ou 24, e então usaria um WHILE para ir gerando a quantidade necessárias de boleto, sem se preocupar com o número dele, uma vez que estaria usando o auto_increment.

hoje eu estava lendo sobre os comandos de repetição, e pensei nessa parada aí do IF e do WHILE, mas a opção que você deu do auto_increment no mysql não vai rolar, porque o código do boleto é um valor definido pelo banco, e creio que a continuação não vai casar...pensei em usar comando de incremento do php, mas ainda não tive tempo de testar.

vou ver se consigo, qualquer coisa eu volto.

valeu

Link para o comentário
Compartilhar em outros sites

  • 0
Olá! Bom, se você está a algum tempo já tentando fazer isso, então já deve ter 'alguma noção' do php e mysql

Eu faria assim:

- 2 tabelas:

1a. com o cadastro do cliente, código do cliente, nome, endereço, etc

2a. com os numero dos boletos, opção de baixa, data vencimento de cada parcela, código do cliente, etc

- Ao clicar no botão de 'cadastrar', vai mandar os campos: nome,endereco,..., parcelas (12ou 24), e tb numero do boleto.

- Grave os dados do cadastro na 1a tabela (só cadastro) e tb a quantidade de parcelas (12/24, ou a quantidade que você quiser)

- pegue o numero do registro do cliente gravado no BD (tente o comando "$CODIGO=mysql_insert_id();" depois de você incluir o cadastro do cliente, que ele vai retornar o código do cliente $CODIGO)

- faça um loop (fo ($x=0;$x<$quantidade_parcelas;$x++) ) e inclua no BD, tabela2, todos os registros de boletos, somando $x+numero do boleto, para cada registro. Grave em cada registro do boleto o código do cliente $CODIGO.

Ex de tabelas:

tbl_cadastro:

codigo

nome

endereco

parcelas

tbl_boletos:

numero_boleto

baixa

data_vencimento

codigo_cliente

Espero que ajude um pouco :wacko:

eu tenho mesmo as 2 tabelas q você citou, a 1º ta funcionando beleza, só falta mesmo a tabela dos boletos, vou testar o que o GtOkAi falo e posto aki o resultado. procurei por alguma coisa, ao menos parecida no google, mas não achei nada...

Link para o comentário
Compartilhar em outros sites

  • 0
para informar o número do boleto, você pode usar o auto_increment no MySQL, você deixa ele selecionado como Primary Key e puxa o último valor e adciona +1 para exibir no formulário o número do boleto.

Quanto a parcela, eu usaria um IF para saber se são 12 ou 24, e então usaria um WHILE para ir gerando a quantidade necessárias de boleto, sem se preocupar com o número dele, uma vez que estaria usando o auto_increment.

pow galera, não consegui nem começar...sou novo no php e mysql, to quebrando a cabeça aqui mas, não consigo entender, ou melhor, colocar na prática, esse "while p/ ir gerando os boletos".

se der p/ colocar um exemplo vai ajudar muito.

valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos supor que você esteja usando um checkbox para escolher quantidade de parcelas:

<input type="checkbox" name="parcelas" value="12"> 12x
<input type="checkbox" name="parcelas" value="24"> 24x
Então use o $_POST para pegar quantidade de parcelas:
$parcelas = $_POST['parcelas'];
echo "quantidade de parcelas: $parcelas";
Agora crie o IF e o while para fazer a rotina que você precisa:
if($parcelas == 12) {
$i = 0;  //Aqui você seta a variavel i para fazer a conta da quantidade de parcelas criadas

while($i < 12) 
{
// aqui você coloca o script para gerar 1 boleto
$i++; // aqui é para aumentar o valor de $i, assim quando chegar no $i = 12, para de gerar novos boletos.
echo "Boleto $i gerado."; // exibir valor do $i
}
}
if($parcelas == 24) {
$i = 0;  //Aqui você seta a variavel i para fazer a conta da quantidade de parcelas criadas

while($i < 24) 
{
// aqui você coloca o script para gerar 1 boleto
$i++; // aqui é para aumentar o valor de $i, assim quando chegar no $i = 24, para de gerar novos boletos.
echo "Boleto $i gerado."; // exibir valor do $i
}
}

Bom, esse é o jeito mais simples. ^^

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tentei aqui, mas ainda não consegui.

Seguinte:

Esse é o meu form:

<?php

if($_GET['funcao'] == "exibir"){

$id = $_GET['id'];

$nome = $_GET['nome'];

?>

<table width=503" border="0" align="center" cellpadding="3" cellspacing="3">

<tr>

<td width="491">

<form id="addboleto" name="addboleto" method="POST" action="funcao_boleto.php">

<fieldset>

<legend>ADICIONAR BOLETO</legend>

<table width="100%" border="0" cellspacing="3" cellpadding="3">

<tr>

<td align="right" class="style1">Nome do Cliente:

</td>

<td>

<label><input name="nome" type="text" id="nome" value="<?php echo $nome; ?>" size="25" />

</label>

</td>

<td align="right" class="style1">N&deg; da Proposta:</td>

<td><label><input name="id" type="text" id="id" value="<?php echo $id; ?>" size="10" />

</label></td>

</tr>

<tr>

<td width="103" class="style1" align="right">N&deg; do Boleto:</td>

<td width="223"><label>

<input name="nboleto" type="text" id="nboleto" size="8" />

</label></td>

<td width="79" class="style1" align="right">Parcela:</td>

<td width="45"><select name="parcela" id="parcela">

<?php

do {

?>

<option value="<?php echo $row_qparcela['12ou24]?>"><?php echo $row_qparcela['12ou24']?></option>

<?php

} while ($row_qparcela = mysql_fetch_assoc($qparcela));

$rows = mysql_num_rows($qparcela);

if($rows > 0) {

mysql_data_seek($qparcela, 0);

$row_qparcela = mysql_fetch_assoc($qparcela);

}

?>

</select></td>

</tr>

<tr>

<td class=style1" align="right">Data de Vencimento:</td>

<td colspan="3"><select name="dia" id="dia">

<?php

do {

?>

<option value="<?php echo $row_dias['dia]?>"><?php echo $row_dias['dia']?></option>

<?php

} while ($row_dias = mysql_fetch_assoc($dias));

$rows = mysql_num_rows($dias);

if($rows > 0) {

mysql_data_seek($dias, 0);

$row_dias = mysql_fetch_assoc($dias);

}

?>

</select>

<select name=mes" id="mes">

<?php

do {

?>

<option value="<?php echo $row_mes['meses]?>"><?php echo $row_mes['meses']?></option>

<?php

} while ($row_mes = mysql_fetch_assoc($mes));

$rows = mysql_num_rows($mes);

if($rows > 0) {

mysql_data_seek($mes, 0);

$row_mes = mysql_fetch_assoc($mes);

}

?>

</select>

<label>

<input name=ano" type="text" id="ano" size="3" maxlength="4" />

</label></td>

</tr>

<tr>

<td align="right" class="style1">Parcela Paga?</td>

<td><label>

<select name="parcela_paga" size="1" id="parcela_paga">

<?php

do {

?>

<option value="<?php echo $row_parcela_paga['parcela_paga]?>"<?php if (!(strcmp($row_parcela_paga['parcela_paga'], $row_boletos['parcela_paga']))) {echo "selected=\"selected\"";} ?>><?php echo $row_parcela_paga['parcela_paga']?></option>

<?php

} while ($row_parcela_paga = mysql_fetch_assoc($parcela_paga));

$rows = mysql_num_rows($parcela_paga);

if($rows > 0) {

mysql_data_seek($parcela_paga, 0);

$row_parcela_paga = mysql_fetch_assoc($parcela_paga);

}

?>

</select>

</label></td>

<td align=right"><span class="style1">Valor da Parcela:</span></td>

<td><input name="valor_parcela" type="text" id="valor_parcela" size="5" /></td>

</tr>

<tr>

<td align="right" class="style1">&nbsp;</td>

<td>&nbsp;</td>

<td colspan="2" align="right"><input type="submit" name="button" id="button" value="Adicionar" /></td>

</tr>

</table>

</fieldset>

</form>

<?php

}

?>

</td>

</tr>

</table>

Eu passo esses campos para uma página de função:

<?php

include "conexao.php";

$nproposta = $_POST['id];

$nome_cliente = $_POST['nome'];

$nboleto = $_POST['nboleto'];

$parcela = $_POST['parcela'];

$dia = $_POST['dia'];

$mes = $_POST['mes'];

$ano = $_POST['ano'];

$valor_parcela = $_POST['valor_parcela'];

$parcela_paga = $_POST['parcela_paga'];

//*******************************************************************

if($parcela == 12){

$i = 0;

while($i < 12){

$sql_gravar = mysql_query("INSERT INTO boleto (nproposta_boleto, nboleto, parcela, dia, mes, ano, valor_parcela, parcela_paga, nome_cliente) value ('$nproposta', '$nboleto', '$parcela', '$dia', '$mes', '$ano', '$valor_parcela', '$parcela_paga', '$nome_cliente')");

$i++;

echo "Boleto $i gerado.";

}

}

//*******************************************************************

if($parcela == 24){

$i = 0;

while($i < 24){

$sql_gravar = mysql_query("INSERT INTO boleto (nproposta_boleto, nboleto, parcela, dia, mes, ano, valor_parcela, parcela_paga, nome_cliente) value ('$nproposta', '$nboleto', '$parcela', '$dia', '$mes', '$ano', '$valor_parcela', '$parcela_paga', '$nome_cliente')");

$i++;

echo "Boleto $i gerado.";

}

}

?>

Bom, ele está inserindo só um boleto no db.

O que eu preciso fazer também é incrementar algumas variáveis, vê se você consegue entender.

As variáveis: $nboleto, $mes e $parcela tem que ser incrementadas antes de gravar.

$parcela, vai de 1 a 12 ou 24.

$nboleto, o primeiro registro o usuário vai informar, os outros 11 ou 23 devem ser incrementados automáticamente.

$mes, esse já é mais complicado, pois o usuário vai informar o mes do primeiro pagamento e o sistema tem que ir atribuindo o mes correto a cada parcela, alterando também o ano, quando necessário.

Espero que dê p/ vocês entenderem, isso está me tirando do a paciência, estou quase desistindo, o sistema está praticamente pronto, só falta isso.

Se der p/ ajudar vou agradecer muito. valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte, eu estive pensando aqui uma parada, é meio gambiarra, mas se funcionar tá ótimo, quero a opinião de vocês, não sei se dá certo.

tipo, eu pegar e criar uma página de função p/ adicionar só o primeiro boleto,com uma função p/ identificar a quantidade de parcelas, 12 ou 24, depois do insert into, fazer um "header location" p/ outra página de função, essa adicionando um segundo boleto, e assim sucessivamente até adicionar os 12 ou 24 boletos.

Só não sei como vou passar o valor das variáveis, acho que tem que ser via $_GET, se for a url vai ficar grande pacas, mas se não tiver outro jeito não tem problema.

Então, o que vocês acham?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...