Programación Web y Scripting > PHP

 Clase Query Conexión

(1/2) > >>

RadicalEd:
Les dejo esta clase que hicé para imprimir datos en tablas sin tener que estar haciendo redundancia.

--- Código: PHP ---<?php//Desarrollada por RadicalEd class SQL{//Constructorfunction SQL($host='localhost', $db='ancheteria', $user='usdist', $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());} //Esta función mostrará datos de una consulta simplepublic function tabla($query, $camposTabla){  $tabla = '<table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';   //Hay dos formas de recorrer el array, por for y por foreach  //acá mostraré ambas  for ($x=0; $x<count($camposTabla); $x++)  {    $tabla .= '<td align="center"><strong>'.$camposTabla[$x].'</strong></td>';  }   $tabla .= '</tr>';  $result = mysql_query($query) or die(mysql_error());  while($row=mysql_fetch_array($result))  {    $tabla .= '<tr>';     //Recorriendo el array con foreach    foreach($camposTabla as $campo)    {      $tabla .= '<td>'.$row[$campo].'</td>';    }    $tabla .= '</tr>';  }   $tabla .= '</tbody></table>';   return $tabla;} //Este metodo mostrará datos de una consulta de varias tablaspublic function tablaCompuesta($query, $camposTabla, $camposDatos){  $tabla = '<table border="1" cellpadding="1" cellspacing="1"><tbody><tr>';  for ($x=0; $x<count($camposTabla); $x++)  {    $tabla .= '<td align="center"><strong>'.$camposTabla[$x].'</strong></td>';  }   $tabla .= '</tr>';  $result = mysql_query($query) or die(mysql_error());  $numrows = mysql_num_rows($result);  $n = 0;  while($n<$numrows)  {    $tabla .= '<tr>';    foreach($camposDatos as $campo)    {      $tabla .= '<td>'.mysql_result($result,$n,$campo).'</td>';    }    $tabla .= '</tr>';     $n++;  }   $tabla .= '</tbody></table>';   return $tabla; }} //EJEMPLOS DE UTILIZACION //Arrays de los datos a mostrar$arrayTabla = array('TIPO', 'NUMERO', 'RUTERO');$arrayDatos = array('TIPO', 'NRO', 'RUTE'); //Consulta compuesta de varias tablas$query = 'SELECT con.tipo_dcto AS '.$arrayDatos[0].', con.nro_dcto AS '.$arrayDatos[1].', con.fk_rutero AS '.$arrayDatos[2].'  FROM tbsdpel_rutero AS rut, tbsdpel_content AS con  WHERE con.nro_dcto LIKE "19329" AND con.tipo_dcto LIKE "RO" AND con.fk_rutero=rut.id_rutero';$datos = new SQL($host='localhost', $db='paginafiles', $user='usdist', $password='clio1214');$tabla = $datos->tablaCompuesta($query, $arrayTabla, $arrayDatos);echo $tabla; $nuevo = array('id', 'codigo', 'nombre');$datos = new SQL();$tabla = $datos->tabla('SELECT * FROM tbancheteria_proveedores', $nuevo);echo $tabla; ?> 

grandzam:
Hola, he visto tu clase, y pues solo dos cosas:

1.- No mezcles PHP con HTML  :blink: . Busca sobre Smarty :)
2.- La clase esta mezclada con cosas de todo. Por ejemplo, una clase para crear conexiones (podrías usar Singleton), otra clase que se encargue del HTML, otra de construir consultas... etcétera. De esa manera haces tus clases más reutilizables.

Espero te agraden mis recomendaciones.  :beer:

RadicalEd:
He visto smarty, no es por nada pero me parece una #$%&/(" no me ha gustado trabajar con él en CRM de Sugar, del resto pues me tocaría ver como es, además es una clase sencilla para proyectos sencillos nada más.

Gracias por tú apore.

shakka:
Bien si revuelve tu problema Edo, gracias por el aporte.

Lo de evitar mezclar PHP con HTML, no lo veo tan serio. probablemente se referia a mezclar una capa de presentacion con datos del modelo, es decir aceso de base de datos con HTML.

Porque no estoy de acuerdo con respecto a evitar mezclar PHP con HTML? Porque para mi forma de trabajar utilizando un patron MVC donde las plantillas que uso no requieren un framework de MAS para hacer ese trabajo, si desde PHP lo puedo hacer sin agregar mas overhead a la aplicacion, quedando aun lejible.

Los shortags se los activo al vuelo


--- Código: Text ---<? if ($prd != NULL) { ?><strong>Producción</strong><div>    <table>        <thead>            <tr>                <th>Cantidad</th>                <th>Descripción</th>                <th>Precio total ivi**</th>                <th>Moneda</th>            </tr>        </thead>        <tbody>        <?foreach ($prd as $i):?>            <tr>                <td><?=number_format($i['amount'], 2)?></td>                <td><?=$i['show_oq']?></td>                <td><?=number_format($i['price'], 2)?></td>                <td><?=$i['money']?></td>            </tr>        </tbody>    </table></div><? } ?> 

shadow_rev:
Bueno, PHP embebido en HTML es una mala práctica cuando le pones la lógica del negocio, pero es perfecto cuando utilizas el MVC (Modelo Vista - Controlador), sobre todo cuando trabajas con diseñadores gráficos que no tienen idea de PHP, tal y como dice shakka. De hecho, symfony lo propone así.

Con respecto a la clase que publicó Edo, se puede mejorar si lo haces con PDO, para que funcione con cualquier motor de base de datos, y te ahorras la fachada. Apenas tenga tiempo, pongo el script de Edo funcionando con PDO, si me das permiso, claro :P

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa