PHP - Obtener todos los registros

   
Vista:

Obtener todos los registros

Publicado por Caruso (27 intervenciones) el 22/12/2013 17:57:51
Hola, tengo que programar la funcion de getAll() que devuelve todos los empleados de una tabla en un base de datos.

En un script ("BaseDeDatos.php") tengo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public function query($consulta)
	{
		$this->_consulta = mysql_query($consulta, self::$_conexion);
 
		return $this->_verificarSiHayError();
	}
 
	/**
	 * Devuelve el último id que se generó al insertar un registro
	 * 
	 * @return integer
	 */
	public function getUltimoIdInsertadio()
	{
		return mysql_insert_id(self::$_conexion);
	}
 
	/**
	 * Devuelve una fila como un array
	 * 
	 * @param int $modo Por defecto toma el valor de MYSQL_ASSOC
	 * @return array|boolean
	 */
	public function fetchArray($modo = MYSQL_ASSOC)
	{
		// Verificamos que no haya error en la consulta ejecutada
		if ( $this->_verificarSiHayError() == true )
		{
			return false;
		}
 
		$fila = mysql_fetch_array($this->_consulta, $modo);
 
		return $fila;
	}
 
	/**
	 * Devuelve una fila como un objeto
	 * 
	 * @return object|boolean
	 */
	public function fetchObject()
	{
		// Verificamos que no haya error en la consulta ejecutada
		if ( $this->_verificarSiHayError() == true )
		{
			return false;
		}
 
		$fila = mysql_fetch_object($this->_consulta);
 
		return $fila;
	}
}
Estas funciones como veran ejecutan un query y se puede devolver un array o un objeto.
Entonces en empleado.php tengo:

1
2
3
4
5
6
public function getAll(){
        $SQL="select * from empleado";
        $bd=new BaseDeDatos();
        $bd->query($SQL);
 
    }
La funcion query tambien es de BaseDeDatos.php, el caso es que no se como utilizar la fucion fetchObject del otro archivo para recorrer la tabla de la base de datos.

Pense en hacer un foreach, pero no me imagino como puede ser.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Obtener todos los registros

Publicado por xve (5519 intervenciones) el 22/12/2013 20:56:44
Hola Caruso, la verdad es que no se muy bien que devuelve la función: _verificarSiHayError() ya que es lo que devuelve la función query().

Si devolviera el resultado directo de la variable: $this->_consulta, te faltaría hacer un mysql_fetch_array() o mysql_fetch_assoc() o cualquier otro método para recuperar los datos... algo así:

1
2
3
4
while($row=mysql_fetch_array($bd->_consulta))
{
    echo $row["campoTabla"];
}

También ten en cuenta, que hay que la variable $bd->_consulta tendrá que ser publica, o al llamar la función query tendrás que capturar el resultado... algo así:
1
$resultado=$bd->query($SQL);

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener todos los registros

Publicado por Caruso (27 intervenciones) el 23/12/2013 11:29:52
Disculpa me olvide de decirte, este es el codigo html que muestra los empleados, lo que debo programar en empleado.php debe servir para acceder con los get que estan abajo al objeto, y obviamente cada empleado en la base de datos seria un objeto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
 
// Incluyo la clase de base de datos
require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/includes/php/BaseDeDatos.php';
 
// Incluyo la clase de empleado
require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/empleado/includes/Empleado.php';
 
// Creo el objeto para luego cargar los datos
$oEmpleado = new empleado();
 
// Verifico que el id esté seteado
if ( isset( $_GET['id'] ) == false || $_GET['id'] < 1 )
{
	header("location: lista.php");
}
 
// Cargo la información del empleado
$oEmpleado->buscar($_GET['id']);
 
// Verifico que exista el empleado
if ( $oEmpleado->getIdEmpleado() < 1 )
{
	header("location: lista.php");
}
 
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>SGE | Informaci&oacute;n de Empleado</title>
	<link rel="stylesheet" type="text/css" href="/sge/includes/css/style.css" />
</head>
<body>
 
<div class="wrapper">
 
	<div class="background"></div>
 
	<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/includes/php/header.php';?>
 
	<div class="main">
 
		<div class="formulario">
 
			<form action="/sge/empleado/guardar.php" method="post">
 
				<input type="hidden" name="idEmpleado" value="<?php echo $oEmpleado->getIdEmpleado(); ?>"/>
 
				<label for="apellido">Apellido:</label>
				<input type="text" name="apellido" value="<?php echo $oEmpleado->getApellido(); ?>" placeholder="Ingrese el Apellido..."/>
 
				<label for="nombre">Nombre:</label>
				<input type="text" name="nombre" value="<?php echo $oEmpleado->getNombre(); ?>" placeholder="Ingrese el Nombre..."/>
 
				<label for="legajo">Legajo:</label>
				<input type="text" name="legajo" value="<?php echo $oEmpleado->getLegajo()?>" placeholder="Ingrese el N° de Legajo..."/>
 
				<div class="buttons">
					<button type="submit">Guardar</button>
					<button type="button" onclick="window.history.back();">Cancelar</button>
				</div>
 
			</form>
 
		</div>
 
	</div>
 
</div>
 
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/includes/php/footer.php';?>
 
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener todos los registros

Publicado por Elier (92 intervenciones) el 23/12/2013 16:14:04
Uno de los pilares de la Programacion Orientada a Objetos es la Herencia.
1
2
3
4
5
6
7
8
9
10
11
class Empleado extends BaseDeDatos
{
    public function GetAll()
    {
         // Este funcion es heredada al igual que fetchObject
        $this->query("SELECT * FROM empleado");
    }
}
 
$empleado = new Empleado();
$empleado->GetAll();


Aunque si quieres hacer las cosas bien puedes usar un ORM como Doctrine

http://www.doctrine-project.org/projects/orm.html

Para que reinvertar la rueda si ya alguien la inventó y funciona bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar