Ir para conteúdo

POWERED BY:

Arquivado

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

Henrique Fleury

[Resolvido] Criando um objeto "GLOBAL"

Recommended Posts

E aiii pessoal tudo bem?

 

E o seguinte eu to criando uma pagina de orcamento e ela tem varias etapas que a pessoa vai cadastrando. Esse cadastro de cada pagina eu passo por javascript pelo type POST.

Exemplo da segunda pagina da etapa.

<script language="javascript">
CapturarEstrategia = {
	createQueryStringVars : function(){
	/* Cria um array */
		var arrVars=[];
		/* Captura tudo o que vem do form atraves do id que passei #frmOrcamentoContato 
		** e na frente esta o tipo de campo que eu vo pega
		*/
		$j("#frmOrcamentoEstrategia textarea").each(function(){
			/* Pego o array e coloca na ultima posicao, atraves da funcao nativa push 
			** pegando o id como indice do array e o valor na frente
			*/
			arrVars.push( $j(this).attr('id')+'='+$j(this).val() );
		});
		/* Retorno ele. */
		return arrVars.join('&');
	},
	novoEstrategia : function(){
		$j.ajax({
			type: 'POST', // Usando metodo Post
			/*Para onde sera passado o que foi pego que e a url:
			* E como ele sera passado se sera por json ou text
			* o text normalmente so e descomentado para se fazer debug
			*/
			url: 'adm/controllers/conOrcamento.php', dataType:'json',/* dataType:'text', */
			/* Qual a acao ele ira pegao do controlador que foi passado acima */
			data: 'acao=orcamentoNovoEstrategia&'+CapturarEstrategia.createQueryStringVars(),
			/* Mensagem que e passada antes de fazer a acao que você quer. a primeira () e o id da div aonde ele colocara a mensagem
			*  O segundo e com ele sera passado e qual a frase.
			 */
			beforeSend: function(){ $j('#ctnMsgAlertOrcamentoEstrategia').html('Cadastrando...'); },
			/*
			** Acao que sera feita com o retorno do controllers de acordo com o que você fez la.
			** Ele pega o retorno do json que foi passado pelo controllers e verifica se retorno a mensagem success 
			** e faz o que esta programado pelo IF
			*/
			success: function(txt){ //txt => conteúdo trazido pela requisição
				if(  txt.indRetorno=='success'  ){
					$j('#ctnMsgAlertOrcamentoEstrategia').html("<b><span style='color:green;'>Cadastro efetuado com sucesso!</span></b>");
					$j('#frmOrcamentoEstrategia textarea').val('');
					window.location='?indPagina=orcamentogeral';
				}else{
					$j('#ctnMsgAlertOrcamentoEstrategia').html("<b><span style='color:red;'>Erro ao tentar cadastrar!</span></b>");
				}	
			}
		});
	}
}
</script>
O controllers que pega o que vem do javascritp e um switch com os case de cada pagina.

Exemplo case da pagina acima:

case 'orcamentoNovoEstrategia':
			$OrcamentoContato->setDesEstrategiaResposta1($_POST['des_estrategia_resposta_1']);
			$OrcamentoContato->setDesEstrategiaResposta2($_POST['des_estrategia_resposta_2']);
			$OrcamentoContato->setDesEstrategiaResposta3($_POST['des_estrategia_resposta_3']);
			echo"<pre>";
			print_r($OrcamentoContato);
			echo"</pre>";
			if ( $OrcamentoContato  ) {
				$arrRetorno['indRetorno'] = 'success';
				$arrRetorno['msg'] = 'Seus dados foram cadastrados';
			}else{
				$arrRetorno['indRetorno'] = 'error';
				$arrRetorno['msg'] = 'Erro ao tentar cadastrar os dados';
			}
			echo json_encode($arrRetorno);
	break;

quando eu do esse print_r no objeto ele nao esta me passando o que veio da primeira tela de cadastro que e o nome da pessoa, e-mail etc...

Entao eu queria saber 2 coisas.

 

Mais importante

1) Como eu crio um objeto que consiga passar por essas mudancas de pagina, de case e nao perde o que ele recebeu antes? Tem como criar tipo um objeto global??

 

2) Como eu conto quantos valores eu tenho nesse objeto? Tentei o count() porem ele me passa 1 acho que ele esta contando quantos objetos tem.

 

Obrigado galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Boa....

Nem tinha lembrando dessa vo faze isso mesmo vlw Evandro.

 

Então Evandro eu fiz assim e deu certo ve se e o melhor jeito???

 

