<?php
/*
* @author : Jose Luis Yapur Vallejos
* @date : 09/10/08
* @company : Netmedia
* @version : 1.3
* @content : Clase conexión para manejo en MySQL
*/
class Conexion
{
/*
* Variables globales que tomarán valor
* en el método constructor de la clase
* Conexion.
*
* Ej.
* $servidor = "Localhost";
* $usuario = "root";
* $password = "password";
* $bdatos = "bdatos";
*
* Estos serán recibidos por el método
* constructor y devolverá el objeto de conexión
*/
private $servidor;
private $usuario;
private $password;
private $bdatos;
private $conexion;
public function Conexion($servidor, $usuario, $password, $bdatos)
{
$error = "ERROR 701 -CONSTRUCTOR-
Error de conexión, parametros
$this->bdatos = $bdatos;
$error = "ERROR 702 -CONSTRUCTOR-
No se puede seleccionar la
}
/*
* El método mostrar sirve para hacer
* consultas del tipo SELECT que pueden
* o no devolver valores.
*
* El método recibe la consulta SQL como parametro
* y devuelve una matriz dinámica de la forma
* $resultado[indice]['nomCampo'] del tipo
* String[][]
*
* Para algoritmos de busqueda devolverá una matriz
* con longitud 0 en caso no se encuentre la selección
* y mayor que 0 en caso contrario.
*/
public function mostrar($sql)
{
$error = "ERROR 703 -MOSTRAR-
No se puede mostrar la
$j = 0;
for($i = 0; $i < $consultaMAX; $i++)
{
}
{
for($i = 0; $i < $consultaMAX; $i++)
{
$datos[$j][$campos[$i]] = $row[$campos[$i]];
}
$j++;
}
return $datos;
}
/*
* El método sentencia permite realizar
* todo tipo de consulta distinta a SELECT en
* la que se devuelve el número de
* filas afectadas.
*
* El método recibe una consulta SQL como parametro
*/
public function sentencia($sql)
{
$error = "ERROR 704 -SENTENCIA-
No se puede realizar la
return $consulta;
}
/*
* El método eliminar permite como su nombre lo dice
* eliminar uno o más campos de una tabla, este método recibe
* como parámetros el nombre de la tabla y la condición lógica para
* la eliminación del o de los campos.
*/
public function eliminar($tabla, $condicion)
{
$error = "ERROR 705 -ELIMINAR-
No se puede eliminar la
$sql = "DELETE FROM " . $tabla .
"WHERE " . $condicion;
return $consulta;
}
/*
* El método actualizar permite actualizar uno más campos
* de una tabla, enviarle los campos actualizados y la condición lógica
* para realizar una consulta.
*
* Devuelve el número de filas afectadas
*/
public function actualizar($tabla, $campos, $condicion)
{
$error = "ERROR 706 -ACTUALIZAR-
No se puede actualizar la
$sql = "UPDATE " . $tabla .
"SET " . $condicion . "WHERE " . $condicion;
return $consulta;
}
public function cerrar()
{
}
}
class Alumno
{
/**
*calcularPromedio($alumno[0]);
*/
var $alumno;
function Alumno($alumno)
{
$this->alumno = $alumno;
}
function calcularPromedio()
{
$suma = $this->alumno['n1'] + $this->alumno['n2'] + $this->alumno['n3'];
}
function darColor()
{
if($this->calcularPromedio() > 11)
{
return '<font color="blue">'.$this->calcularPromedio().'</font>';
}
return '<font color="red">'.$this->calcularPromedio().'</font>';
}
function edadMenor()
{
if($this->alumno['edad'] > 17)
{
return 'MAYOR DE EDAD';
}
return 'MENOR DE EDAD';
}
}
$conn = new Conexion('localhost', 'root', '', 'bd_ejemplo');
if(!isset($_GET['buscar']))
{
$alumno = $conn->mostrar("SELECT * FROM t_alumno");
}
else
{
$alumno = $conn->mostrar("SELECT * FROM t_alumno WHERE nombres
LIKE '%".$_GET['buscar']."%' OR edad = '".$_GET['buscar']."'");
}
//si se ha enviado el formulario
if(isset($_POST['button2']))
{
$nombres = $_POST[nombres];
$edad = $_POST[edad];
$n1 = $_POST[n1];
$n2 = $_POST[n2];
$n3 = $_POST[n3];
$conn->sentencia("INSERT INTO t_alumno (nombres, edad, n1, n2, n3) VALUES ('$nombres', '$edad', '$n1', '$n2', '$n3')");
echo 'ALUMNO AGREGADO';
}
?>
<style>
#agregar{
background-color:#FFFF66;
position:absolute;
border: 1px solid #000000;
}
</style>
<form name="form1" method="get" action="">
<input type="text" name="buscar" id="buscar">
<input type="submit" name="button" id="button" value="Enviar">
</form>
<form name="form2" method="post" action="">
<p><a href="#" onClick="document.getElementById('agregar').style.display = 'block';">Agregar alumno</a></p>
<p>
<div id="agregar" style="display:none;">
<p>
<label>Nombre
<input type="text" name="nombres" id="nombres">
</label>
</p>
<p>
<label>Edad
<input type="text" name="edad" id="edad">
</label>
</p>
<p>
<label>Nota 1
<input type="text" name="n1" id="n1">
</label>
</p>
<p>
<label>Nota 2
<input type="text" name="n2" id="n2">
</label>
</p>
<p>
<label>Nota 3
<input type="text" name="n3" id="n3">
</label>
</p>
<p>
<input type="submit" name="button2" id="button2" value="Enviar">
</p>
<a href="#" onClick="document.getElementById('agregar').style.display = 'none';">Cerrar</a>
</div>
</form>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<th bgcolor="#FFFF99" scope="col">NOMBRE</th>
<th bgcolor="#FFFF99" scope="col">EDAD</th>
<th bgcolor="#FFFF99" scope="col">N1</th>
<th bgcolor="#FFFF99" scope="col">N2</th>
<th bgcolor="#FFFF99" scope="col">N3</th>
<th bgcolor="#FFFF99" scope="col">PROMEDIO</th>
<th bgcolor="#FFFF99" scope="col">CONDICION</th>
<th bgcolor="#FFFF99" scope="col">ESTADO</th>
</tr>
<?php
for($i = 0; $i < count($alumno); ++$i)
{
$objAlumno = new Alumno($alumno[$i]);
?>
<tr>
<td align="center"><?php echo $alumno[$i]['nombres'] ?></td>
<td align="center"><?php echo $alumno[$i]['edad'] ?></td>
<td align="center"><?php echo $alumno[$i]['n1'] ?></td>
<td align="center"><?php echo $alumno[$i]['n2'] ?></td>
<td align="center"><?php echo $alumno[$i]['n3'] ?></td>
<td align="center"><?php echo $objAlumno->calcularPromedio(); ?></td>
<td align="center"><?php echo $objAlumno->darColor(); ?></td>
<td align="center"><?php echo $objAlumno->edadMenor(); ?></td>
</tr>
<?php
}
?>
</table>
<p> </p>
Comentarios
Se agradecen los comentarios.
Se agradecen los comentarios. Acabo de aprender 2 cosas .. muchas gracias. Recien conoci esta pagina y es un hecho que empezare a seguirla. Saludos.
Bienvenido, mañana
Bienvenido, mañana publicaremos la actulización de la clase presentada.
José Luis Yapur Vallejos
Presidente PHPLux
Buen intento, pero como
Buen intento, pero como mencionan arriba, esto parece php4, otro mal punto es mostrar los errores de mysql, deberías tener una estado de depuración; un sitio en producción no debe mostrar información detallada a posibles atacantes.
Waldo, Muchas gracias por la
Waldo,
Muchas gracias por la sugerencia, definitivamente la podremos en práctica.
Saludos,
José Luis Yapur Vallejos
Presidente PHPLux
Saludos tan solo para hacer
Saludos tan solo para hacer unas acotaciones:
En PHP5 la funcion constructora debe de ser __construct y no el nombre de la clase (Eso se estilaba en PHP4). Evitar el uso del supresor de errores @ pues ralentiza el script, lo mismo para las comillas dobles si solo se va a almacenar una cadena. El "manejador" de errores que usan para cada funcion nunca va a devolever el contenido de mysql_error pues es invocado antes de que el error ocurra si se desea mostrar talvez deberian de usar algo como : $error = 'ERROR 706 -ACTUALIZAR- No se puede actualizar la condición. (%s)' $consulta = mysql_query($sql, $this->conexion) or die( sprintf( $error, mysql_error( ) ) );
Enviar un comentario nuevo