Ade5 0 Denunciar post Postado Janeiro 7, 2011 Boa tarde! é o seguinte: tenho um formulario para envio de dados para o bd. quando o user clicar no botão Add os dados são enviados para o PHP através do AJAX gostaria de criar uma rotina no PHP que quando estes dados são enviados eles sejam armazenados em um array de forma que eu possa adicionar dados quantas vezes forem necessárias e quando o usuário clicar no botão salvar eu possa percorrer este array e salva-los no bd. Não poderei salvar estes dados diretamente no bd pois dependo de outras condições para somente então salvar (preciso salvar os dados de tres tabelas diferentas ao mesmo tempo, se não salvar em uma, então não salvo em nenhuma). Abaixo está o código: Mas da forma que estou executando eu não consigo armazenar no array, então ele sempre "zera" e qdo clico no btn Add ele fica armazenado apenas os ultimos dados inseridos no form. if (isset($_POST['inserir_viagem_percurso'])){ $codigo_viagem = array($_SESSION['viagem']); $codigo_estrada_tipo = array($_POST['codigo_estrada_tipo']); $km_inicial = array($_POST['km_inicial']); $km_final = array($_POST['km_final']); $valor_km_atual = array($_POST['valor_km_atual']); $count = count($codigo_viagem); $valores = array(); for ($i=0; $i<$count; $i++) { $valores[] = '('.$codigo_viagem[$i].',\''.$codigo_estrada_tipo[$i].'\',\''.$km_inicial[$i].'\',\''.$km_final[$i].'\',\''.$valor_km_atual[$i].'\')'; } $sql_viagem_percurso = 'INSERT INTO viagem_percurso(codigo_viagem, codigo_estrada_tipo, km_inicial, km_final, valor_km_atual)VALUES '.implode(',',$valores); Compartilhar este post Link para o post Compartilhar em outros sites
zininho 0 Denunciar post Postado Janeiro 7, 2011 Olá Ade5, Acredito que você possa armazenar esses dados nomeando seu input como se fosse uma array <input name="nomeArray[]"> E na hora de ler os dados, basta usar o foreach Tive esse problema a um tempo atrás usando $_GET, acredito que o procedimento seja o mesmo para $_POST Se não entendi seu problema, ou isso não resolver, é só avisar ;) Um abraço, rVenson Compartilhar este post Link para o post Compartilhar em outros sites
Ade5 0 Denunciar post Postado Janeiro 10, 2011 Obrigado por responder rVenson, Mas não consegui entender a sua idéia. Dessa forma q você falou não dá certo, pois eu preciso criar uma rotina no PHP, que faça o seguinte: Toda vez que o usuario clicar no botão ADD, o AJAX envia os dados do form para o PHP, que por sua vez armazena estes dados de alguma forma que quando o usuário não desejar mais adicionar dados, ele clica no botão salvar e então o PHP percorre este (array ou sei lá), salvando os dados que nele estão armazenados. Se alguém mais souber como executar este tipo de procedimento!!! Desde já agradeço!!! Compartilhar este post Link para o post Compartilhar em outros sites
Go Back 0 Denunciar post Postado Janeiro 10, 2011 $_SESSION['var'] = array(); array_push($_SESSION['var'], '1'); // adiciona no array array_push($_SESSION['var'], '2'); // adiciona no array array_push($_SESSION['var'], '3'); // adiciona no array array_push($_SESSION['var'], '4'); // adiciona no array foreach($_SESSION['var'] as $key) echo $key.'<br>'; http://br.php.net/array_push Compartilhar este post Link para o post Compartilhar em outros sites
ADE_5 0 Denunciar post Postado Janeiro 10, 2011 Obrigado Go Back! acho que eu preciso fazer desta forma mas não sei implementar no PHP: $dados = array ( $add1 => array ( [0] => $_POST['km_inicial'] [1] => $_POST['km_final'] [2] => $_POST['codigo_estrada_tipo'] [3] => $_POST['valor_km_atua'] ) $add2 => array ( [0] => $_POST['km_inicial'] [1] => $_POST['km_final'] [2] => $_POST['codigo_estrada_tipo'] [3] => $_POST['valor_km_atua'] ) $add3 => array ( [0] => $_POST['km_inicial'] [1] => $_POST['km_final'] [2] => $_POST['codigo_estrada_tipo'] [3] => $_POST['valor_km_atua'] ) ... ); Não sei como criar uma rotina que execute isso que descrevi acima, quando clicar em ADD ele cria um novo array com os dados vindos do POST, para acrescentar em uma variavel ou session e quando ele clicar em Salvar percorra o array e salve no bd os adds que existirem podendo ser um ou vários adds. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Janeiro 10, 2011 Desse jeito que você quer, não vai dar, porque os índices estão como variáveis. Primeiro de tudo, é que você não vai conseguir enviar um array. Ou você ua a notação de colchetes para que o navegador envie algo similar à um array para o programa, ou você serializa as informações e, des-serializa antes de anexar à $_SESSION. No programa você faz algo como: // O índice 'data' é uma suposição, você altera pelo que estiver usando no AJAX $data = $_POST['data']; session_start( 'nome_da_sessao' ); $_SESSION['data'][] = $data; // Ou se estiver serializado... $_SESSION['data'][] = unserialize( $data ); Isso é muito cru. Você DEVE antes de armazenar essas informações, tratar, sanitizando-as e, obviamente, verificar se a essão já não foi iniciada, antes de fazer outro session_start() Depois, na página que vai usar esses dados, você repete as rotinas de verificação de sessão, checa se o array superglobal de sessão possui algum valor a ser manipulado (com count() por exemplo) e só então usa o foreach-loop. Compartilhar este post Link para o post Compartilhar em outros sites
Ade5 0 Denunciar post Postado Janeiro 10, 2011 Obrigado Bruno Augusto! Cara desculpa se descrevi o array de forma errada, é q sou iniciante e não conheço muito bem a linguagem, apenas coloquei o cod tentando descrever melhor o q eu preciso, estou com dúvidas qto a forma de implementar a rotina, preciso criar uma forma de armazenar os dados vindos do POST (botão ADD) e quando o usuario clicar em salvar os dados que estão nesta variavel sejam salvos, lembrando que o user poderá fazer vários adds antes de clicar em Salvar. Acho q seja simples para quem já conhece melhor o PHP. A idéia está bem clara, minha dificuldade é qto a forma de implementar devido ao meu pouco conhecimento do PHP. Féras, por favor ajudem!!! Obrigado!!! Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 10, 2011 Amigo Ade5 utilize o campo que fica abaixo do ultimo post chamado Resposta rápida. Evite postar quotes desnecessários. Leia o tópico abaixo por favor. http://forum.imasters.com.br/index.php?/topic/375800-orientacoes-para-uma-boa-participacao/ Compartilhar este post Link para o post Compartilhar em outros sites