Esse codigo tem o $j porque e um script que uso para não dar conflito entre o ajax e o jquery.

<script type="text/javascript"> jQuery.noConflict(); var $j=jQuery; </script>
Codigo javascript de todas as paginas .html

Exemplo da pagina vw_orcamento_aparencia.html

<script language="javascript">
	 CapturarAparencia = {
		createQueryStringVars : function(){
		/* Cria um array */
			var arrVars=[];
			/* Captura tudo o que vem do form atraves do id que passei #frmOrcamentoContato 
			** e na frente esta o tipo de campo que eu vo pega
			*/
			$j("#frmOrcamentoAparencia textarea").each(function(){
				/* Pego o array e coloca na ultima posicao, atraves da funcao nativa push 
				** pegando o id como indice do array e o valor na frente
				*/
				arrVars.push( $j(this).attr('id')+'='+$j(this).val() );
			});
			/* Retorno ele. */
			return arrVars.join('&');
		},
		novoAparencia : function(){
			$j.ajax({
				type: 'POST', // Usando metodo Post
				/*Para onde sera passado o que foi pego que e a url:
				* E como ele sera passado se sera por json ou text
				* o text normalmente so e descomentado para se fazer debug
				*/
				url: 'adm/controllers/conOrcamento.php', dataType:'json', /*dataType:'text', */
				/* Qual a acao ele ira pegao do controlador que foi passado acima */
				data: 'acao=orcamentoNovoAparencia&'+CapturarAparencia.createQueryStringVars(),
				/* Mensagem que e passada antes de fazer a acao que você quer. a primeira () e o id da div aonde ele colocara a mensagem
				*  O segundo e com ele sera passado e qual a frase.
				 */
				beforeSend: function(){ $j('#ctnMsgAlertOrcamentoAparencia').html('Cadastrando...'); },
				/*
				** Acao que sera feita com o retorno do controllers de acordo com o que você fez la.
				** Ele pega o retorno do json que foi passado pelo controllers e verifica se retorno a mensagem success 
				** e faz o que esta programado pelo IF
				*/
				success: function(txt){ //txt => conteúdo trazido pela requisição
					if(  txt.indRetorno=='success'  ){
						$j('#ctnMsgAlertOrcamentoAparencia').html("<b><span style='color:green;'>Cadastro efetuado com sucesso!</span></b>");
						$j('#frmOrcamentoAparencia textarea').val('');
						window.location='?';
					}else{
						$j('#ctnMsgAlertOrcamentoAparencia').html("<b><span style='color:red;'>Erro ao tentar cadastrar!</span></b>");
					}	
				}
			});
		}
	}
	</script>

Todos direcionao para o controlador conOrcamento.php

 

<?php
if( $_REQUEST['acao'] ){
	session_name($_REQUEST['acao']);
}
session_start();
include_once '../models/OrcamentoContato.php';
include_once '../DAO/OrcamentoContatoDAO.php';

$OrcamentoContatoDAO = new OrcamentoContatoDAO();


