Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

viegasss

Array

Mensagens Recomendadas

viegasss    1
viegasss

Boas estou a trabalhar em php... o meu array não estou a guardar bem, só guardar bem..

index.php

<?php
include("./dao_jogos.class.php");
include("./jogos.class.php");
$Novo_Jogo = new DaoJogo();
$Novo_Jogo->addjogo(new Jogos("Jogo 1", 5, "PC", "Não", "..."));
$Novo_Jogo->addjogo(new Jogos("Jogo 2", 150, "XBox ONE", "Sim", "...."));
$Novo_Jogo->addjogo(new Jogos("Jogo 3", 50, "PS4", "Sim", "..."));
if(isset($_POST["guardar"])){
// Inserir o jogo no Array
$nome = $_POST["nome"];
$preco = $_POST["preco"];
$plataforma = $_POST["plataforma"];
$estado = $_POST["estado"];
$obs = $_POST["obs"];
$Novo_Jogo->addjogo(new Jogos($nome,$preco,$plataforma,$estado,$obs));

}
?>

gere_jogo.php

    <?php
    class DAOJogo{
    public $Novojogo = array();         public function addjogo(Jogos $objetoJogo){
            $this->Novojogo[] = $objetoJogo ;         }

        public function novoJogo($nome,$preco,$plataforma,$estado,$obs){
            $this->addjogo(new Jogos($nome,$preco,$plataforma,$estado,$obs));
        }         public function verjogos(){
        foreach ($this->Novojogo as $objetoJogo) {
            echo $objetoJogo->mostrarJogos();         }
    }
    }
    ?>

Editado por pwseo
syntax highlight.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
viegasss    1
viegasss

Oi,

A questão não é clara.

Qual é a dúvida? (Sugiro leres o que escreveste)

Tens razão... lapso meu... o meu array de objectos só guarda a primeira vez em que é inserido depois ...

Não sei se estou a criar mal o array de objectos... porque não é normal... o array guardar uma unica vez

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

ok...podes definir "a primeira vez" ?

<?php

include("./dao_jogos.class.php");

include("./jogos.class.php");

$Novo_Jogo = new DaoJogo();

$Novo_Jogo->addjogo(new Jogos("Jogo 1", 5, "PC", "Não", "..."));

até aqui guarda, mas a instrução a seguir já não, é isso?

$Novo_Jogo->addjogo(new Jogos("Jogo 2", 150, "XBox ONE", "Sim", "...."));

PS: identa o código pff

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
viegasss    1
viegasss

ok...podes definir "a primeira vez" ?

<?php

include("./dao_jogos.class.php");

include("./jogos.class.php");

$Novo_Jogo = new DaoJogo();

$Novo_Jogo->addjogo(new Jogos("Jogo 1", 5, "PC", "Não", "..."));

até aqui guarda, mas a instrução a seguir já não, é isso?

$Novo_Jogo->addjogo(new Jogos("Jogo 2", 150, "XBox ONE", "Sim", "...."));

PS: identa o código pff

Não! ele guarda os 3 por defeito.... e mostra sempre os 3 .... quando eu introduzo o 4 elemento e guarda o 4 mas quando vou introduzir o 5 ele substitui o 4 elemento

Eu vou deixar-te aqui o meu index.php completo...

<?php
include("./dao_jogos.class.php");
include("./jogos.class.php");
$Novo_Jogo = new DaoJogo();
$Novo_Jogo->addjogo(new Jogos("Jogo 1", 5, "PC", "Não", "..."));
$Novo_Jogo->addjogo(new Jogos("Jogo 2", 150, "XBox ONE", "Sim", "...."));
$Novo_Jogo->addjogo(new Jogos("Jogo 3", 50, "PS4", "Sim", "..."));
if(isset($_POST["guardar"])){
 // Inserir o jogo no Array

 $nome = $_POST["nome"];
 $preco = $_POST["preco"];
 $plataforma = $_POST["plataforma"];
 $estado = $_POST["estado"];
 $obs = $_POST["obs"];
 $Novo_Jogo->addjogo(new Jogos($nome,$preco,$plataforma,$estado,$obs));
}
?>
<!DOCTYPE html>
<html lang="pt">
 <head>
