Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Una ayudita con OOP

Estas en el tema de Una ayudita con OOP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Muchachos, estoy viendo PHP con Objetos... aqui algo que hice, pero desde ya que no funciona, me dan una ayudita!? Código: <?php include ('config.inc.php'); class ...
  #1 (permalink)  
Antiguo 07/12/2011, 07:37
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Una ayudita con OOP

Muchachos, estoy viendo PHP con Objetos... aqui algo que hice, pero desde ya que no funciona, me dan una ayudita!?

Código:
<?php

include ('config.inc.php');

class Conexion{
	private $serv;
	private $user;
	private $pass;
	private $base;
	private $conect;
	
	function __construct($serv, $user, $pass, $base){
		$this->serv = $serv;
		$this->user = $user;
		$this->pass = $pass;
		$this->base = $base;
		$this->conectar();
	}

	private function conectar(){
		$this->conect = mysql_connect ($this->host, $this->user, $this->pass)or die ("error en conexion");
		mysql_select_db ($this->base, $this->conect);
	}
}

class Datos{
	
	function mostrar(){
		$this->resultado = mysql_query("SELECT titulo, contenido FROM post ORDER BY id ASC", $this->conect);
		$resu = mysql_fetch_array($this->resultado,MYSQL_ASSOC);
		
		while($resu){
			echo " ".$resu['titulo']." - ".$resu['contenido']." <br/>";
		}

	}
}

?>
En el index.php (ya contiene el include de la clase) va lo siguiente:

Código:
$mostrar = new Datos();
$mostrar->mostrar();
Bueno, muchas gracias, no me insulten mucho!
Gustavo.
  #2 (permalink)  
Antiguo 07/12/2011, 08:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Una ayudita con OOP

¿te sale algún error?.

lo que si veo es que la clase Datos no tiene ningún miembro $this->conect ya que en ningún momento creas la instancia de la clase conexion y en ningún momento se la asignas como valor del miembro a instancia de la clase Datos $mostrar
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 07/12/2011, 08:18
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Una ayudita con OOP

Gracias por responder, aqui los errores:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\gustavo\site\class.inc.php on line 29

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\gustavo\site\class.inc.php on line 30

El $this->conect esta en la funcion mysql_query...

Saludos.
  #4 (permalink)  
Antiguo 07/12/2011, 08:21
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Una ayudita con OOP

exacto, pero $this->conect NO pertenece como Miembro de la clase Datos, por lo tanto no devolverá Nada, recuerde que POO dista en algunos puntos de la programación estructurada, existe un mayor nivel de acceso y ámbito de las variables como parte de la encapsulación
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 07/12/2011, 08:25
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Una ayudita con OOP

aja, ok... entonces uso herencia? Es decir, uso... asi:

class Datos extends Conexion{
}

O paso a public el atributo $conect ???

????
Gracias.
  #6 (permalink)  
Antiguo 07/12/2011, 08:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Una ayudita con OOP

depende de como lo quieras implementar, podrías consultar patrones de diseño.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 07/12/2011, 08:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Una ayudita con OOP

Es una prueba porque estoy aprendiendo a usar PHP... realmente hay cosas que no las tengo presentes.

Si puede ser una ayuda mas puntual.

Muchas gracias!
Gustavo.
  #8 (permalink)  
Antiguo 07/12/2011, 09:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Una ayudita con OOP

No puedes heredar por heredar más bien tendrías que agregar un getter a tu clase Conexión para obtenerla desde tu clase datos, aunque inyección de dependencias es lo mejor:
Código PHP:
Ver original
  1. class Datos {
  2.        private $conexion;
  3.  
  4.        public function setConexion($conexion) {
  5.                  $this->conexion = $conexion;
  6.        }
  7.  
  8.        public function mostrar() {
  9.                $resultado = mysql_query("SELECT titulo, contenido FROM post ORDER BY id ASC", $this->conexion);
  10.         $resu = mysql_fetch_array($resultado,MYSQL_ASSOC);
  11.        
  12.         while($resu){
  13.             echo " ".$resu['titulo']." - ".$resu['contenido']." <br/>";
  14.         }
  15.        }
  16. }
  17.  
  18. class Conexion {
  19.         public function getConexion() {
  20.                   return $this->conect;
  21.         }
  22. }
  23.  
  24. $conexion = new Conexion(/* */);
  25. $datos = new Datos();
  26. $datos->setConexion($conexion);
  27. $datos->mostrar();
  #9 (permalink)  
Antiguo 07/12/2011, 09:58
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Una ayudita con OOP

Gracias!!!
Sigo con el mismo error, pero la idea de usar setter y getter no la habia tenido en cuenta...

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\gustavo\site\class.inc.php on line 37

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\gustavo\site\class.inc.php on line 38

Muchas gracias!
Gustavo.
  #10 (permalink)  
Antiguo 07/12/2011, 10:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Una ayudita con OOP

Perdon sería $datos->setConexion($conexion->getConexion());
  #11 (permalink)  
Antiguo 07/12/2011, 10:54
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Una ayudita con OOP

ahhh, excelente... ahi funciona!
No me muestra los datos que esperaba de la query, seguro algo hice mal... pero ahora me pongo a ver que pasa yo... mi problema era lograr hacer que cierre el circuito... que lo esta!

Muchisimas gracias!
Gustavo.

Etiquetas: clase, oop, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:07.