/**
** SWITCH que pega a acao(action do formulario)
*/
switch ( $_REQUEST['acao'] ){
case 'orcamentoNovo':
		$_SESSION['nom_orcamento_contato'] = $_POST['nom_orcamento_contato'];
		$_SESSION['des_orcamento_email'] = $_POST['des_orcamento_email'];
		$_SESSION['num_orcamento_telefone'] = $_POST['num_orcamento_telefone'];
		$_SESSION['des_orcamento_msn'] = $_POST['des_orcamento_msn'];
		$_SESSION['nom_site_1'] = $_POST['nom_site_1'];
		$_SESSION['nom_site_2'] = $_POST['nom_site_2'];
		$_SESSION['nom_site_3'] = $_POST['nom_site_3'];
		if( $_SESSION ){
			$arrRetorno['indRetorno']='success';
			$arrRetorno['msg']='success';
		}else{
			$arrRetorno['indRetorno']='fail';
			$arrRetorno['msg']='fail';
		}
		echo json_encode($arrRetorno);
	break;
	case 'orcamentoNovoEstrategia':
		$_SESSION['des_estrategia_resposta_1'] = $_POST['des_estrategia_resposta_1'];
		$_SESSION['des_estrategia_resposta_2'] = $_POST['des_estrategia_resposta_2'];
		$_SESSION['des_estrategia_resposta_3'] = $_POST['des_estrategia_resposta_3'];
		if( $_SESSION ){
			$arrRetorno['indRetorno']='success';
			$arrRetorno['msg']='success';
		}else{
			$arrRetorno['indRetorno']='fail';
			$arrRetorno['msg']='fail';
		}
		echo json_encode($arrRetorno);
	break;
	case 'orcamentoNovoGeral':
			$_SESSION['des_geral_resposta_1'] = $_POST['des_geral_resposta_1'];
			$_SESSION['des_geral_resposta_2'] = $_POST['des_geral_resposta_2'];
			$_SESSION['des_geral_resposta_3'] = $_POST['des_geral_resposta_3'];
			$_SESSION['des_geral_resposta_4'] = $_POST['des_geral_resposta_4'];
			$_SESSION['des_geral_resposta_5'] = $_POST['des_geral_resposta_5'];
			if ( $_SESSION  ) {
				$arrRetorno['indRetorno'] = 'success';
				$arrRetorno['msg'] = 'Seus dados foram cadastrados';
			}else{
				$arrRetorno['indRetorno'] = 'error';
				$arrRetorno['msg'] = 'Erro ao tentar cadastrar os dados';
			}
			echo json_encode($arrRetorno);
	break;
	case 'orcamentoNovoPublico':
			$_SESSION['des_publico_resposta_1'] = $_POST['des_publico_resposta_1'];
			$_SESSION['des_publico_resposta_2'] = $_POST['des_publico_resposta_2'];
			$_SESSION['des_publico_resposta_3'] = $_POST['des_publico_resposta_3'];
			$_SESSION['des_publico_resposta_4'] = $_POST['des_publico_resposta_4'];
			if ( $_SESSION  ) {
				$arrRetorno['indRetorno'] = 'success';
				$arrRetorno['msg'] = 'Seus dados foram cadastrados';
			}else{
				$arrRetorno['indRetorno'] = 'error';
				$arrRetorno['msg'] = 'Erro ao tentar cadastrar os dados';
			}
			echo json_encode($arrRetorno);
	break;
	case 'orcamentoNovoConteudo':
			$_SESSION['des_conteudo_resposta_1'] = $_POST['des_conteudo_resposta_1'];
			$_SESSION['des_conteudo_resposta_2'] = $_POST['des_conteudo_resposta_2'];
			if ( $_SESSION  ) {
				$arrRetorno['indRetorno'] = 'success';
				$arrRetorno['msg'] = 'Seus dados foram cadastrados';
			}else{
				$arrRetorno['indRetorno'] = 'error';
				$arrRetorno['msg'] = 'Erro ao tentar cadastrar os dados';
			}
			echo json_encode($arrRetorno);
	break;
	case 'orcamentoNovoRecursos':
			$_SESSION['des_recursos_resposta_1'] = $_POST['des_recursos_resposta_1'];
			$_SESSION['des_recursos_resposta_2'] = $_POST['des_recursos_resposta_2'];
			$_SESSION['des_recursos_resposta_3'] = $_POST['des_recursos_resposta_3'];
			$_SESSION['des_recursos_resposta_4'] = $_POST['des_recursos_resposta_4'];
			$_SESSION['des_recursos_resposta_5'] = $_POST['des_recursos_resposta_5'];
			$_SESSION['des_recursos_resposta_6'] = $_POST['des_recursos_resposta_6'];
			if ( $_SESSION  ) {
				$arrRetorno['indRetorno'] = 'success';
				$arrRetorno['msg'] = 'Seus dados foram cadastrados';
			}else{
				$arrRetorno['indRetorno'] = 'error';
				$arrRetorno['msg'] = 'Erro ao tentar cadastrar os dados';
			}
			echo json_encode($arrRetorno);
	break;
	case 'orcamentoNovoAparencia':
			$_SESSION['des_aparencia_resposta_1'] = $_POST['des_aparencia_resposta_1'];
			$_SESSION['des_aparencia_resposta_2'] = $_POST['des_aparencia_resposta_2'];
			$_SESSION['des_aparencia_resposta_3'] = $_POST['des_aparencia_resposta_3'];
			$_SESSION['des_aparencia_resposta_4'] = $_POST['des_aparencia_resposta_4'];
			$OrcamentoContato = new OrcamentoContato();
			$OrcamentoContato->setNomOrcamentoContato($_SESSION['nom_orcamento_contato']);
			$OrcamentoContato->setDesOrcamentoEmail($_SESSION['des_orcamento_email']);
			$OrcamentoContato->setNumOrcamentoTelefone($_SESSION['num_orcamento_telefone']);
			$OrcamentoContato->setDesOrcamentoMsn($_SESSION['des_orcamento_msn']);
			$OrcamentoContato->setNomSite1($_SESSION['nom_site_1']);
			$OrcamentoContato->setNomSite2($_SESSION['nom_site_2']);
			$OrcamentoContato->setNomSite3($_SESSION['nom_site_3']);
			$OrcamentoContato->setDesEstrategiaResposta1($_SESSION['des_estrategia_resposta_1']);
			$OrcamentoContato->setDesEstrategiaResposta2($_SESSION['des_estrategia_resposta_2']);
			$OrcamentoContato->setDesEstrategiaResposta3($_SESSION['des_estrategia_resposta_3']);
			$OrcamentoContato->setDesGeralResposta1($_SESSION['des_geral_resposta_1']);
			$OrcamentoContato->setDesGeralResposta2($_SESSION['des_geral_resposta_2']);
			$OrcamentoContato->setDesGeralResposta3($_SESSION['des_geral_resposta_3']);
			$OrcamentoContato->setDesGeralResposta4($_SESSION['des_geral_resposta_4']);
			$OrcamentoContato->setDesGeralResposta5($_SESSION['des_geral_resposta_5']);
			$OrcamentoContato->setDesPublicoResposta1($_SESSION['des_publico_resposta_1']);
			$OrcamentoContato->setDesPublicoResposta2($_SESSION['des_publico_resposta_2']);
			$OrcamentoContato->setDesPublicoResposta3($_SESSION['des_publico_resposta_3']);
			$OrcamentoContato->setDesPublicoResposta4($_SESSION['des_publico_resposta_4']);
			$OrcamentoContato->setDesConteudoResposta1($_SESSION['des_conteudo_resposta_1']);
			$OrcamentoContato->setDesConteudoResposta2($_SESSION['des_conteudo_resposta_2']);
			$OrcamentoContato->setDesRecursosResposta1($_SESSION['des_recursos_resposta_1']);
			$OrcamentoContato->setDesRecursosResposta2($_SESSION['des_recursos_resposta_2']);
			$OrcamentoContato->setDesRecursosResposta3($_SESSION['des_recursos_resposta_3']);
			$OrcamentoContato->setDesRecursosResposta4($_SESSION['des_recursos_resposta_4']);
			$OrcamentoContato->setDesRecursosResposta5($_SESSION['des_recursos_resposta_5']);
			$OrcamentoContato->setDesRecursosResposta6($_SESSION['des_recursos_resposta_6']);
			$OrcamentoContato->setDesAparenciaResposta1($_SESSION['des_aparencia_resposta_1']);
			$OrcamentoContato->setDesAparenciaResposta2($_SESSION['des_aparencia_resposta_2']);
			$OrcamentoContato->setDesAparenciaResposta3($_SESSION['des_aparencia_resposta_3']);
			$OrcamentoContato->setDesAparenciaResposta4($_SESSION['des_aparencia_resposta_4']);
			$nomeSessao = session_name();
			if( $nomeSessao == 'orcamentoNovoAparencia' ){
				if ( $OrcamentoContatoDAO->inserirNovoOrcamento($OrcamentoContato)  ) {
					$arrRetorno['indRetorno'] = 'success';
					$arrRetorno['msg'] = 'Seus dados foram cadastrados';
				}else{
					$arrRetorno['indRetorno'] = 'error';
					$arrRetorno['msg'] = 'Erro ao tentar cadastrar os dados';
				}
			}else{
				echo "Nao deu certo!";
			}
				
			echo json_encode($arrRetorno);
	break;
}
?>

