Foros del Web » Programando para Internet » PHP »

listbox y tablas html

Estas en el tema de listbox y tablas html en el foro de PHP en Foros del Web. Hola a todos junto con saludar quisiera preguntar como puedo hacer para que de un listbox me cargue una tabla html con datos de la ...
  #1 (permalink)  
Antiguo 02/06/2016, 07:58
Avatar de diegoyanez  
Fecha de Ingreso: junio-2016
Ubicación: Chile, San Fernando
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Exclamación listbox y tablas html

Hola a todos junto con saludar quisiera preguntar como puedo hacer para que de un listbox me cargue una tabla html con datos de la bd mysql cada vez que presiono un id de la listbox estoy super complicado con eso dejo mi codigo y de antemano a quien pueda guiarme o mostrar como se puede hacer les estaré agradecido,

conexion.php

<?php
define ('HOST','127.0.0.1');
define ('USER','xxx'); //modificar segun tu Servidor Mysql
define ('PASS','xxxx'); //modificar segun tu Servidor Mysql
define ('DB','proyecto2');

$link = mysql_connect ( HOST, USER, PASS );
mysql_select_db ( DB, $link );

?>
inventario.php

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>inventarios</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="funcionajax.js"></script>
</head>

<header></header>
<body>
<section>
<center>


<table width="800" border="1" cellspacing="0">
<tr>
<td style="width:100px" class="style2" align="center"><select id="establecimiento">
<!--llenar los select con datos de bd -->
<?php require 'conexion.php';
$cons = mysql_query("SELECT * FROM Establecimiento ORDER BY nombre");
echo '<option selected="selected" disabled="disabled">Establecimiento</option>';
while($cons2 = mysql_fetch_array($cons)){
echo '<option value="'.$cons2['idEstablecimiento'].'">'.$cons2['nombre'].'</option>';
} ?> </select>
</td>

<td style="width:100px" class="style2" align="center"><select id="departamento"></select>

</td>

<br>
<br>

</section>


<!--llenar tabla de articulos-->
<?php include("conexion.php");

$art=mysql_query("SELECT * FROM proyecto2.Articulos ORDER BY descripcion",$link );
$numeroRegistro=mysql_num_rows($art);
if($numeroRegistro==0){
echo "No se han encontrado productos para mostrar";
}
?>
<table width="800" border="1" cellspacing="0">
<tr>
<td><div align="center"><span class="style1"><strong>Listado de Articulos</strong></span></div></td>
</tr>
</table>
<table width="800" border="1" cellspacing="0">
<tr>
<td style="width: 52px" class="style2">Id </td>
<td style="width: 222px" class="style2">Descripcion</td>
<td style="width: 188px" class="style2">Stock</td>
<td style="width: 92px" class="style2">Estado</td>
</tr>
</table>

<table width="800" border="1" cellspacing="0">
<!--genera la cantidad de filas segun la cantidad de datos en articulos -->
<?php
while($fila=mysql_fetch_array($art))
{
?>

<tr>

<td style="width: 52px" class="style2"> <?php echo $fila["idArticulos"];?> </td>
<td style="width: 222px" class="style2"> <?php echo $fila["descripcion"]; ?> </td>
<td style="width: 188px" class="style2"> <?php echo$fila["stock"];?> </td>
<td style="width: 92px" class="style2"> <?php echo $fila["estado"];?> </td>

</tr>
<?php } ?>
</table>
</body>
</html>


agregardepartamento.php

<?php

require 'conexion.php';

$id = $_POST['id'];
$dep = mysql_query("SELECT * FROM Departamento WHERE idEstablecimiento = '$id' ORDER BY nombre");


//mysql_num_rows valida si tiene datos $dep
if(mysql_num_rows($dep)>0){

echo '<option selected="selected" disabled="disabled"> Departamento </option>';



while($dep2 = mysql_fetch_array($dep)){



echo '<option value="'.$dep2['idDepartamento'].'">'.$dep2['nombre'].'</option>';


}


}


?>

funcionajax.js




$(function(){
$('#establecimiento').on('change', function(){

var id = $('#establecimiento').val();
var url = 'agregadepartamento.php';
$.ajax({
type:'POST',
url: url,
data: 'id='+id,
success: function(data){
$('#departamento option').remove();
$('#departamento').append(data);
}
});

return false;


});
});







Base de datos mysql


CREATE DATABASE IF NOT EXISTS `proyecto2`
USE `proyecto2`;



