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

Ajuda com GRANDE PROBLEMA, formulário dentro de outro formulário


Plábyo Rainer Gianniany

Pergunta

Boas galera, é o seguinte, vou direto ao ponto:

Tenho que cadastrar um livro no BD, e como sabemos um livro possui muitas vezes não só um, mais vários autores, então não posso colocar só um menu pro usuário escolher um autor e cadastrar.

Preciso colocar no formulário, alguma coisa (um botão add por exemplo) que possibilite ao usuário ir adicionando quantos autores ele quiser ao livro, tipo assim, ele seleciona um autor, clica em add e manda o autor

pro BD, mais não pra tabela LIVRO, e sim pra uma tabela chamada LIVRO_AUTOR, onde irá receber o id do livro e o id do autor.

Exemplo de um livro cadastrado assim na tabela LIVRO_AUTOR:

livro_id | autor_id

1 1

1 3

1 7

Bom, no exemplo acima, o livro 1 foi escrito pelos autores 1, 3 e 7.

Eu estava pensando em colocar um link de adicionar o autor, que quando o user clicasse abrisse uma tela pra ele adicionar os autores, ou então um botão add que quando ele selecionasse no menu o autor poderia clicar em add e manda-lo pro

BD, só que esse botão não poderia dar um refresh na página, se não cadastraria só o primeiro autor.

Não sei se ficou bem claro, mais é isso ai meu problema, que puder me ajudar fico muito grato, pois não tenho a mínima idéia de como fazer isso.

Vlw

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

pelo q entendi, voce quer fazer um formulario para relacionamento one-to-many

fiz um exemplo rápido aqui, não esta muito organizado, mais acho que vai te ajudar.

index.php

<?php
    //Quando realizar o POST entra no IF
    if ($_POST['enviar']){
        echo '<pre>';
        echo print_r($_POST);
        echo '</pre>';
    } 
?>
<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <title>Page Title</title>
        <meta charset="utf-8">
        <!--[if IE]>
          <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->

        <!-- Jquery -->
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
        
    </head>

    <body>
      <form method="post">
          <label for="livro">Livro</label><input id="livro" name="livro" type="text"/><br/>
          <label for="autor[]">Autor</label><input name="autor[]" type="text"/><br/>
          
          <input id="addAutor" type="button" value="Adicionar Autor"/><br/>
          
          <input name="enviar" type="submit" value="Enviar"/>
      </form>

          <!-- Javascript para adicionar campo ao clicar no botao do formulario -->
      <script type="text/javascript">
          $('#addAutor').live("click", function(){
            $(this).before('<div><label for="autor[]">Outro Autor</label><input name="autor[]" type="text"/></div>');
        });
    </script>
    </body>
</html>

Qualquer duvida só perguntar =)

Editado por Toze
Link para o comentário
Compartilhar em outros sites

  • 0
pelo q entendi, voce quer fazer um formulario para relacionamento one-to-many

fiz um exemplo rápido aqui, não esta muito organizado, mais acho que vai te ajudar.

index.php

<?php
    //Quando realizar o POST entra no IF
    if ($_POST['enviar']){
        echo '<pre>';
        echo print_r($_POST);
        echo '</pre>';
    } 
?>
<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <title>Page Title</title>
        <meta charset="utf-8">
        <!--[if IE]>
          &lt;script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->

        <!-- Jquery -->
        &lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
        
    </head>

    <body>
      <form method="post">
          <label for="livro">Livro</label><input id="livro" name="livro" type="text"/><br/>
          <label for="autor[]">Autor</label><input name="autor[]" type="text"/><br/>
          
          <input id="addAutor" type="button" value="Adicionar Autor"/><br/>
          
          <input name="enviar" type="submit" value="Enviar"/>
      </form>

          <!-- Javascript para adicionar campo ao clicar no botao do formulario -->
      &lt;script type="text/javascript">
          $('#addAutor').live("click", function(){
            $(this).before('<div><label for="autor[]">Outro Autor</label><input name="autor[]" type="text"/></div>');
        });
    </script>
    </body>
