Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Hadess_inf en 7 Agosto 2009, 03:10 am



Título: [MiniTuto] Funcion para listar tabla de MySql con Php
Publicado por: Hadess_inf en 7 Agosto 2009, 03:10 am
MiniTuto

Buen día a todos, pues tenía un poco de tiempo libre así que me anime a escribir este pequeño tutorial. Pues se trata de implementar una función que genere una lista según un conjunto de  parámetros enviados por el usuario. La idea es implementar la función y llamarla desde cualquier página, veamos como va esto:

Base de datos: Crear la BD web y dentro la siguiente consulta.
Código
  1. CREATE TABLE `personal` (
  2. `dni` VARCHAR( 8 ) NOT NULL ,
  3. `nombres` VARCHAR( 30 ) NOT NULL ,
  4. `apellidos` VARCHAR( 30 ) NOT NULL ,
  5. `fecnac` DATE NOT NULL ,
  6. PRIMARY KEY ( `dni` )
  7. ) ENGINE = MYISAM ;
  8.  
  9. INSERT INTO `personal` VALUES ('45784785', 'Juan Carlos', 'Guerrero Irigoin', '1985-08-08');
  10. INSERT INTO `personal` VALUES ('45985521', 'Pedro Ricardo', 'Garcia Lopez', '1983-03-16');

Abrimos el dreamweaver y seleccionamos Crear nuevo PHP. Nos dirigimos a la vista de código y empezamos con el trabajo (modificar para que quede de siguiente manera):
Código
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <title>Documento sin t&iacute;tulo</title>
  3. </head>
  4.  
  5. </body>
  6. </html>

A continuación trabajaremos en la zona del body, todas las etiquetas que a continuación venga iran dentro de él. Empezemos:

1) Listando...

Código
  1. <?
  2. function lista($que)
  3. {
  4.  $con = mysql_connect('localhost','root','root');
  5.  mysql_select_db('web',$con);
  6.  $res = mysql_query($que);
  7.  
  8.  echo "<table border='1'>";
  9.  while($row=mysql_fetch_array($res))
  10.  {
  11.    echo "<tr>";
  12.    for($i=0;$i<mysql_num_fields($res);$i++)
  13.    {
  14.      echo "<td>".$row[$i]."</td>";
  15.    }
  16.    echo "</tr>";
  17.  }
  18.  echo "</table>";
  19. }
  20. ?>
  21. Empieza el listado
  22. <?
  23.  $sql = "select dni,nombres,apellidos,fecnac from personal";
  24.  lista($sql);
  25. ?>
  26.  

2) Agregando efectos visuales

Agregamos lo siguiente en el HEAD.
Código
  1. <script>
  2. function efecto(id,tip)
  3. {
  4.  var col = "#3399FF";
  5.  if(tip==2){col="";}
  6.  var cel = document.getElementById(id);
  7.  cel.style.backgroundColor=col;
  8. }
  9. </script>

Código
  1. <?
  2. function lista($que)
  3. {
  4.  $con = mysql_connect('localhost','root','root');
  5.  mysql_select_db('web',$con);
  6.  $res = mysql_query($que);
  7.  
  8.  echo "<table border='1'>";
  9.  while($row=mysql_fetch_array($res))
  10.  {
  11.    echo "<tr id='tr$row[0]' onmouseover=efecto('tr$row[0]',1); onmouseout=efecto('tr$row[0]',2); style='cursor:pointer'>";
  12.    for($i=0;$i<mysql_num_fields($res);$i++)
  13.    {
  14.      echo "<td>".$row[$i]."</td>";
  15.    }
  16.    echo "</tr>";
  17.  }
  18.  echo "</table>";
  19. }
  20. ?>
  21. Empieza el listado
  22. <?
  23.  $sql = "select dni,nombres,apellidos,fecnac from personal";
  24.  lista($sql);
  25. ?>
  26.  

3) Agregando formato

Código
  1. <?
  2. function lista($que,$ali,$wid)
  3. {
  4.  $con = mysql_connect('localhost','root','root');
  5.  mysql_select_db('web',$con);
  6.  $res = mysql_query($que);
  7.  
  8.  echo "<table border='1'>";
  9.  while($row=mysql_fetch_array($res))
  10.  {
  11.    echo "<tr id='tr$row[0]' onmouseover=efecto('tr$row[0]',1); onmouseout=efecto('tr$row[0]',2); style='cursor:pointer'>";
  12.    for($i=0;$i<mysql_num_fields($res);$i++)
  13.    {
  14.      echo "<td width='$wid[$i] px' align='$ali[$i]'>".$row[$i]."</td>";
  15.    }
  16.    echo "</tr>";
  17.  }
  18.  echo "</table>";
  19. }
  20. ?>
  21. Empieza el listado
  22. <?
  23.  $sql = "select dni,nombres,apellidos,fecnac from personal";
  24.  lista($sql);
  25. ?>
  26.  

Código
  1. <?
  2. $sql = "select dni,nombres,apellidos,fecnac from personal"; //consulta
  3. $ali = array("center","left","left","center"); //alineacion
  4. $wid = array(50,350,200,150); //width
  5. lista($sql,$ali,$wid);
  6. ?>

4) Agregando iconos: En el directorio crear una carpeta (img) y pegar 2 imagenes.

