Ir para conteúdo

Arquivado

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

danielmalaquias

PHP e OO

Recommended Posts

Bom dia a todos. Comecei a pouco tempo um projeto pessoal de programação php orientada a objetos. Tenho um livro em casa do walace soares, no qual tentei inicialmente programar um versão de testes que ele disponibiliza no próprio livro, porém, não está funcionando de acordo. Vou postar aqui todo o código, se alguém pudesse me ajudar, retornando o código, com comentários nos locais onde está errado alguma coisa.

 

classbd.php

<?/*Classe - BDPropriedadesbd -> tipo de banco de dadosid -> identificador de conexão com o banco de dadosoperadores+bd() -> construtor+conecta() -> conecta o banco de dados desejado*/class bd{var $bd;var $id;function bd($sgbd="MySQL"){$this->bd = $sgbd;}function conecta(){$this->id = mysql_connect("localhost", "root", "root");if($this->id){mysql_select_db("carros", $this->id);}else{$this->id=0;}}}class consulta{var $bd;var $res;var $row;var $nrw;var $data;function consulta(&$bd){$this->bd = $bd;}function executa($sql){if($sql==""){$this->res=0;$this->nrw=0;$this->row=1;}if($this->bd=="MySQL"){$this->res = mysql_query($sql, $this->bd->id);$this->nrw = mysql_num_rows($this->res);}//$this->row = 0;if($this->nrw > 0){$this->dados();}function primeiro(){$this->row = 0;$this->dados();}function proximo(){$this->row = ($this->row < ($this->nrw - 1)) ? ++ $this->row$this->nrw - 1);$this->dados();}function anterior(){$this->row = ($this->row > 0) ? --$this->row:0;$this->dados();}function ultimo(){$this->row = $this->nrw - 1;$this->dados();}function navega($linha){if($linha >= 0 and $linha < $this->nrw){$this->row = $linha;$this->dados();}}function dados(){if($this->bd->bd == "MySQL"){mysql_data_seek($this->res, $this->row);$this->data = mysql_fetch_array($this->res);}}}}?>

lista_carros.php

<html><head><title>Lista de Carros</title><link rel="stylesheet" a href="carros.css"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><table width="760" border="0" align="center"><tr><td><table width="100%" border="0" align="center"><tr><td align="center" bgcolor="#CCCCCC"><span class="texto2">LISTA DE CARROS</span></td></tr><tr><td>Informe abaixo os dados do seu carro ou clique <a href="carro.php?acao=L">AQUI</a> para ver a listacompleta </td></tr></table><form name="carro" action="carro.php" method="post"><table width="100%" border="0" align="center"><tr><td width="33%"> </td><td width="67%"> </td></tr><tr><td>Proprietário:</td><td><input name="proprietario" type="text" size="30" class="box"></td></tr><tr><td>Marca:</td><td><input name="marca" type="text" size="30" class="box"></td></tr><tr><td>Modelo:</td><td><input name="modelo" type="text" size="30" class="box"></td></tr><tr><td>Cor:</td><td><input name="cor" type="text" size="30" class="box"></td></tr><tr><td>Opcionais:</td><td><textarea name="opcionais" cols="30" rows="5" class="box_list"></textarea></td></tr><tr><td>Ano de Fabricação:</td><td><input name="ano_fab" type="text" size="30" class="box"></td></tr><tr><td>Ano Modelo:</td><td><input name="ano_mod" type="text" size="30" class="box"></td></tr><tr><td>Km Atual:</td><td><input name="km_atual" type="text" size="30" class="box"></td></tr><tr><td>Último Troca de Óleo:</td><td><input name="troca_oleo" type="text" size="30" class="box"></td></tr><tr><td height="26">Última Revisão:</td><td><input name="revisao" type="text" size="30" class="box"></td></tr><tr><td>Comentários</td><td><textarea name="comentarios" cols="30" rows="5" class="box_list"></textarea></td></tr><tr><td> </td><td><input type="submit" name="enviar" value="OK"><input type="reset" name="limpar" value="Limpar"><input type="hidden" name="acao" value="I"> </td></tr></table></form></td></tr></table></body></html>classcarro.php<?class carro{var $acao;var $proprietario;var $marca;var $modelo;var $cor;var $opcionais;var $ano_fab;var $ano_mod;var $km_atual;var $troca_oleo;var $revisao;var $comentarios;function carro($acao){$this->acao = $acao;$this->proprietario = '';$this->marca = '';$this->modelo = '';$this->cor = '';$this->opcionais = '';$this->ano_fab = 0;$this->ano_mod = 0;$this->km_atual = 0;$this->troca_oleo = 0;$this->revisao = 0;$this->comentarios = '';}function incluir($bd){$sql = "INSERT INTO carros VALUES (";$sql .= "'" . $this->proprietario . "',";$sql .= "'" . $this->marca . "',";$sql .= "'" . $this->modelo . "',";$sql .= "'" . $this->cor . "',";$sql .= "'" . $this->opcionais . "',";$sql .= $this->ano_fab . ",";$sql .= $this->ano_mod . ",";$sql .= $this->km_atual . ",";$sql .= $this->troca_oleo . ",";$sql .= $this->revisao . ",";$sql .= "'" . $this->comentarios . "')";$qry = new consulta($bd);$qry->executa($sql);}function listar($bd){$sql = "SELECT * from carros ORDER BY proprietario";$qry = new consulta($bd);$qry->executa($sql);//if($qry->nrw > 0){echo "<table border=0 cellpading=0, cellspacing=3 width=660>";echo " <tr bgcolor='#ffcc00'>";echo " <td>Proprietário</td>";echo " <td>Marca</td>";echo " <td>Modelo</td>";echo " <td>Cor</td>";echo " <td>Ano Fabricação / Modelo</td>";echo " <td>Última Troca Óleo</td>";echo " <td>Km Atual</td>";echo " <tr>";for($i = 0; $i < $qry->nrw; $i++){echo " <tr>";echo " <td>" . $qry->data["proprietario"] . "</td>";echo " <td>" . $qry->data["marca"] . "</td>";echo " <td>" . $qry->data["modelo"] . "</td>";echo " <td>" . $qry->data["cor"] . "</td>";echo " <td>" . $qry->data["ano_fab"] . "/" . $qry->data["ano_mod"] . "</td>";echo " <td>" . $qry->data["troca_oleo"] . "</td>";echo " <td>" . $qry->data["km_atual"] . "</td>";echo " </tr>";$qry->proximo();//}echo "</table>";}//else{// echo "<p><b>Nenhum Carro Cadastrado</b></p>";//}}}?>

carro.php

<html><head><link rel="stylesheet" a href="carros.css"><title>Lista de Carros</title></head><body><table border="0" cellpadding="0" cellspacing="0" width="760"><tr><td width="100%" align="center" bgcolor="#FFCC00"><span class="texto2">Lista de Carros</span></td></tr><tr><td height="20"></td></tr></table><?//if($acao == "" or empty($acao)){// exit;//}$acao = $_GET["acao"];//$acao = $_POST["acao"];"require("classbd.php");require("classcarro.php");$con = new bd();$con->conecta();$car = new carro($acao);$car->carro($acao);switch ($acao){case 'I':$car->proprietario = $proprietario;$car->marca = $marca;$car->modelo = $modelo;$car->cor = $cor;$car->opcionais = $opcionais;$car->ano_fab = $ano_fab;$car->ano_mod = $ano_mod;$car->km_atual = $km_atual;$car->troca_oleo = $troca_oleo;$car->revisao = $revisao;$car->comentarios = $comentarios;$car->incluir($con);echo "Carro Incluído";break;case 'L':$car->listar($con);}?></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daniel, bem-vindo ao fórum http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Dá uma olhadada nesta linha, tem erro de sintaxe:

$this->row = ($this->row < ($this->nrw - 1)) ? ++ $this->row$this->nrw - 1);

Deve ser algo como:

$this->row = ($this->row < ($this->nrw - 1) ? ++$this->row : $this->nrw - 1);

Para facilitar a compreensão do fórum, utilize sempre as tags CODE na parte de código.

Aproveitando, te peço para ler as regras do fórum.

 

Bons estudos. Qualquer coisa, posta aí ;)

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe as falhas de postagem Andersom. Consertei o erro que você havia falado, porém, ainda está dando problema, o sistema não me retorna erro nenhum, é como se não entrasse na classe que deveria retornar os registros do banco de dados, ele retorna a mensagem de que "não existe nada cadastrado". Não sei onde pode estar o erro, se na classe do banco de dados (classbd) ou na classe (carro.php)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros colegas, acertei essa parte que passaram, porém, está acontecendo o seguinte, nesta função

 

function listar($bd){		$sql = "SELECT * from carros ORDER BY proprietario";		$qry = new consulta($bd);		$qry = new consulta($bd);		echo $sql;		var_dump($qry);

 

retorna a seguinte mensagem na tela

 

SELECT * from carros ORDER BY proprietarioobject(consulta)#4 (5) { ["bd"]=> object(bd)#1 (2) { ["bd"]=> string(5) "MySQL" ["id"]=> resource(4) of type (mysql link) } ["res"]=> NULL ["row"]=> NULL ["nrw"]=> NULL ["data"]=> NULL }

 

se alguem pudesse ajudar a solucionar este problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

só uma obs, voce quer consertar esse codigo ou quer aprender oop?

 

se o caso for aprender oop, eu ja falo esse codigo nao tem nada de oop, é só funções dentro de class{}

Compartilhar este post


Link para o post
Compartilhar em outros sites

só uma obs, voce quer consertar esse codigo ou quer aprender oop?se o caso for aprender oop, eu ja falo esse codigo nao tem nada de oop, é só funções dentro de class{}

exatamente oque eu ia dizer!É necessario primeiro entender o conceito de OO

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.