Ir para conteúdo

Arquivado

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

Oliveira_estudante

Arrays... e Sessions

Recommended Posts

Pessoal... boa noite...

 

mais uma vez estou aqui com uma duvida... e mais uma vez estou confiando em vocês pra me darem um help.. e aprender mais um pouquinho..srsr.

 

Pessoal seguinte, estou praticando arrays juntamente com sessions... e tentando criar como se fosse um carrinho de compras; a inteção é que o usuario digite o NOME e MATRICULA(inicio.php) N vezes ... aí a pagina(carrinho.php) vai pegando esses registros, e exibe.. em uma tabela... os N registros digitados.

 

Peguei um tutorial do Julio Cesar Martini.. do proprio Imasters... com uma lógica um pouquinho diferente... mas até o momento so consigo adicionar um registr...

 

segue abaixo as paginas...

 

/* incio.php */

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Adiciona Dados</title>
</head>
<body>
  <form action="carrinho.php" method="post">
    Nome :<input type="text" name="nome">
    Matricula :<input type="text" name="matricula">
    <input value="Adicionar" type="submit">
  </form>
</body>
</html>

--------------

 

/* carrinho.php */

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Carrinho - Recebe Dados</title>
</head>
<body>
 <?php
   $array[1][NOME] = $_POST['nome'];
$array[1][MATRICULA] = $_POST['matricula'];

$chave = array_keys($array);
for($i=0; $i<sizeof($chave); $i++){
  $indice = $chave[$i];
  if(!empty($array[$indice][NOME])){
     $inc[$indice][NOME] = $array[$indice][NOME];
	 $inc[$indice][MATRICULA] = $array[$indice][MATRICULA];

  }
}
$_SESSION[equipamentos] = $inc;

 ?>
 <table width="200" border="1">
 <tr>
   <td>NOME</td>
   <td>MATRICULA</td>
 </tr>
  <?php
    $chave_inc = array_keys($_SESSION['equipamentos']);
 for($i=0 ; $i<sizeof($chave_inc); $i++){
     $indice = $chave_inc[$i];	
  ?>		 
  <tr>
   <td><?php echo $_SESSION['equipamentos'][$indice][NOME];?></td>
   <td><?php echo $_SESSION['equipamentos'][$indice][MATRICULA];?></td>
 </tr>
 <?php
  }
  ?>
</table>
<a href="javascript:history.back();">Adicionar mais Registros</a>
</body>
</html>

 

 

 

Obs... não é necessario a validação de erros... como tipo de dados...

a intenção mesmo.. é ir adicionando... e exibindo os nomes e matriculas...

 

 

agradeço pessoal.. boa noite !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa de loop para isso, isto é, se eu entendi corretamente.

 

Já que não precisa de validações, basta que você use a notação de colchetes diretamente em $_SESSION que já é por si só um array, só que superglobal (acessível em qualquer lugar, respeitando-se suas condições).

 

<?php

$_SESSION[] = array( 'nome' => 'Bruno', 'idade' => 22, 'profissao' => 'Burro de Carga' );

$_SESSION[] = array( 'nome' => 'Joãozinho', 'idade' => 8, 'profissao' => 'Peste' );

var_dump( $_SESSION );

A saída será algo como:

 

array
 0 => 
   array
     'nome' => string 'Bruno' (length=5)
     'idade' => int 22
     'profissao' => string 'Burro de Carga' (length=14)
 1 => 
   array
     'nome' => string 'Joãozinho' (length=9)
     'idade' => int 8
     'profissao' => string 'Peste' (length=5)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno... obrigado por ter respondido....

 

a ideia é que eu insira os valores de uma forma dinamica...

por exemplo :

 

$array[1][NOME] = $_POST['nome'];

$array[1][MATRICULA] = $_POST['matricula'];

 

No codigo acima... queria que o array fosse armazenando os registros digitados... se eu digitasse 10 registros..., quando desse um print_r(), ou um var_dump();... ele me mostrasse todos os 10 registros digitados.

 

Tentei fazer um loop para que a chave dos arrays fosse mudando conforme fossem inserindo dados... mas ainda to quebrando a cabeça...srsrs

 

$array[$][NOME] = $_POST['nome'];

$array[$][MATRICULA] = $_POST['matricula'];

Compartilhar este post


Link para o post
Compartilhar em outros sites
use o Responder Azul respondery.png

ou a 'Resposta Rápida'.

 

 

e pq não faz da forma fácil ?

 

$_SESSION['nome'][] = $_POST['nome']; //o [] é vazio mesmo, sem nada dentro 

 

 

e assim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian...

 

Obrigado por me ajudar...

 

Como ficaria esse codigo em um loop.. pra adicionar N valores e todos eles sendo exibidos..dinamicamente é claro... ?

 

To quebrando a cabeça... com as respostas ja estou montando uma opnião diferente.... esse site é bom demais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que eu vi, os campos são adicionados um por vez, então tudo o que tem a fazer é adicionar os campos vindos por POST ao array da sessão:

$_SESSION[] = $_POST;

 

Mas eu recomendo seriamente você criar um outro índice, para não misturar caso você queira colocar outras coisas na sessão:

$_SESSION['carrinho'][] = $_POST;

 

Para mostrar todos, faça assim:

echo '<ul>';
foreach($_SESSION['carrinho'] as $key=>$each){
echo '<li>'.$each['nome'].' - '.$each['matricula'].'</li>';

}
echo '</ul>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal... mais uma vez, boa noite !

 

Agradeço muito a todos que postaram, deu pra abrir bastante a mente... e aprender mais sobre os arrays... mas até agora não consegui incrementar o array... pra conter varios valores... inseridos dinamicamente...

 

por exemplo...

 

nome: luizA matricula : 0261

nome: luizB matricula : 0262

nome: luizC matricula : 0263

...

nome: luizN matricula : 026N

 

Tentei com uns colegas que tambem tem conhecimento em php... mas em todas as tentativas os arrays são sobrescritos quando digitamos um novo valor...

 

$_SESSION['nome'][] = $_POST['nome']; // quando digitado um novo valor... o array é sobrescrito

 

se na primeira tentativa digitei A... quando digito B... ele sobrescreve o A ficando somente o B.

 

A intenção é armazenar todos os valores... A, B...

 

 

Peço que tenham paciencia comigo... e me ajudem mais uma vez...

um grande abraço...e uma boa noite.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal... mais uma vez, boa noite !

 

Agradeço muito a todos que postaram, deu pra abrir bastante a mente... e aprender mais sobre os arrays... mas até agora não consegui incrementar o array... pra conter varios valores... inseridos dinamicamente...

 

por exemplo...

 

nome: luizA matricula : 0261

nome: luizB matricula : 0262

nome: luizC matricula : 0263

...

nome: luizN matricula : 026N

 

Tentei com uns colegas que tambem tem conhecimento em php... mas em todas as tentativas os arrays são sobrescritos quando digitamos um novo valor...

 

$_SESSION['nome'][] = $_POST['nome']; // quando digitado um novo valor... o array é sobrescrito

 

se na primeira tentativa digitei A... quando digito B... ele sobrescreve o A ficando somente o B.

 

A intenção é armazenar todos os valores... A, B...

 

 

Peço que tenham paciencia comigo... e me ajudem mais uma vez...

um grande abraço...e uma boa noite.

 

 

Salve... Salve... pessoal...

depois de muitas tentativas.. consegui chegar ao resultado esperado....

obrigado por me ajudarem...

 

estarei sempre em divida com voces !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sera interessante postar como fez para, no caso de uma possível gambiarra podermos te orientar da forma correta.

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.