Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Estou precisando de uma ajuda para resolver o seguinte problema:
Preciso adicionar elementos ao meu array, sem perder os anteriores para sempre mostrar uma lista na tela para o usuário, uma lista com tudo que ele selecionou.
Por que preciso disso? Estou fazendo uma página para o usuário dar entrada de produtos no estoque, ele escolhe o produto, informa a quantidade e o valor e incluir, após a inclusão irei mostrar em uma tabela os produtos que ele incluiu e depois eu salvo isso.
O problema é que na hora que vou incrementar meu array eu perco o que já tenho, ou seja, do jeito que fiz, e não sei como melhorar, só guardo o último produto escolhido.
switch (get_post_action('salvar', 'incluir')) {
case 'incluir':
session_start();
$_SESSION['temp_session'] = array();
$_SESSION['indice'] = $_POST["produto"];
$produtoSelecionado = $produtoController->carregar($_POST["produto"]);
array_push($_SESSION['temp_session'], $produtoSelecionado);
print_r($_SESSION['temp_session']);
break;
<td>
<label for="produtos" class="obrigatorio">
Produto:
</label>
</td>
<td>
<div class="ui-widget">
<select id="combobox" name="produto">
<option value="">Selecione...</option>
<?php
$listaProdutos = $produtoController->listarAtivos();
foreach ($listaProdutos as $p) {
?>
<option value="<?php echo $p->getId(); ?>">
<?php echo $p->getNome(); ?>
</option>
<?php
}
?>
</select>
</div>
</td>
</tr>
<tr>
<td>
<label for="qtd" class="qtd">
Quantidade:
</label>
</td>
<td>
<input type="text" name="qtd" size="10" maxlength="15"
value="<?php echo $_REQUEST["qtd"]; ?>" />
<label for="qtd" class="qtd">
Valor Unitário:
</label>
<input type="text" name="valorUnitario" size="10" maxlength="15"
value="<?php echo $_REQUEST["valorUnitario"]; ?>" />
<input type="submit" name="incluir" value="Incluir" />
</td>
</tr>Você sugere apenas que eu tire a linha que cria o array?
$_SESSION['temp_session'] = array();
Sim. Pois Você esta zerando o array a cada inclusão
Consegui resolver o problema assim:
if(!isset($_SESSION['temp_session'])) {
$_SESSION['temp_session'] = array();
}
$produtoSelecionado = $produtoController->carregar($_POST["produto"]);
array_push($_SESSION['temp_session'], $produtoSelecionado);
Agora, quando tento exibir os dados do array na tela, sem ser com o print_r, não aparece nada:
<?php
foreach ($_SESSION['temp_session'] as $ps) {
?>
<td><?php echo $ps->getId();?></td>
<td><?php echo $ps->getNome();?></td>
<td><?php echo $ps->getUnidade()->getSigla()." - ". $ps->getUnidade()->getNome();?></td>
<?php
}
?>
Alguém sabe porque não estou conseguindo exibir os objetos do array?
Pessoal,
Analisei com calma e percebi que na verdade ele exibe os objetos do meu array sim, porém apenas um, quando incluo mais de um objeto no array dá erro.
Alguém sabe porque?
O erro é esse:
Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Produto" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\wamp\www\sgm\movimentacoes\entrada.php on line 424
Aqui estou exibindo o array criado na sessao:
<tr>
<?php
if (sizeof($_SESSION['temp_session']) == 0) {
?>
<td colspan="6">Nenhum produto adicionado!</td>
<?php
} else {
print_r($_SESSION['temp_session']);
foreach ($_SESSION['temp_session'] as $ps) {
?>
<td><?php echo $ps->getId(); ?></td>
<td><?php echo $ps->getNome(); ?></td>
<td><?php echo $ps->getUnidade()->getSigla() . " - " . $ps->getUnidade()->getNome(); ?></td>
<td><?php //echo $_POST["qtd"]; ?></td>
<td><?php //echo $_POST["valorUnitario"]; ?></td>
<td><?php //echo $valorTotalDaLinha; ?></td>-->
<?php
}
?>
</tr>Pessoal,
Não estou conseguindo exibir os itens do meu array.
Mostro quando tem um item, quando tem mais não exibe nada e aparece esse erro:
Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Produto" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in C:\wamp\www\sgm\movimentacoes\entrada.php on line 432
switch (get_post_action('salvar', 'incluir')) {
case 'incluir':