Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mcd more core

Formulario Dinâmico com Loop em PHP

Recommended Posts

Pessoal, tenho o seguinte formulario abaixo que é dinâmico, posso add um campo ou excluir, até ai tudo OK.

O problema agora é o seguinte...

 

Eu adiciono tudo no BD por meio do formulario, porém precisarei ter a opção ( Alterar dados ) ao qual me exibirá todos os dados que eu inserir no BD por meio daquele formulario, a questão é...

Como posso fazer o LOOP de volta na quantidade dos dados inseridos e que estejam em seu determinado lugar no Formulario Dinâmico.

 

Ex.:

1º) Eu cadastro ( NOME, DATA, DATA, FOTO ) por meio do formulario dinâmico, o ID dele é [2]

2º) Eu consulto por esse ID [2] para poder alterar os dados, quero saber como fazer o LOOP de volta de todos os dados inseridos ( NOME, DATA, DATA, FOTO ).

 

Irei postar meus códigos abaixo, se alguem tiver uma solução na questão do ( FORM DINÂMICO ) para voltar a mesma quantidade ficarei agradecido pela ajuda, e também já será uma dúvida resolvida para futuros programdores.

 

----

 

 

####### FORM DINÂMICO #######


<html>
<head>
<script type="text/javascript">
var qtdeCampos = 0;
function addCampos() 
{
if(qtdeCampos<"3"){

var objPai = document.getElementById("campoPai");
//Criando o elemento DIV;
var objFilho = document.createElement("div");
//Definindo atributos ao objFilho:
objFilho.setAttribute("id","filho"+qtdeCampos);
//Inserindo o elemento no pai:
objPai.appendChild(objFilho);
//Escrevendo algo no filho recém-criado:
document.getElementById("filho"+qtdeCampos).innerHTML = "<fieldset><legend>Nome</legend><label>nome: <input type='text' id='nome"+qtdeCampos+"' name='nome[]'></label><br /></fieldset> <input type='button' onclick='removerCampo("+qtdeCampos+")' value='Apagar campo'>";
qtdeCampos++;
}
}
function removerCampo(id) {
var objPai = document.getElementById("campoPai");
var objFilho = document.getElementById("filho"+id);
//Removendo o DIV com id específico do nó-pai:
var removido = objPai.removeChild(objFilho);
}


var qtdeCampos2 = 0;
function addCampos2() 
{
if(qtdeCampos2<"3"){

var objPai2 = document.getElementById("campoPai2");
//Criando o elemento DIV;
var objFilho2 = document.createElement("div");
//Definindo atributos ao objFilho:
objFilho2.setAttribute("id","filho2"+qtdeCampos2);
//Inserindo o elemento no pai:
objPai2.appendChild(objFilho2);
//Escrevendo algo no filho recém-criado:
document.getElementById("filho2"+qtdeCampos2).innerHTML = "<fieldset><legend>Data</legend><label>data: <input type='text' id='data"+qtdeCampos2+"' name='data[]'></label><br /></fieldset> <input type='button' onclick='removerCampo2("+qtdeCampos2+")' value='Apagar campo'>";
qtdeCampos2++;
}
}
function removerCampo2(id) {
var objPai2 = document.getElementById("campoPai2");
var objFilho2 = document.getElementById("filho2"+id);
//Removendo o DIV com id específico do nó-pai:
var removido = objPai2.removeChild(objFilho2);
}

</script>
</head>
<body>
<form name="form1" action="teste2.php" method="post">
<div id="campoPai"></div>
<input type="button" value="Adicionar campos" onClick="addCampos()">
<br>
<br>

<div id="campoPai2"></div>
<input type="button" value="Adicionar campos" onClick="addCampos2()">



<br><br><input type="submit" value="Enviar">
</form>
</body>
</html>

 

 

####### FUNÇÃO PHP #######

<?php

foreach($_POST["nome"] as $key => $error){

$nome=$_POST['nome'][$key];

$sql=mysql_query("INSERT INTO tabela (nome) VALUES ('$nome')");	 
}

foreach($_POST["data"] as $key => $error){

$data=$_POST['data'][$key];

$sql=mysql_query("INSERT INTO tabela(data) VALUE ('$data')");	 
}


echo"Cadastrado com Sucesso!";

?>

 

 

Se alguem tiver uma dica, forma como fazer qual quer coisa que me dê essa força ai, agradeço!

 

AGUARDO! B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

o form é dinamico mas parece que a estrutura da tabela é estática!!

como você sabe qual nome e qual data são do mesmo cadastro depois de inserir na tabela???

Compartilhar este post


