He estado avanzando bastante en la clase query conexión, realmente me está ayudando bastante en la creación de un proyecto que estoy haciendo, ojala le sirva a alguien más por ahí.
Después coloco ejemplos de cómo funciona.
<?php
/**
*
* @Clase principal de conexion y query. "clases.php"
* @versión: 9.09.14 @modificado: 14 de septiembre de 2009
* @autor: RadicalEd
*
**/
class SQL
{
//Variables públicas
public $result;
public $numrows;
public $arrayRegistros;
public $ultimo;
//Constructor
function SQL($host='localhost', $db='dymb2b', $user='usdym', $password='clio1214')
{
$this->database = mysql_connect($host, $user, $password) or die("No se pudo conectar con el servidor".mysql_error());
@mysql_select_db($db) or die( "No se pudo conectar a la db: " . mysql_error());
}
//Este método mostrará datos de una consulta de varias tablas
public function query($query, $tipo=0, $error='Query ejecutado incorrectamente')
{
$this->result = mysql_query($query) or die(mysql_error($error));
//Dependiendo del tipo de consulta SQL escojida
//extraemos las variables
switch($tipo)
{
case 0: //SELECT
$this->numrows = mysql_num_rows($this->result);
$this->arrayRegistros = mysql_fetch_array($this->result);
$this->ultimo = '';
break;
case 1: //INSERT
$this->ultimo = mysql_insert_id();
$this->numrows = '';
$this->arrayRegistros = '';
break;
case 2: //UPDATE
case 3: //DELETE
case 4: //ALTER
$this->numrows = '';
$this->arrayRegistros = '';
$this->ultimo = '';
break;
}
//Estos son todos los datos que se pueden extraer de un query
//Aca lo que se hace es devolverlo todo en un array
$arrayRetorno = array($this->result, $this->numrows, $this->arrayRegistros, $this->ultimo);
return $arrayRetorno;
}
//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes en forma vertical, además se puede agregar un link
//para ir hacía un script diferente
public function tablaVertical($query, $camposTabla, $link='0', $pagina='')
{
$tabla = '<div align="center"><table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';
//Para saber el porcentaje de tamaño de cada campo
/*$porc = 100/count($camposTabla);
$porc = floor($porc);*/
//Acá mostrará los encabezados de la tabla
foreach($camposTabla as $campo)
{
//Si el campo es PRECIO entonces al final añadimos una columna más para la suma
if ($campo=='PRECIO')
{
$tabla .= '<td align="center" class="letratd"><strong>'.$campo.'</strong></td>
<td align="center" class="letratd"><strong>TOTAL</strong></td>';
}
else
{
$tabla .= '<td align="center" class="letratd"><strong>'.$campo.'</strong></td>';
}
}
$tabla .= '</tr>';
//Ejecuto el query y obtengo un array con este
$array = $this->query($query);
$n = 0;
while($n<$array[1])
{
$tabla .= '<tr>';
$cmp = 0; //Esta variable nos sirve para saber cuando el primer campo es un link
//Se recorre el array de Datos
foreach($camposTabla as $campo)
{
$registro = mysql_result($array[0],$n,$campo);
//Confirmamos si es una imagen u otro tipo de dato
if (substr($registro, -3) == 'jpg' || substr($registro, -3) == 'bmp')
{
$tabla .= '<td align="center" class="letratd"><div id="pic">
<a class="p1" href="#" title="miniatura">
<img src="'.$registro.'" width="50" height="50" title="miniatura">
<img src="'.$registro.'" class="large">
</a>
</div></td>';
}
else
{
//Si el parámetro link esta a 1 y la variable cmp es igual a 0
//entonces se imprimira el enlace
if ($link=='1' && $cmp==0)
{
/*************NOTA*****************
* SE DEBERA TENER EN CUENTA QUE EL ID DEL LINK SIEMPRE DEBERA SER EL PRIMER
* CAMPO DEL QUERY, PARA QUE EL "mysql_result" PUEDA BUSCAR EL CAMPO 0
*/
//Si el dato está vacio, entonces imprimo el id
if ($registro=='')
{
$tabla .= '<td class="letratd" align="center"><a href="'.$pagina.mysql_result($array[0],$n, 0).'">'.mysql_result($array[0],$n, 0).'</a></td>';
$cmp = 1;
}
else
{
$tabla .= '<td class="letratd" align="center"><a href="'.$pagina.mysql_result($array[0],$n, 0).'">'.$registro.'</a></td>';
$cmp = 1;
}
}
else
{
//Si es un registro de tipo número, lo centramos en el campo de la tabla
if (is_numeric($registro))
{
//Una forma fea pero no tengo de otra para hacer la suma de campos
if ($campo=='CANTIDAD')
{
$cantidad = $registro;
}
//Si es un campo moneda; se diferenciará por que siempre el dato del
//array se deberá llamar PRECIO y calculamos el precio
if ($campo=='PRECIO')
{
$tabla .= '<td class="letratd" align="right">$ '.$registro.'</td>
<td class="letratd" align="right">$ '.$registro*$cantidad.'</td>';
$total += $registro*$cantidad;
$precio = 1; //Nos servira para imprimir el total al final
}
else
{
$tabla .= '<td class="letratd" align="center">'.$registro.' </td>';
}
}
else
{
$tabla .= '<td class="letratd">'.$registro.' </td>';
}
}
}
}
$tabla .= '</tr>';
$n++;
}
//Lo mismo que la anterior si hay un campo precio, entonces al final
//se imprimirá un valor total
if ($precio==1)
{
$tabla .= '<tr><td colspan="'.count($camposTabla).'" align="right" class="letratd"><b>TOTAL</b></td><td class="letratd" align="right"><b>$ '.$total.'</b></td></tbody></table></div>';
}
else
{
$tabla .= '</tbody></table></div>';
}
//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}
//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes en forma horizontal
public function tablaHorizontal($query, $camposTabla)
{
$tabla = '<div align="center">
<table border="1" cellpadding="1" cellspacing="1">
<tbody>';
$n = 0;
//Ejecuto el query y obtengo un array con este
$array = $this->query($query);
if ($row=$array[2])
{
//Acá mostrará los encabezados de la tabla
foreach($camposTabla as $campo)
{
$tabla .= '<tr>
<td class="letratd"><strong>'.$campo.'</strong></td>
<td class="letratd">'.$row[$n].'</td>
</tr>';
$n++;
}
}
$tabla .= '</tbody></table></div>';
//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}
//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes y un campo de texto
public function campoTextoVertical($query, $camposTabla)
{
$tabla = '<div align="center"><table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';
//Acá mostrará los encabezados de la tabla
foreach($camposTabla as $campo)
{
$tabla .= '<td align="center" class="letratd"><strong>'.$campo.'</strong></td>';
}
$tabla .= '<td align="center" class="letratd"><strong>CANTIDAD</strong></td></tr>';
//Ejecuto el query y obtengo un array con este
$array = $this->query($query);
$n = 0;
while($n<$array[1])
{
$tabla .= '<tr>';
//Se recorre el array de Datos
foreach($camposTabla as $campo)
{
$registro = mysql_result($array[0],$n,$campo);
//Confirmamos si es una imagen u otro tipo de dato
if (substr($registro, -3) == 'jpg' || substr($registro, -3) == 'bmp')
{
$tabla .= '<td align="center" class="letratd"><div id="pic">
<a class="p1" href="#" title="miniatura">
<img src="'.$registro.'" width="50" height="50" title="miniatura">
<img src="'.$registro.'" class="large">
</a>
</div></td>';
}
else
{
//Vamos a crear un campo array con el código de item
if ($campo=='CODIGO')
{
$tabla .= '<td class="letratd" align="center">'.$registro.'
<input type="hidden" name="item[]" size="10" style="text-align: center;" value="'.$registro.'"></td>';
}
else
{
//Si es un registro de tipo número, lo centramos en el campo de la tabla
if (is_numeric($registro))
{
$tabla .= '<td class="letratd" align="center">'.$registro.' </td>';
}
else
{
$tabla .= '<td class="letratd">'.$registro.' </td>';
}
}
}
}
$tabla .= '<td class="letratd" align="center">
<input type="text" name="cantidad[]" size="5" style="text-align: center;">
</td></tr>';
$n++;
}
$tabla .= '</tbody></table></div>';
//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}
//Este nos imprimirá un tag <table> compuesto de varios campos de
//tablas diferentes y un campo de texto
public function tablaImagenTexto($query, $camposTabla)
{
$tabla = '<div align="center">
<table border="1" cellpadding="1" cellspacing="1">
<tbody><tr>';
//Ejecuto el query y obtengo un array con este
$array = $this->query($query);
$n = 0;
$z = 0;
//while ($row=mysql_fetch_array($array[0]))
while ($z<$array[1])
{
//Esto es propio del desarrollo, lo quitaré después
//de usar thumbnails
$img = str_replace('img/colecciones/', 'img/colecciones/g', mysql_result($array[0], $z, $camposTabla[0]));
//Cada 4 impresiones me voy a la siguiente línea
if ($n==4)
{
//el rel="lightbox" del vínculo es para que funcione el popup de imágenes
$tabla .= '</tr><tr>
<td align="center">
<a href="'.$img.'" rel="lightbox" title="'.mysql_result($array[0], $z, $camposTabla[2]).'<br>'.mysql_result($array[0], $z, $camposTabla[1]).'">
<img src="'.mysql_result($array[0], $z, $camposTabla[0]).'" width="100" height="100" border="0">
</a>
<br /><b>'.mysql_result($array[0], $z, $camposTabla[2]).'</b>
<br />'.mysql_result($array[0], $z, $camposTabla[1]).'
<input type="text" name="cantidad[]" size="5" maxlength="3" style="text-align: center;">
<input type="hidden" name="item[]" size="10" style="text-align: center;" readonly value="'.mysql_result($array[0], $z, $camposTabla[3]).'">
</td>';
$n = 1;
}
else
{
//el rel="lightbox" del vínculo es para que funcione el popup de imágenes
$tabla .= '<td align="center">
<a href="'.$img.'" rel="lightbox" title="'.mysql_result($array[0], $z, $camposTabla[2]).'<br>'.mysql_result($array[0], $z, $camposTabla[1]).'">
<img src="'.mysql_result($array[0], $z, $camposTabla[0]).'" width="100" height="100" border="0">
</a>
<br /><b>'.mysql_result($array[0], $z, $camposTabla[2]).'</b>
<br />'.mysql_result($array[0], $z, $camposTabla[1]).'
<input type="text" name="cantidad[]" size="5" maxlength="3" style="text-align: center;">
<input type="hidden" name="item[]" size="10" style="text-align: center;" readonly value="'.mysql_result($array[0], $z, $camposTabla[3]).'">
</td>';
$n++;
}
$z++;
}
$tabla .= '</tbody></table></div>';
//Devolvemos un array con todos los datos necesarios
$arrayRetorno = array($array, $tabla);
return $arrayRetorno;
}
}
?>