</html>
Qualquer duvida só perguntar =)
Estou com a mesma duvida só que em html. quero fazer o meu formulario se repetir para economizar papel
<html> 
<title>Tarefas</title>
<FORM NAME="Tarefas" STYLE="font-family:Verdana;font-size:10;font-style:normal">
<text STYLE="font-family:Verdana;font-size:12;font-style:normal">Matéria:</text> 
<SELECT name="matéria" STYLE="font-family:Verdana;font-size:12;font-style:normal">
<option>Português
<option>Matemática
<option>História
<option>Geografia
<option>Inglês
<option>Geometria
<option>Redação
<option>Ciências</option></select>
<p>
<text STYLE="font-family:Verdana;font-size:12;font-style:normal">Data:</text><b>
&lt;script Language="JavaScript">
<!--
mydate = new Date();
myday = mydate.getDay();
mymonth = mydate.getMonth();
myweekday= mydate.getDate();
weekday= myweekday; 

if(myday == 0)
day = " Domingo, " 

else if(myday == 1)
day = " Segunda - Feira, " 

else if(myday == 2)
day = " Terça - Feira, " 

else if(myday == 3)
day = " Quarta - Feira, " 

else if(myday == 4)
day = " Quinta - Feira, " 

else if(myday == 5)
day = " Sexta - Feira, " 

else if(myday == 6)
day = " Sábado, " 

if(mymonth == 0)
month = "Janeiro " 

else if(mymonth ==1)
month = "Fevereiro " 

else if(mymonth ==2)
month = "Março " 

else if(mymonth ==3)
month = "Abril " 

else if(mymonth ==4)
month = "Maio " 

else if(mymonth ==5)
month = "Junho " 

else if(mymonth ==6)
month = "Julho " 

else if(mymonth ==7)
month = "Agosto " 

else if(mymonth ==8)
month = "Setembro " 

else if(mymonth ==9)
month = "Outubro " 

else if(mymonth ==10)
month = "Novembro " 

else if(mymonth ==11)
month = "Dezembro " 

document.write("<font face=arial size=2>"+ day);
document.write(myweekday+" de "+month+ "</font>");
// -->
</script> </B>
<p>
<p>

<text STYLE="font-family:Verdana;font-size:12;font-style:normal">Data de entrega:</text>
                </script> </B>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">  
<html> 
<head> 
              &lt;script> 
          function mascara_data(data){ 
              var mydata = ''; 
              mydata = mydata + data; 
              if (mydata.length == 2){ 
                  mydata = mydata + '/'; 
                  document.forms[0].data.value = mydata; 
              } 
              if (mydata.length == 5){ 
                  mydata = mydata + '/'; 
                  document.forms[0].data.value = mydata; 
              } 
              if (mydata.length == 10){ 
                  verifica_data(); 
              } 
          } 
           
          function verifica_data () { 

            dia = (document.forms[0].data.value.substring(0,2)); 
            mes = (document.forms[0].data.value.substring(3,5)); 
            ano = (document.forms[0].data.value.substring(6,10)); 

            situacao = ""; 
            // verifica o dia valido para cada mes 
            if ((dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31) { 
                situacao = "falsa"; 
            } 

            // verifica se o mes e valido 
            if (mes < 01 || mes > 12 ) { 
                situacao = "falsa"; 
            } 

            // verifica se e ano bissexto 
            if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) { 
                situacao = "falsa"; 
            } 
    
            if (document.forms[0].data.value == "") { 
                situacao = "falsa"; 
            } 
    
            if (situacao == "falsa") { 
                alert("Data inválida!"); 
                document.forms[0].data.focus(); 
            } 
          } 

       </script> 
</head> 
<body> 
  <input type="text" name="data" OnKeyUp="mascara_data(this.value)" maxlength="10"> dd/mm/aaaa<br> 
</body> 
</html>
<p>
<p>
<text STYLE="font-family:Verdana;font-size:12;font-style:normal">Descrição:</text>
<TEXTAREA COLS="50" ROWS="3" NAME="Descrição" ID="Descrição" STYLE="font-family:Verdana;font-size:12;font-style:normal">Descrição</TEXTAREA>
<p>

<p>    
<p>
<p>        
<div class="pre-spoiler">
<input id="xs" value="Página" style="margin-left:0px; padding: 0px; width: 80px; " onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Ocultar'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.value = 'Página';}" type="button"> </div>
<div>
<div class="spoiler" style="display: none;">
<TEXTAREA COLS="30" ROWS="1" NAME="Páginas" STYLE="font-family:verdana;font-size:12;font-style:normal"></TEXTAREA>
</div>
</div>
<a href="java script:window.print()"><INPUT TYPE="button" NAME="Imprimir" VALUE="Imprimir" STYLE="font-family:Verdana;font-size:12"></a>
</html>

Me ajudem please.....

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...