Link para o post
Compartilhar em outros sites

o form é dinamico mas parece que a estrutura da tabela é estática!!

como você sabe qual nome e qual data são do mesmo cadastro depois de inserir na tabela???

 

A tabela é Dinâmica, a FUNÇÃO PHP, faz um LOOP independente da quantidade de campos que vier do formulario dinâmico.

 

E quando eu puxar os dados para alterar eu irei puxar por meio de uma função que irei fazer ( Nº ID ) que assim poderei puxar tudo JUNTO e organizar por GROUP BY n_id.

 

Só preciso saber como fazer o Loop inverso na tabela dinâmica para exibir os dados.

 

Aguardo alguma dica, sugestão, solução da galera!

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a estrutura da sua tabela??

 

 

A estrutura é muita grande.

Fazendo um exemplo simples somente com ( TITULO, NOME, DATA ) está bom, o exemplo de como ficar eu implemento na minha tabela.

 

Só preciso de uma dica, uma forma de fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok tudo bem,

se você consegue pegar os dados da tabela de volta é só você chamar as funções javascript dentro do loop php para criar os campos e popular

tipo

<script>
function addCampos(nome){ 
  ...
  document.getElementById("filho"+qtdeCampos).innerHTML = "<fieldset><legend>Nome</legend><label>nome: "+
  "<input type='text' id='nome"+qtdeCampos+"' value='"+nome+"' name='nome[]'>"+
  "</label><br /></fieldset> <input type='button' onclick='removerCampo("+qtdeCampos+")' value='Apagar campo'>"; 
  ...
} 
function addCampos2(descricao){ 
  ...
  document.getElementById("filho2"+qtdeCampos2).innerHTML = "<fieldset><legend>Data</legend><label>data: "+
  "<input type='text' id='data"+qtdeCampos2+"' value='"+descricao+"' name='data[]'>"+
  "</label><br /></fieldset> <input type='button' onclick='removerCampo2("+qtdeCampos2+")' value='Apagar campo'>"; 
  ...
} 
</script>
<?php
while($linha = mysql_fetch_assoc($query)){
  echo "<script>addcampos('{$linha['NOME']}','{$linha['DESCRICAO']}')</script>";		
  echo "<script>addCampos2('{$linha['DESCRICAO']}')</script>";	
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, será que alguém consegue ai me dar essa força, sei que é coisa simples boba, mas estou mesmo a 2 dias sem conseguir nenhum resultado positivo.

 

Veja...

Meu código ele pega o LOOP dos arquivos que vem do BD, porém se eu "EXCLUIR" algum campo tanto já do LOOP ou de um novo que eu tenha adicionado, ele acaba EXCLUINDO DE TODOS logo depois que eu salvo!

 

O que preciso é de uma forma que me gere um ( ID ) para cada campo de EXCLUSÃO, dessa forma eu poderei ter controle e a programação saberá quem ele deve somente EXCLUIR.

 

Segue abaixo meu Código ( Mistura de PHP + Javascript )

 

####### ARQUIVO DE LOOP E JAVASCRIPT #########

     <?php
       $sql1=mysql_query("select * from jogadores where pedido='$pedido' AND dclube!=''");
echo  $m1=mysql_num_rows($sql1);

       $sql2=mysql_query("select * from jogadores where pedido='$pedido' AND dtitulo!=''");
echo $m2=mysql_num_rows($sql2);

       $sql3=mysql_query("select * from jogadores where pedido='$pedido' AND treinador!=''");
echo $m3=mysql_num_rows($sql3);

       $sql4=mysql_query("select * from jogadores where pedido='$pedido' AND link!=''");
echo $m4=mysql_num_rows($sql4);
       ?>
<script type="text/javascript"> 
var counter = 0;
var coachcounter = <?php echo"$m3";?>;
var activitycounter = <?php echo"$m2";?>;
var videocounter = <?php echo"$m4";?>;
var careercounter = <?php echo"$m1";?>;


function remove(parent) {
       switch (parent) {
               case 'list_fotos':
                       if (photocounter <= 0)
                               return;
                       photocounter--;
                       break;
               case 'list_treinadores':
                       if (coachcounter <= 0)
                               return;
                       coachcounter--;
                       break;
               case 'list_participacao':
                       if (activitycounter <= 0)
                               return;
                       activitycounter--;
                       break;
               case 'list_carreira':
                       if (careercounter <= 0)
                               return;
                       careercounter--;
                       break;
               case 'list_videos':
                       if (videocounter <= 0)
                               return;
                       videocounter--;
                       break;
       }
}

function moreFields(element, parent) {
       switch (parent) {
               case 'list_fotos':
                       if (photocounter >= 3)
                               return;
                       photocounter++;
                       break;
               case 'list_treinadores':
                       if (coachcounter >= 20)
                               return;
                       coachcounter++;
                       break;
               case 'list_participacao':
                       if (activitycounter >= 20)
                               return;
                       activitycounter++;
                       break;
               case 'list_carreira':
                       if (careercounter >= 20)
                               return;
                       careercounter++;
                       break;
               case 'list_videos':
                       if (videocounter >= 2)
                               return;
                       videocounter++;
                       break;
       }
       var newFields = document.getElementById(element).cloneNode(true);
       //var newFields = document.createElement('input');
       //newFields.type = element;
       newFields.id = '';
       newFields.style.display = 'block';
       newFields.value = '';
       //newFields.name = 'field[]';

       var insertHere = document.getElementById(parent);
       insertHere.appendChild(newFields,insertHere);
}
</script> 

 

 

 

----


################ ARQUIVO QUE FAZ O LOOP INTERNO E OUTROS DETALHES ##################


<div class="marcador_esq"> 
               <div class="marcador_dir"> 
                       <div class="titulo"><p>Data</p></div> 
                       <div class="item"><p>Clube</p></div> 
               </div> 
       </div> 
   <?php
       $sql1=mysql_query("select * from jogadores where pedido='$pedido' AND dclube!=''");
       while($mult=mysql_fetch_array($sql1))
       {
       ?>
<div style="display:block" class="marcador_esq"> 
           <div class="marcador_dir"> 
               <div style="height:45px" class="titulo"><input name="dclube[]" type="text" value="<?php echo $mult['dclube'];?>" /><br />
<input name="dclube2[]" type="text" value="<?php echo $mult['dclube2'];?>" />
</div> 
               <div class="item"><input name="clube[]" type="text" value="<?php echo $mult['clube'];?>" /></div> 
                               <div style="margin-top:5px;" class="item"><input name="clube2[]" type="text" value="<?php echo $mult['clube2'];?>" /></div> 
           </div> 
                               <img class="remover_item" onclick="this.parentNode.parentNode.removeChild(this.parentNode); remove('list_carreira');" src="../img-site/remove_x.png"/> 
               </div>
       <?php
       }
       ?>
       </div> 

       <!-- PARTICIPAÇÃO --> 
       <div id="list_participacao" class="carreira"> 
   <div class="carreira_edit"> 
       <div class="atributos"><p>Principais Participações e Títulos</p></div> 
       <div class="mais_itens"><img onClick="moreFields('item_participacao', 'list_participacao')" src="../img-site/add_mais.png"/></div> 
   </div> 

       <div class="marcador_esq"> 
               <div class="marcador_dir"> 
                       <div style="height:45px" class="titulo"><p>Data</p></div> 
                       <div class="item"><p>Descricao</p></div> 
                       <div style="margin-top:5px;" class="item"><p>Description</p></div> 
               </div> 
       </div> 
       <?php
       $sql2=mysql_query("select * from jogadores where pedido='$pedido' AND dtitulo!=''");
       while($mult2=mysql_fetch_array($sql2))
       {
       ?>
<div style="display:block" class="marcador_esq"> 
               <div class="marcador_dir"> 
               <div style="height:45px" class="titulo"><input name="dtitulo[]" type="text" value="<?php echo $mult2['dtitulo'];?>" /><br />
<input name="dtitulo2[]" type="text" value="<?php echo $mult2['dtitulo2'];?>" /></div> 
               <div class="item"><input name="titulo[]" type="text" value="<?php echo $mult2['titulo'];?>" /></div> 
               <div style="margin-top:5px;" class="item"><input name="titulo2[]" type="text" value="<?php echo $mult2['titulo2'];?>" /></div> 
               </div> 
                       <img class="remover_item" onclick="this.parentNode.parentNode.removeChild(this.parentNode); remove('list_participacao');" src="../img-site/remove_x.png"/>
               </div> 
<?php
       }
       ?>
               </div> 

       <!-- TREINADORES --> 
       <div id="list_treinadores" class="carreira"> 
   <div class="carreira_edit"> 
       <div class="atributos"><p>Principais Treinadores</p></div> 
       <div class="mais_itens"><img onClick="moreFields('item_treinadores', 'list_treinadores')" src="../img-site/add_mais.png"/></div> 
   </div> 

       <div class="marcador_esq"> 
               <div class="marcador_dir"> 
                       <div class="titulo"><p>Treinador</p></div> 
                       <div class="item"><p>Clube</p></div> 
               </div> 
       </div> 
         <?php
       $sql3=mysql_query("select * from jogadores where pedido='$pedido' AND treinador!=''");
       while($mult3=mysql_fetch_array($sql3))
       {
       ?>
   <div style="display:block" class="marcador_esq"> 
               <div class="marcador_dir"> 
               <div class="titulo"><input name="treinador[]" type="text" value="<?php echo $mult3['treinador'];?>" /></div> 
               <div class="item"><input name="tclube[]" type="text" value="<?php echo $mult3['tclube'];?>" /></div> 
               </div> 
                       <img class="remover_item" onclick="this.parentNode.parentNode.removeChild(this.parentNode); remove('list_treinadores');" src="../img-site/remove_x.png"/> 

       </div> 
<?php
       }
       ?>
               </div> 

       <!-- FOTOS  
       <div id="list_fotos" class="carreira"> 
   <div class="carreira_edit"> 
       <div class="atributos"><p>Fotos do Jogador</p></div> 
       <div class="mais_itens"><img onclick="moreFields('item_fotos', 'list_fotos')" src="../img-site/add_mais.png"/></div> 
   </div> 

               </div> 
       -->

       <!-- VIDEOS --> 
       <div id="list_videos" class="carreira"> 
   <div class="carreira_edit"> 
       <div class="atributos"><p>Vídeos do Jogador</p></div> 
       <div class="mais_itens"><img onClick="moreFields('item_videos', 'list_videos')" src="../img-site/add_mais.png"/></div> 
   </div> 
      <?php
       $sql4=mysql_query("select * from jogadores where pedido='$pedido' AND vjogador!=''");
       while($mult4=mysql_fetch_array($sql4))
       {
       ?>
   <div style="display:block" class="marcador_esq"> 
               <div class="marcador_dir"> 
               <div class="titulo"> 
               <select name="tipo_videos[]"> 
                       <?php
                       $tipo_videos=$mult4['tipo_videos'];
                       if($tipo_videos=='4shared')
                       {
                       ?>
           <option value="4shared" selected="selected">4Shared</option>
           <option value="youtube" >YouTube</option>
           <?php
                       }
                       if($tipo_videos=='youtube'){
                       ?>
           <option value="4shared">4Shared</option>
           <option value="youtube" selected="selected">YouTube</option>

           <?php
                       }
                       ?>
           </select> 
                       <a target="_blank" href="<?php echo $mult4['link'];?>">Ver</a> 
               </div> 
               <div class="item"><input name="link[]" type="text" value="<?php echo $mult4['link'];?>" /></div> 
               </div> 
               <div style="width:49%; float:left;"> 
                       <input style="margin-left:0px; width: 100%" name="vjogador[]" type="text" value="<?php echo $mult4['vjogador'];?>" /> 
                       <textarea style="width: 100%" name="vtexto[]"><?php echo $mult4['vtexto'];?></textarea> 
               </div> 
               <div style="width:49%; float:right;"> 
                       <input style="margin-left:0px; width: 100%" name="vjogador2[]" type="text" value="<?php echo $mult4['vjogador2'];?>" /> 
                       <textarea style="width: 100%" name="vtexto2[]"><?php echo $mult4['vtexto2'];?></textarea> 
               </div>
           <img class="remover_item" onclick="this.parentNode.parentNode.removeChild(this.parentNode); remove('list_videos');" src="../img-site/remove_x.png"/>
               </div>
   <?php
       }
       ?>
               </div>

 

O PROBLEMA GALERÁ ESTÁ SOMENTE NESSA FUNÇÃO AQUI ->

<img class="remover_item" onclick="this.parentNode.parentNode.removeChild(this.parentNode); remove('list_videos');" src="../img-site/remove_x.png"/>

 

 

ELE EXCLUI TUDO E NÃO SOMENTE O QUE FOI DESIGNADO A SER EXCLUIDO!!!

 

se alguém souber como me dar essa força ai Agradeço!!!!

 

AGUARDO PESSOAL!!! B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, realmente tm q tr um id para você fazer uma query pra apagar somente o campo q tenha aquele valor, nao li o codigo todo, mto grande, rsrsr

 

nao entendi mto essa parte

<img class="remover_item" onclick="this.parentNode.parentNode.removeChild(this.parentNode); remove('list_videos');" src="../img-site/remove_x.png"/>

 

 

mas pelo q eu entendi faz assim, cria um id lah na sua tabela, e usa o php pra deletar o campo.

 

$sql = "DELETE FROM jogadores WHERE id = ".$_GET['id'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.