CREATE TABLE `Articulos` (
`idArticulos` int(11) NOT NULL,
`descripcion` varchar(45) DEFAULT NULL,
`stock` varchar(45) DEFAULT NULL,
`estado` varchar(45) DEFAULT NULL,
`idDepartamento` int(11) DEFAULT NULL,
PRIMARY KEY (`idArticulos`),
KEY `fk_Articulos_1_idx` (`idDepartamento`),
CONSTRAINT `fk_Articulos_1` FOREIGN KEY (`idDepartamento`) REFERENCES `Departamento` (`idDepartamento`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



CREATE TABLE `ArticulosEstablecimiento` (
`idestablecimiento` int(11) DEFAULT NULL,
`idArticulo` int(11) DEFAULT NULL,
KEY `estabarti_idx` (`idestablecimiento`),
KEY `fk_ArticulosEstablecimiento_2_idx` (`idArticulo`),
CONSTRAINT `fk_ArticulosEstablecimiento_1` FOREIGN KEY (`idestablecimiento`) REFERENCES `Establecimiento` (`idEstablecimiento`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_ArticulosEstablecimiento_2` FOREIGN KEY (`idArticulo`) REFERENCES `Articulos` (`idArticulos`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `Departamento` (
`idDepartamento` int(11) NOT NULL,
`nombre` varchar(45) DEFAULT NULL,
`encargado` varchar(45) DEFAULT NULL,
`idEstablecimiento` int(11) DEFAULT NULL,
PRIMARY KEY (`idDepartamento`),
KEY `fk_Departamento_1_idx` (`idEstablecimiento`),
CONSTRAINT `fk_Departamento_1` FOREIGN KEY (`idEstablecimiento`) REFERENCES `Establecimiento` (`idEstablecimiento`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `Establecimiento` (
`idEstablecimiento` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(45) NOT NULL DEFAULT '',
`direccion` varchar(45) DEFAULT NULL,
`responsable` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idEstablecimiento`,`nombre`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;


CREATE TABLE `usuarios` (
`idusuario` int(11) NOT NULL AUTO_INCREMENT,
`nombreusuario` varchar(45) DEFAULT NULL,
`login` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
`perfil` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idusuario`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
  #2 (permalink)  
Antiguo 02/06/2016, 12:46
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: listbox y tablas html

Por favor utiliza el HIGHLIGHT para postear código.

Intenta ser un poco más descriptivo, dinos que error te da o donde te atrancas exactamente.
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 06/06/2016, 08:24
Avatar de diegoyanez  
Fecha de Ingreso: junio-2016
Ubicación: Chile, San Fernando
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: listbox y tablas html

Hola gracias de contestar en realidad lo que estoy intentando es hacer un buscador con list pero no logro rescatar el dato que selecciona el cliente para tomarlo como variable en mi consulta, esto a la vez se imprimira en una tabla, te envio lo que tengo del codigo a continuacion


Código PHP:
Ver original
  1. <center>
  2.  
  3.  
  4. <table width="800" border="1" cellspacing="0">
  5. <tr>
  6. <td style="width:100px" class="style2" align="center">
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13. <form name="form1" method="POST" action="inventario.php" id="cdr">
  14.     <select id="establecimiento" name="busquedaEstablecimientos">
  15.     <!--llenar los select con datos de bd -->
  16.     <?php require 'conexion.php';
  17.     $cons = mysql_query("SELECT * FROM Establecimiento ORDER BY nombre");
  18.     echo '<option selected="selected" disabled="disabled">Establecimiento</option>';
  19.     while($cons2 = mysql_fetch_array($cons)){
  20.     echo '<option value="'.$cons2['idEstablecimiento'].'">'.$cons2['nombre'].'</option>';
  21.     } ?> </select>
  22.  
  23. <input type="submit" name="buscar" value="buscar">
  24. </form>
  25.  
  26. </td>
  27.  
  28. <td style="width:100px" class="style2" align="center"><select id="departamento" name="busquedaDepartamentos"></select>
  29.  
  30.  
  31. </td>
  32.    
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.         <br>
  40.         <br>
  41.  
  42. </section>
  43.  
  44.              
  45. <!--llenar tabla de articulos-->
  46. <?php
  47.  
  48.  
  49.  
  50. include("conexion.php");
  51.  
  52. $establecimientos2 = $_POST['busquedaEstablecimientos'];
  53.  
  54. $art=mysql_query("SELECT Articulos.idArticulos, Articulos.descripcion, Articulos.stock, Articulos.estado from Establecimiento inner join Departamento on Departamento.idEstablecimiento = Establecimiento.idEstablecimiento inner join Articulos on Articulos.idDepartamento = Departamento.idDepartamento  where Establecimiento.nombre = '".$establecimientos2."';",$link );
  55.  
  56. $numeroRegistro=mysql_num_rows($art);
  57. if($numeroRegistro==0){
  58.     echo "No se han encontrado productos para mostrar";
  59. }
  60. ?>
  61.    
  62. <!--SELECT * FROM proyecto2.Articulos WHERE  ORDER BY descripcion -->
  63.  
  64.  
  65.  
  66.     <table width="800" border="1" cellspacing="0">
  67. <tr>
  68.     <td><div align="center"><span class="style1"><strong>Listado de Articulos</strong></span></div></td>
  69. </tr>
  70. </table>
  71. <table width="800" border="1" cellspacing="0">
  72. <tr>
  73. <td style="width: 52px" class="style2">Id </td>
  74. <td style="width: 222px" class="style2">Descripcion</td>
  75. <td style="width: 188px" class="style2">Stock</td>
  76. <td style="width: 92px" class="style2">Estado</td>
  77. </tr>
  78. </table>
  79.  
  80. <table width="800" border="1" cellspacing="0">
  81. <!--genera la cantidad de filas segun la cantidad de datos en articulos -->
  82. <?php
  83. while($fila=mysql_fetch_array($art))
  84. {
  85. ?>
  86.  
  87. <tr>
  88.  
  89. <td style="width: 52px" class="style2"> <?php echo $fila["idArticulos"];?> </td>
  90. <td style="width: 222px" class="style2"> <?php echo $fila["descripcion"]; ?> </td>
  91. <td style="width: 188px" class="style2"> <?php echo$fila["stock"];?> </td>
  92. <td style="width: 92px" class="style2"> <?php echo $fila["estado"];?> </td>
  93.  
  94. </tr>
  95. <?php }
  96.  
  97.  
  98.  
  99.  ?>
  100.  
  101.  
  102. </table>
  #4 (permalink)  
Antiguo 06/06/2016, 10:40
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: listbox y tablas html

Creo que tu problema como dices no es que no recibes el dato por POST más bien que no estas filtrando correctamente en el WHERE del SQL.

Fijate estas buscando en la columna Establecimiento.nombre un id que es lo que pasas por POST, no conozco tu tabla pero apostaría que deberías filtrar por Establecimiento.idEstablecimiento
En lugar de esto
Código SQL:
Ver original
  1. WHERE Establecimiento.nombre = '".$establecimientos2."
Creo que debería ser esto
Código SQL:
Ver original
  1. WHERE Establecimiento.idEstablecimiento = '".$establecimientos2."

Igualmente prueba a imprimir con un echo tu consulta y a ejecutarla directamente en mysql para ver que resultados te arroja.

Una cosa más la extensión mysql_* esta obsoleta en php, en su lugar se recomienda utilizar la librería mysqli_* en nuevos proyectos. Migrar no es muy difícil pero cambia la forma en que se pasan los parámetros y se realiza la conexión entre otras cosillas, si estas aprendiendo te recomiendo que lo hagas directamente con mysqli.

Puedes echar un vistazo a la documentación oficial Extensión Mysql Mejorada

Edito.

Analizando tu consulta un poco:
Código SQL:
Ver original
  1. SELECT
  2. Articulos.idArticulos,
  3. Articulos.descripcion,
  4. Articulos.stock,
  5. Articulos.estado
  6. FROM
  7. Establecimiento /* si quieres buscar los artículos de un establecimiento, por que no consultas la tabla artículos */
  8. /* los inner join  puede que sobren */
  9. INNER JOIN Departamento ON Departamento.idEstablecimiento = Establecimiento.idEstablecimiento
  10. INNER JOIN Articulos ON Articulos.idDepartamento = Departamento.idDepartamento  
  11. WHERE
  12. /* el WHERE deberías hacerlo a la clave foránea que relacione los artículos con su establecimiento */
  13. Establecimiento.nombre = '$establecimientos2'

Sin conocer tu base de datos es difícil construir una sentencia que se ajuste pero, creo que te puedes hacer una idea con lo comentado.
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 07/06/2016 a las 07:25

Etiquetas: html, listbox, mysql, registro, select, sql, tabla, tablas, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:53.