Código
  1. <script>
  2. function efecto(id,tip)
  3. {
  4.  var col = "#3399FF";
  5.  if(tip==2){col="";}
  6.  var cel = document.getElementById(id);
  7.  cel.style.backgroundColor=col;
  8. }
  9. function llama(php)
  10. {
  11.  document.location.href=php;
  12. }
  13. </script>

Código
  1. <?
  2. function lista($que,$ali,$wid,$ico)
  3. {
  4.  $con = mysql_connect('localhost','root','root');
  5.  mysql_select_db('web',$con);
  6.  $res = mysql_query($que);
  7.  
  8.  echo "<table border='1'>";
  9.  while($row=mysql_fetch_array($res))
  10.  {
  11.    echo "<tr id='tr$row[0]' onmouseover=efecto('tr$row[0]',1); onmouseout=efecto('tr$row[0]',2); style='cursor:pointer'>";
  12.    foreach($ico as $sel=>$val)
  13.    {
  14.      echo "<td align='center' width='20px' onclick=llama('".$val[2]."?id=".$row[0]."');><img src='img/".$val[0]."' title='".$val[1]."'></td>";
  15.    }
  16.    for($i=0;$i<mysql_num_fields($res);$i++)
  17.    {
  18.      echo "<td width='$wid[$i] px' align='$ali[$i]'>".$row[$i]."</td>";
  19.    }
  20.    echo "</tr>";
  21.  }
  22.  echo "</table>";
  23. }
  24. ?>
  25. Empieza el listado
  26. <?
  27. $sql = "select dni,nombres,apellidos,fecnac from personal"; //consulta
  28. $ali = array("center","left","left","center"); //alineacion
  29. $wid = array(50,350,200,150); //width
  30. $ico = array(
  31.  array("angry.gif","Click para ver detalles","detalles.php"),
  32.  array("cheesy.gif","Click para modificar","modificar.php")
  33. );
  34. lista($sql,$ali,$wid,$ico);
  35. ?>
  36.  

Y es todo, solo faltaria implementar en una clase y llamarla cuando se necesite, espero sea de su utilidad, como siempre si tienen dudas, pues hablen o callen para siempre.

Saludos.


Título: Re: [MiniTuto] Funcion para listar tabla de MySql con Php
Publicado por: Hadess_inf en 7 Agosto 2009, 03:42 am
Implementacion en una clase

Crear archivo JS con el nombre de home.js:

Código
  1. function efecto(id,tip)
  2. {
  3.  var col = "#3399FF"
  4.  if(tip==2){col=""}
  5.  var cel = document.getElementById(id)
  6.  cel.style.backgroundColor=col
  7. }
  8. function llama(php)
  9. {
  10.  document.location.href=php
  11. }

Crear archivo PHP con el nombre de funciones.php:

Código
  1. <?
  2. class Funciones
  3. {
  4.  var $conexion;
  5.  //inicia conexion con el servidor
  6.  function conecta()
  7.  {
  8. if(!isset($this->conexion))
  9. {
  10. $ser = "localhost"; //servidor
  11. $usr = "root"; //usuario
  12. $pwd = "root"; //password
  13. $bbd = "web"; //base de datos
  14. $this->conexion = (mysql_connect($ser,$usr,$pwd)) or die(mysql_error());
  15. mysql_select_db($bbd,$this->conexion) or die(mysql_error());
  16. }
  17.  }
  18.  
  19.  //realiza la consulta recepcionada
  20.  function consulta($consulta)
  21.  {
  22. $resultado = mysql_query($consulta,$this->conexion);
  23. if(!$resultado)
  24. {
  25. echo 'MySql Error: '.mysql_error();
  26. }
  27. return $resultado;
  28.  }
  29.  
  30.  //funcion para listar
  31.  function lista($res,$ali,$wid,$ico)
  32.  {
  33.    echo "<table border='1'>";
  34.    while($row=mysql_fetch_array($res))
  35.    {
  36.      echo "<tr id='tr$row[0]' onmouseover=efecto('tr$row[0]',1); onmouseout=efecto('tr$row[0]',2); style='cursor:pointer'>";
  37.      foreach($ico as $sel=>$val)
  38.      {
  39.        echo "<td align='center' width='20px' onclick=llama('".$val[2]."?id=".$row[0]."');><img src='img/".$val[0]."' title='".$val[1]."'></td>";
  40.      }
  41.      for($i=0;$i<mysql_num_fields($res);$i++)
  42.      {
  43.        echo "<td width='$wid[$i] px' align='$ali[$i]'>".$row[$i]."</td>";
  44.      }
  45.      echo "</tr>";
  46.    }
  47.    echo "</table>";
  48.  }
  49. }
  50. ?>

Crear pagina php con el nombre de index.php:Debe quedar asi:

Agregar en el head
Código
  1. <script src='home.js'></script>

Agregar en el body
Código
  1. Empieza el listado
  2. <?
  3. include("funciones.php");
  4. $fun = new Funciones();
  5. $fun->conecta();
  6.  
  7. $sql = "select dni,nombres,apellidos,fecnac from personal"; //consulta
  8. $ali = array("center","left","left","center"); //alineacion
  9. $wid = array(50,350,200,150); //width
  10. $ico = array(
  11.  array("angry.gif","Click para ver detalles","detalles.php"),
  12.  array("cheesy.gif","Click para modificar","modificar.php")
  13. );
  14. $res = $fun->consulta($sql);
  15. $fun->lista($res,$ali,$wid,$ico);
  16. ?>

Saludos.