Ir para conteúdo

POWERED BY:

Arquivado

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

Rpizao

Variáveis de classe e rownum

Recommended Posts

Falai pessoal,Bem....queria saber se tem como usar variáveis internas a classe....e como devo declará-las.Outra é....Existe um termo no MySQL como o rownum no Oracle e, se não me engano, rowcount no Sql Server...Que eu possa filtrar somente as primeiras 5 linhas do meu select, por exemplo.Vlw pela ajuda pessoal...Até breve...Rafael.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja este exemplo no PHP4:

<?phpclass Teste {   var $Nome; // Variável   function setNome($str) {	  $this->Nome = $str;   }   function getNome() {	  return $this->Nome;   }}$Teste = new Teste;// Definindo a variável$Teste->setNome("Felipe");// Exibindo o conteúdo da variável através de um métodoprint $Teste->getNome();// Imprimindo o valor da variável diretamenteprint $Teste->Nome;?>
No caso do PHP5 a variável deve ser do tipo public.

 

Quanto ao rownum veja no manual do MySQL sobre LIMIT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw pessoal....tudo no esquema....Obrigado....Até mas....Rafael.

Compartilhar este post


Link para o post
Compartilhar em outros sites

...e você pode usar public(default) protected, private, static

Fabyo...

 

Mas para poder imprimir uma variável interna da classe, fora da classe, só se ela for do tipo public, correto!?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por outro lado, se o objetivo é a criação de uma variável de classe não tem sentido coloca como public...

 

Vlw pessoal...até!

Rafael.

 

ih galera....eu tava envolvido no problema do limit acabei que ainda não tinha testado a declaração da variável...

 

Fiz assim...

class usuarios{	private $conn = new acesso_bd;	function login($user, $passw)	{		$instr = "	SELECT COUNT(1)					FROM USUARIOS					WHERE login = '$user'					AND	senha = '$passw'";		$array = $conn.select($instr);			if($array[0] == 0) return false;		else return true;		}}

E da erro exatamente na linha onde declaro a variável...

O que to fazendo de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ta estanciando a classe fora do metodo

 

e outra coisa sua classe nao faz sentido, trabalhar em oop nao é só criar class { }, a ideia de oop é muito mais que isso, é te dar vantagens

se sua classe nao tem sentido ou nao faz diferença de uma simples função você trocou 6 por meia duzia

 

outra coisa que você tem que ver bem é dar os nomes que fazem mais sentido para a classe ever o que ela realmente representa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po Fabyo a idéia é criar uma variável (no caso um objeto de outra classe) que fosse visível a todos os métodos.Minha tentativa (se ruim ou não eu não sei) foi de criar uma classe para cada tabela e que essa classe controle tudo que tiver relação com ela.Assim eu instancio um objeto conexao dentro da classe e posso tratar de updates/inserts/deletes em toda ela.Tem como fazer isso?Obrigado.Rafael.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se tiver usando php5 você pode extender da classe mysqli

se for php4 você pode criar um metodo abrir e fechar a conexao e usar dentro do metodo que você vai manupular o banco, mas nao faz sentido você criar um metodo update outro insert etc... basta um metodo só para fazer qualquer inserção ou update no banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi isso que fiz cara...

 

A única coisa diferente foi que separei métodos basicos como update/insert/delete e select em um arquivo separado....chamado de bd e em outro arquivo deixei só as classes de negócio....dando mais ou menos uma idéia de 3 camadas, mas pra organizar mesmo...

 

Ai queria que pra minha classe usuarios eu tivesse que instanciar só uma vez o o objeto conexão (isso seria ao ser instanciado um novo objeto dessa classe) e ele poder ser usado por todos da classe.

 

Olha o código da minha classe BD.

class acesso_bd{	function connected()	{		mysql_connect("localhost", "root", "") or die("Erro ao conectar!");		mysql_select_db("dbweb") or die ("Erro ao conectar ao BD");	}	function select($instr)	{		$resp = mysql_query($instr) or die("Erro ao executar select!");		$array = mysql_fetch_array($resp);		return($array);	}	function insert_update($instr)	{		$resp = mysql_query($instr) or die("Erro ao executar insert/update!");		if(mysql_error() == null) return true;		else return false;	}}

O problema continua.....no momento tenho um objeto conexao dentro de cada método.....é o único jeito?

 

Vlw!!!

Rafael.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom como falei fazer uma classe nao é só escrever class { }

 

nao faz sentido ter um metodo para cada ação sendo que tudo depende de 1 função mysql_query()

 

e foi o que eu perguntei se você usa o php5 você pode usar um construtor para conectar no banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou sim cara!PHP5....mas se tenho que criar um função construtora pra isso, não vai fazer muito sentido, já que vou ter que chama dentro das funções....assim já está!Vlw cara.Até.Rafael.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nao entendeu o que eu quiz dizer e pelo visto você nao tem muita noção de oop ,se prefere fazer do jeito que você quer beleza

 

mas dizer que um construtor nao faz sentido, você nao entendeu mesmo o que é oop

 

mas beleza faz do jeito que você achar melhor, mas se quiser estudar mais da uma lida sobre cosntrutores e da classe mysqli dai você vai ver que falou besteira

 

vou deixar um exemplo só pra você entender

 

Construtores são funções numa classe que são automaticamente chamados quando você cria uma nova instância da classe com new.

 

entao assim que você estanciar uma classe ele ja conecta no banco automaticamente e quando acabar a execução a função __destruct ja fecha a conexao automaticamente

 

entendeu agora porque faz muito sentido usar construtores ?

 

agora vou passar um exemplo de uma classe de conexao que eu fiz, eu reduzi ela para lhe mostrar só o que interessa e para você ter uma noção melhor

 

<?php
//criado por Fabyo Guimaraes
Class DBMySQLi extends Mysqli
{
public function __construct()
{
	try {
		@$this->connect( SERVIDOR, USUARIO, SENHA, BANCO );
		if(mysqli_connect_errno() != 0) {
			throw new Exception();
		}
	} catch(Exception $erro) {
		$this->Verifica_Erro($erro);
	}
}

public function __destruct()
{
	if(mysqli_connect_errno() == 0) {
		$this->close();
	}
}

public function Executar($SQL)
{
	if($this->Verifica_Conexao()) {
		static $re;
			$re = @$this->query($SQL);
		if(preg_match("#(select)#is", $SQL)) {
			return $resultado->fetch_object();
		} else {
			return $this->affected_rows();
		}
	}
}
}

//modo de usar:

$comando = new DBMySQLi();
$comando->Executar("SELECT * from tabela");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...OOP eu entendo....não muito, mas entendo...Eu só não sei como implementá-la em PHP....e eu sei muito bem o que é um CONSTRUTOR, mas pelo que vi você falando do PHP4, pra mim eu teria que chama-lo (confesso que não entendi o sentido de construtor por isso), não sabia que ele era iniciado quando a classe fosse instanciada, como é em java...E outra....não vou complicar meu código só pra mostrar que sei usar o MySQLi.....a sua função executa fico bem manera, mas eu prefiro faze-la em duas partes...Mas vlw pela dica!

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu seja mais humilde , você ta com duvidas sobre oop e nao quer dar o braço a torcer assumindo que você nao sabe, nao precisa disso se você quer aprender tem pessoas aqui que estao dispostas a ajudar e acredito que todos nos saimos ganhando nisso.

 

e se você entende mesmo de oop deve saber que é uma maneira de programar e evitar desperdicio e jeitos errados de se fazer algo

 

do seu jeito nao tem vantagens nenhuma em usar oop porque você nao percebeu o sentido correto de oop como ja falei um script orientado a objetos nao é só colocar class { } , e se você entende-se de conexao você veria que em qualquer linguagem pode se Java ou .NET a ideia é a mesma tem uma função que executa uma query nao tem logica criar uma função inserir outra editar outra pra select isso ai ja fujiu de oop

 

mas como falei faça do jeito que achar melhor se prefere montar uma função dentro de class {} e falar que ta programando em oop você que sabe

 

e a questao nao é complicar codigo e sim usar o que tem de melhor em maos, o mysqli é muito melhor que mysql e nao tem porque usar mysql se você pode usar mysqli ja que com ele você tera muitos recursos a mais mesmo porque o mysqli foi criado para funcionar as novas funções do mysql acima do 4.0

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.