KMRodrigo 1 Denunciar post Postado Junho 22, 2011 Olá galera, tenho um script que montei com ajuda de tutoriais do Willian Bruno que ao clicar em "OK" ele envia os dois text preenchidos formando uma tabela abaixo com javascript, acontece que preciso de uma maneira de retirar uma linha dessa tabela Na frente do td no loop da pra por um botão, ai a cada linha vai ficar um botão de excluir linha, mas n sei como fazer ele excluir Código q grava no Banco de dados a Tabela Gerada pelo JavaScript <?php if( $_SERVER['REQUEST_METHOD']=='POST' ) { $DE_referencia = $_POST["DE_referencia"]; $DE_numReferencia = $_POST["DE_numReferencia"]; mysql_connect("localhost", "root", ""); mysql_select_db("leadersystem"); $sql = "INSERT INTO ex_despesas ( id, DE_descricao, DE_valor, DE_referencia, DE_numReferencia) VALUES "; $values = Array(); for( $i=0; $i<count( $_POST['DE_descricao'] ); $i++ ) { $values[] = "(NULL, '".filter( $_POST['DE_descricao'][$i] )."', '".filter( $_POST['DE_valor'][$i] )."','$DE_referencia', '$DE_numReferencia')"; } mysql_query ($sql.implode( ',', $values )); echo "<script>alert('Salvo Com sucesso');</script>"; } function filter( $str ){ return addslashes( $str );//deixo demais filtros e validações por sua conta } ?> Código JavaScript que cria uma tabela de acordo com o click num botão que envia dois campos text. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#form_prepare').submit(function(){ var $this = $( this ); var DE_descricao = $this.find("input[name='DE_descricao']").val(), DE_valor = $this.find("input[name='DE_valor']").val(); var tr = '<tr>'+ '<td bgcolor="#63B8FF">'+DE_descricao+'</td>'+ '<td bgcolor="#63B8FF">'+DE_valor+'</td>'+ '</tr>' $('#grid').find('tbody').append( tr ); var hiddens = '<input type="hidden" name="DE_descricao[]" value="'+DE_descricao+'" />'+ '<input type="hidden" name="DE_valor[]" value="'+DE_valor+'" />'; $('#form_insert').find('fieldset').append( hiddens ); return false; }); }); </script> Código HTML <?php $data = date('d/m/Y'); $mes = date('m'); $year = date('y'); switch ($mes){ case 1: $mes = "JAN"; break; case 2: $mes = "FEV"; break; case 3: $mes = "MAR"; break; case 4: $mes = "ABR"; break; case 5: $mes = "MAI"; break; case 6: $mes = "JUN"; break; case 7: $mes = "JUL"; break; case 8: $mes = "AGO"; break; case 9: $mes = "SET"; break; case 10: $mes = "OUT"; break; case 11: $mes = "NOV"; break; case 12: $mes = "DEZ"; break; } $CO_tipoServico = "Exportação Aérea"; ?> <!----------------------------------------------Começa Auto Tabela -------------------------------------------> <form action="" method="post" id="form_prepare"> <center><fieldset><legend align="center">Despesas Externas</legend> <label>Descricao: <input type="text" name="DE_descricao" /></label> <label>Valor: <input type="text" name="DE_valor" /></label> <label><input type="submit" name="ok" value="Ok" /></label> </fieldset></center> </form><!-- /form_prepare --> <table id="grid" border = "1" align="center" width ="50%" > <thead> <tr> <th bgcolor="#1874CD" >Descricao</th> <th bgcolor="#1874CD" >Valor</th> </tr> </thead> <tbody> </tbody> </table><!-- /grid --> <form action="" method="post" id="form_insert"> <tr> <td><input name="DE_numReferencia" type="hidden" id="DE_numReferencia" size="4" maxlength="10"value="<?php //vai receber um valor equivalente a um numero de referencia interno, isso n tem problema algum. $referencia = "$mes-$year"; mysql_connect("localhost", "root", ""); mysql_select_db("leadersystem"); $sql_busca = "SELECT * FROM cotacao WHERE CO_referencia = '$referencia'"; $exe_busca = mysql_query($sql_busca); $numero_registros = mysql_num_rows($exe_busca) + 1; if (strlen("" . $numero_registros) == 1) $num_referencia = "00" . $numero_registros; else if (strlen("" . $numero_registros) == 2) $num_referencia = "0" . $numero_registros; else $num_referencia = $numero_registros; $num_referencia = $num_referencia - 1; echo $num_referencia; $numReferencia = $num_referencia; ?>" > </td> <td><input name="DE_referencia" type="hidden" id="DE_referencia" size="10" maxlength="10" <?php echo "value='$mes-$year' ";?> ></td> </tr> <br> <center><fieldset style="display: none;"></fieldset> <label><input type="submit" name="cadastrar" value="Cadastrar" /></label> </center></form><!-- /form_insert --> Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 23, 2011 Onde está o botão que você disse que existe em cada linha? De qualquer forma, a ideia é simples: Na linha (dentro do loop que imprime os dados) você adiciona algo assim: <a href="excluir.php?id=<?php echo $id?>" >Excluir</a> Onde $id contém o id desta linha. Na página excluir.php, você faz algo assim: <?php $id = isset($_GET ['id']) ? intval($_GET['id']) : 0; if($id != 0) { // faz o processo de excluir, usando o id passado pelo link } else { // foi passado um id inválido ou não foi passado um id. Mostre uma mensagem de erro ou algo assim } Algo nesta linha. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Junho 24, 2011 desculpe Matias mas n entedi corretamente algumas coisas. O código que postei só tem um loop q é para salvar no BD n tem loop que printa. O print é após click no botão ai chama função e cria a linha. N entendi onde por o: <a href="excluir.php?id=<?php echo $id?>" >Excluir</a> if($id != 0) { // faz o processo de excluir, usando o id passado pelo link } else { // foi passado um id inválido ou não foi passado um id. Mostre uma mensagem de erro ou algo assim } Não consigo raciocinar como excluir uma linha.... tipo linha n é uma variável para ser zerada, é "tinta" no monitor(no meu ponto de vista mas agora que você diz sei q estou errado). Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 24, 2011 Amigo, você quer fazer uma tabela com todos os dados do banco certo ? então um botão pra excluir, que ao clicar nele ele exclua no banco e a linha 'tr' da tabela ? Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Junho 24, 2011 Eaew Andrey beleza? seguinte:O código postado por mim funciona da seguinte maneira. O user digira no campo Descricao "aaa" e no campo valor"111" e clica em OK No HTML vai ser gerado assim --------------------------------------------------------------------------------------------- |_________Descrição______________|______________Valor_________________| | aaa | 111 | _______________________________________________________________________ Gravar Ai ele vai "bbb" e 222 ---------------------------------------------------------------------------------------------- |_________Descrição______________|______________Valor_________________| | aaa | 111 | | bbb | 222 | _______________________________________________________________________ Gravar e isso vai sendo gerado conforme ele vai dando OK via javascript na msm página.... A minha intenção é o seguinte ----------------------------------------------------------------------------------------------- |_________Descrição______________|______________Valor_________________| | aaa | 111 | Excluir | bbb | 222 | Excluir _______________________________________________________________________ Gravar mas até ai nda é inserido no BD, tem como apertar esse Excluir e ele sumir com a TR? (ou dar um hidden, mas dps n pode gravar no BD) isso é para - caso ele digite algo errado ele possa apagar e digitar novamente ai dps que ele verifica tudo ele grava. Eu n quero montar uma table com dados do banco e dar opção de excluir rsrsr quem dera fosse só isso. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 24, 2011 Já que você está fazendo com jQuery, quando clicar no excluir, ache o elemento pai desse 'a', deve ser o td então volte pro 'tr', é use um .remove() , aí ele vai remover do DOM essa tr, ou sejá não vai ficar oculta Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Junho 24, 2011 na verdade faço em javascript e ao fim grano no BD com php, não é bem uma interação entre server e client side. se n for pedir d+ pode me ajudar com esse .remove() n sei como usa-lo. Irei pesquisar tmb. O excluir vai entrar aqui <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#form_prepare').submit(function(){ var $this = $( this ); var DE_descricao = $this.find("input[name='DE_descricao']").val(), DE_valor = $this.find("input[name='DE_valor']").val(); var tr = '<tr>'+ '<td bgcolor="#63B8FF">'+DE_descricao+'</td>'+ '<td bgcolor="#63B8FF">'+DE_valor+'</td>'+ '</tr>' //------------------------------ Aqui vai entrar o botão de Excluir $('#grid').find('tbody').append( tr ); var hiddens = '<input type="hidden" name="DE_descricao[]" value="'+DE_descricao+'" />'+ '<input type="hidden" name="DE_valor[]" value="'+DE_valor+'" />'; $('#form_insert').find('fieldset').append( hiddens ); return false; }); }); </script> assim ele vai ficar no fim de cada TR (linha) Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 24, 2011 var tr = '<tr>'+ '<td bgcolor="#63B8FF">'+DE_descricao+'</td>'+ '<td bgcolor="#63B8FF">'+DE_valor+'</td>'+ '<td bgcolor="#63B8FF" class="excluir">excluir</td>'+ '</tr>'; e então: $('.excluir').live('click',function(){ $( this ).parent('tr').remove(); }); estude amigo. Era super simples de fazer, e existem diversos exemplos disso.. até mesmo no meu blog, de onde vem esse código que você postou. Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Junho 24, 2011 Desculpe Bruno :( , mas estou estudando http://api.jquery.com/remove/. E entendi o uso da metodo. A questão é q devemos saber o que estudar, eu nem sabia q isso existia quando o Andrey comentou a primeira coisa q fiz foi estudar. Desculpe se dei a entender que queria o código, mas realmente o exemplo do código ajuda a entender... O exemplo que peguei do seu blog willian alterei para diversas funcionalidade e até pedi pra me mandar por PM uns comentário na linha para mim entender melhor como usa-lo. A questão é q me falta teoria, algumas coisas eu n sei nem q existem. Eu sei q vira e mexe peço a ajuda de vcs, o forum n é feito para fazer o trabalho do outros e sim para ensinar. e juro que estou aqui para aprender e n para aproveitar de ninguem, embora eu n saiba muito sempre estou tentando ajudar outras pessoas nos tópicos e estive sempre nos top posters de todos os dias dessa semana e semana passada (embora n tenha conseguido ajudar muito). Se olharem meus tópicos criados, alguns deles eu criei e fui pesquisar, eu mesmo resolvi antes que alguem postasse, postei o modo como resolvi e pedi para deixarem o tópico como resolvido... n fico apenas de braço cruzados esperando respostas :ermm: Como disse num dos posts acima eu n sabia q existia como tratar uma TR como elemento, pra mim era tinta, faltava esse conhecimento que me impedia de realizar o código mesmo sendo de lógica simples. mais uma vez sorry. E obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 24, 2011 então tranquilo. Parabéns pelo esforço. É que vira e mexe, sempre aparece um 'esperando pronto'. Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Junho 24, 2011 eu entendo =). Estou tentando não se preoculpe =) Obrigado galera novamente. Funcionou, tópico resolvido. :joia: ps. eu tenho um grande gasto com faculdade e curso de certificado (mas n tenho php neles), alguns domingos pago um colega (Bruno Crocci tem algumas coisas sobre ele na net) para me ensinar algumas coisas. Eu amo meu novo emprego como programador e estou me esforçando pra ser um dia tão bom quanto aos que me ajudam.Obrigado Galera... ---------------------------------------------- Desculpe galera mas n funcionou.... Aconteceu que se eu apertar "ok" ele grava, ai se eu apertar "OK" 5 vezes ele grava 5. Se eu excluir 3 desses 5, ele exclui exatamente os 3. Mas na hora de salvar no Banco de Dados ele grava os 5, é como se o método só deixasse hidden =/ Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 24, 2011 pq foi removida a linha da table, mas não os campos hidden do formulário. lição de casa: remover os inputs hidden; Compartilhar este post Link para o post Compartilhar em outros sites
KMRodrigo 1 Denunciar post Postado Junho 27, 2011 Rapaz Tentei adicionar uma div aqui var hiddens = '<div class="exc"><input type="hidden" name="DE_descricao[]" value="'+DE_descricao+'" />'+ '<input type="hidden" name="DE_valor[]" value="'+DE_valor+'" /></div>'; e aqui na função adicionei o excluir a div $('.excluir').live('click',function(){ //ativa função quando tem um Click no elemento de classe .excluir. $( this ).parent('tr').remove(); $('div').remove('.exc'); //aqui estou indicando o que vai ser "atingido" pelo meu remove. No caso a div da classe excluir, por ser uma classe tem o "." }); $('#grid').find('tbody').append( tr ); to começando a entender esse negócio mas tem um problema, acredito que funciona, porém ele exclui tudo, já que vai sendo criado sempre com a class .exc e ai quando exclui, exclui todos da exc. A pouco estava no seu forum e ví que você exclui apenas uma TR devido ao (This) mas quando tento implantar o This no lugar do ('div') ai piora n apaga nda. Encontrei conteúdo ingles para o parent() mas n entendi mto bem. Se puder me ajudar mais um pouco agradeço, estou tentando. Compartilhar este post Link para o post Compartilhar em outros sites