Ir para conteúdo

POWERED BY:

Arquivado

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

Ade5

Adicionar array em SESSION com PHP

Recommended Posts

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

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

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

$_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

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

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

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

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

×

Informação importante

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