Uma coisa que poderia ser feito para melhorar e cada pagina ter seu proprio controlador porem como estava com pressa para entregar o servico acabei fazendo assim.

 

O controlador entra em contado com a OrcamentoContato.php que e a pagina com setters e getters (Que para melhorar pode ser feita uma pagina para cada pagina html que você crio tambem.), e com a pagina OrcamentoContatoDAO.php que e a pagina que tem os metodos com a programacao sql, que faz a comunicacao com o banco de dados.

 

OrcamentoContatoDAO.php

<?php
include_once '../models/OrcamentoContato.php';
include_once '../models/Conexao.php';


class OrcamentoContatoDAO{

	/**
	 * Objeto ADOdb
	 *
	 * @var Object
	 */
	private $conn;
	/**
	 * Objeto Conexao
	 *
	 * @var Object
	 */
	private $Conexao;
	
	/**
	 * Função que faz a conexão com o BD affp.com.br
	 *
	 * @return UsuarioDAO
	 */
	 public function OrcamentoContatoDAO(){
		$this->Conexao = new Conexao();
		$this->Conexao->conectar();
		$this->conn = $this->Conexao->getConexao();
	}
	/**
	 * Função para inserir novos orcamento na tb_orcamento.
	 *
	 * @param Objeto $_SESSION
	 * @return Boolean - 1 TRUE inseriu novo usuario, 2 FALSE não inseriu o novo usuario.
	 */
	public function inserirNovoOrcamento($OrcamentoContato){
		$OrcamentoContato->setCodOrcamento( $this->Conexao->gerarCodigo('tb_orcamento', 'cod_orcamento', $this->Conexao->getNomSchema() ) );

		$sql = " INSERT INTO ".$this->Conexao->getNomSchema().".tb_orcamento ( "
		." cod_orcamento, nom_orcamento_contato, num_orcamento_telefone, des_orcamento_msn, des_orcamento_email, nom_site_1, nom_site_2, nom_site_3, des_estrategia_resposta_1, des_estrategia_resposta_2, des_estrategia_resposta_3, des_geral_resposta_1, des_geral_resposta_2, des_geral_resposta_3, des_geral_resposta_4, des_geral_resposta_5, des_publico_resposta_1, des_publico_resposta_2, des_publico_resposta_3, des_publico_resposta_4, des_conteudo_resposta_1, des_conteudo_resposta_2, des_recursos_resposta_1, des_recursos_resposta_2, des_recursos_resposta_3, des_recursos_resposta_4, des_recursos_resposta_5, des_recursos_resposta_6, des_aparencia_resposta_1, des_aparencia_resposta_2, des_aparencia_resposta_3, des_aparencia_resposta_4 "
		." )VALUES( "
		.$OrcamentoContato->getCodOrcamento().","
		."'".$OrcamentoContato->getNomOrcamentoContato()."',"
		."'".$OrcamentoContato->getNumOrcamentoTelefone()."',"
		."'".$OrcamentoContato->getDesOrcamentoMsn()."',"
		."'".$OrcamentoContato->getDesOrcamentoEmail()."',"
		."'".$OrcamentoContato->getNomSite1()."',"
		."'".$OrcamentoContato->getNomSite2()."',"
		."'".$OrcamentoContato->getNomSite3()."',"
		."'".$OrcamentoContato->getDesEstrategiaResposta1()."',"
		."'".$OrcamentoContato->getDesEstrategiaResposta2()."',"
		."'".$OrcamentoContato->getDesEstrategiaResposta3()."',"
		."'".$OrcamentoContato->getDesGeralResposta1()."',"
		."'".$OrcamentoContato->getDesGeralResposta2()."',"
		."'".$OrcamentoContato->getDesGeralResposta3()."',"
		."'".$OrcamentoContato->getDesGeralResposta4()."',"
		."'".$OrcamentoContato->getDesGeralResposta5()."',"
		."'".$OrcamentoContato->getDesPublicoResposta1()."',"
		."'".$OrcamentoContato->getDesPublicoResposta2()."',"
		."'".$OrcamentoContato->getDesPublicoResposta3()."',"
		."'".$OrcamentoContato->getDesPublicoResposta4()."',"
		."'".$OrcamentoContato->getDesConteudoResposta1()."',"
		."'".$OrcamentoContato->getDesConteudoResposta2()."',"
		."'".$OrcamentoContato->getDesRecursosResposta1()."',"
		."'".$OrcamentoContato->getDesRecursosResposta2()."',"
		."'".$OrcamentoContato->getDesRecursosResposta3()."',"
		."'".$OrcamentoContato->getDesRecursosResposta4()."',"
		."'".$OrcamentoContato->getDesRecursosResposta5()."',"
		."'".$OrcamentoContato->getDesRecursosResposta6()."',"
		."'".$OrcamentoContato->getDesAparenciaResposta1()."',"
		."'".$OrcamentoContato->getDesAparenciaResposta2()."',"
		."'".$OrcamentoContato->getDesAparenciaResposta3()."',"
		."'".$OrcamentoContato->getDesAparenciaResposta4()."'"
		." ) ";
		return ($this->conn->Execute($sql))? '1':'0';
	}
}

No meu aqui ainda tem os metodos de buscar e buscar colocando num array e depois busca passando para json.

 

Entao ficou assim quem puder melhorar ou falar de uma jeito mais seguro e melhor de fazer por favor mudem, so peco que coloqueo aqui.

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.