<meta charset="utf-8">
<title>Lista de Jogos</title>
 </head>
<body>

  <form action="index.php" method="POST">
	 <p>Jogo: <input type="text" name="nome"></p>
	 <p>Preço:<input name="preco" cols="40" rows="4" name="preco"></p>
	  <p>Plataforma:
	  <select name="plataforma" >
		 <option value="pc">PC</option>
		 <option value="XBOX">Xbox</option>
		 <option value="ps4">PS4</option>
		 <option value="nitendo">Nitendo</option>
	 </select>
	</p>
	 <p>Novo? <input name="estado" type="checkbox"/>
	 <p>Observações: <textarea name="obs" type="radio" value="azul" checked="checked"></textarea></p>
	 <p><input name="guardar" type="submit" value="Adicionar"/></p>
  </form>
  <form action="index.php" method="POST">
	  <input type="submit" value="Ver jogos" name="verjogos">
  </form>
  <!-- Div para mostrar a tabela de todos os dados -->
  <div class="div1">
	<?php
	  echo "<H3>LISTA DE JOGOS:</H3>";
	  echo "<table border=1px align=center>";
	  echo "<th>ID</th><th>NOME JOGO</th><th>PREÇO</th><th>PLATAFORMA</th><th>NOVO</th><th>OBSERVAÇÕES</th>";
	  $Novo_Jogo->verjogos();
	  echo "</table>";
	?>
  </div> <br>

 </body>
</html>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

Mas estás a persistir a variavel $Novo_jogo nalgum lado? ... é que cada vez que o teu script corre estás a inicializar a variavel $Novo_jogo (criar uma nova classe - vazia)

Já agora, se esperas que as tuas variaveis globais se mantenham de entre pedidos, isso não vai acontecer: tirando a variavel $_SESSION, não e guardado estado entre pedidos.

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
viegasss    1
viegasss

Então... mas eu tenho que criar o Objecto para chamar as Function que tenho na classo DaoJogo...

Não estou a perceber mesmo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

Tens,certo.

Mas o teu problema é que a segunda vez que submetes o formulário a tua variável $Novo_jogo volta "ao início".

É isso que te está a acontecer certo? O máximo que te mostra são os jogos 1,2,3 + o que inseres no formulário, certo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

Bem...

Como disse, por natureza, o protocolo HTTP é stateless, e nesse sentido também o é o apache+php.

A cada pedido recebido pelo servidor, a execução do código começa do zero, i.e., esquece variáveis globais, classes estáticas, etc - podes usá-las claro, mas não persistem entre pedidos.

A excepção a isto, do lado do servidor, é a variável $_SESSION - nesta podes guardar informação que persiste entre pedidos - mas não persistem para sempre: a sessão perde-se quando o cookie respectivo expira.

Isto tudo para dizer que podes usar a $_SESSION mas não é solução permanente e não vai persistir os dados.

Tens portanto várias opções:

- serialização do teu objecto para um ficheiro no final do script, e deserialização no início do teu programa

- guardar a info numa BD e ler daí

- etc, etc

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
viegasss    1
viegasss

eu já estive haver algumas coisas mas não estou a ver como vou utilizar...

o próximo passo e fazer numa BD... mas 1 tenho guardar no array e mostrar :S

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f    20
tiago.f

Pois, não conheço o teu projecto nem a finalidade.

No meu caso, uso Eloquent como ORM nos projectos de php que precisam de BD.

De certeza que também serve para o que queres, mas pode ser um "canhão para matares uma mosca"

Vê aqui: https://laravel.com/docs/5.2/eloquent

Não recomendo outros pq não uso mais nenhum mas talvez alguém aqui no fórum conheça outros igualmente interessantes..

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.