Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/02/2011, 10:02
hiramhzr
 
Fecha de Ingreso: enero-2011
Ubicación: En un Cuarto Cubierto de Pasto Verde
Mensajes: 95
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: cambiar un select llenado por bd desde php

Cita:
Iniciado por greg_dorian Ver Mensaje
Hola Hirazir CLARO que lo descomprimi y cambie la conexion a la BD adecue mis consultas... pero los 2 combos los necesito que salgan en una misma pagina, sin tener que usar el JS solo html y php pero aun asi no me da!!

coloco el codigo que modifique:
Código HTML:
<?php
function generaPaises()
{
	include 'conexion.php';
	conectar();
	$consulta=mysql_query("SELECT id, empleado FROM empleado");
	desconectar();

	// Voy imprimiendo el primer select compuesto por los paises
	echo "<select name='paises' id='paises' onChange='cargaContenido(this.id)'>";
	echo "<option value='0'>Elige</option>";
	while($registro=mysql_fetch_row($consulta))
	{
		echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
	}
	echo "</select>";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<?php
// Array que vincula los IDs de los selects declarados en el HTML con el nombre de la tabla donde se encuentra su contenido
$listadoSelects=array(
"paises"=>"lista_paises",
"estados"=>"lista_estados"
);

function validaSelect($selectDestino)
{
	// Se valida que el select enviado via GET exista
	global $listadoSelects;
	if(isset($listadoSelects[$selectDestino])) return true;
	else return false;
}

function validaOpcion($opcionSeleccionada)
{
	// Se valida que la opcion seleccionada por el usuario en el select tenga un valor numerico
	if(is_numeric($opcionSeleccionada)) return true;
	else return false;
}

$selectDestino=$_GET["select"]; $opcionSeleccionada=$_GET["opcion"];

if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{
	$tabla=$listadoSelects[$selectDestino];
	include 'conexion.php';
	conectar();
	$consulta=mysql_query("SELECT id, Prodventas FROM $tabla WHERE idEmpl='$opcionSeleccionada'") or die(mysql_error());
	desconectar();
	
	// Comienzo a imprimir el select
	echo "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
	echo "<option value='0'>Elige</option>";
	while($registro=mysql_fetch_row($consulta))
	{
		// Convierto los caracteres conflictivos a sus entidades HTML correspondientes para su correcta visualizacion
		$registro[1]=htmlentities($registro[1]);
		// Imprimo las opciones del select
		echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
	}			
	echo "</select>";
}
?>
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title> Utilizando el codigo para </title>
<link rel="stylesheet" type="text/css" href="select_dependientes.css">
<script type="text/javascript" src="select_dependientes.js"></script>
</head>

<body>

			<div id="demo" style="width:600px;">
				<div id="demoDer">
					<select disabled="disabled" name="productos" id="estados">
						<option value="0">Selecciona ventas producto empleado...</option>
					</select>
				</div>
				<div id="demoIzq"><?php generaPaises(); ?></div>
			</div>
			
</body>
</html> 
todo este codigo lo hice en un archivo llamado detalle.php

No se que estoy haciendo algo mal??

Gracias hizrim ... bueno tu nombre parece Hindu me sale mas facil escribirlo Hizrim
Hola greg_dorian mira estuve revisando como lo modifique yo, y yo use el codigo de tres select dependientes te dire que fue lo que modifique para que funcionara espero explicarme bien y espero te ayude a resolver tu problema:

index.php

Código PHP:
Ver original
  1. <label>
  2.     <b>Area:</b><?php generaSelect(); ?>   
  3.    </label>
  4.    <br><br>  
  5.     <b>Pais:</b>
  6.     <label>
  7.     <select disabled="disabled" name="select2" id="select2">
  8.     <option value="0">Selecciona opci&oacute;n...</option>
  9.    </select>
  10.  </label>  
  11.  <br><br>      
  12.  <b>Municipio:</b>
  13.  <label>
  14.  <select disabled="disabled" name="select3" id="select3">
  15.  <option value="0">Selecciona opci&oacute;n...</option>
  16.  </select>
  17.  </label>
  18. <b>Comunidad:</b>
  19.  <label>
  20.  <select disabled="disabled" name="select4" id="select4">
  21.  <option value="0">Selecciona opci&oacute;n...</option>
  22.  </select>
  23.  </label>

como podras observar solo copie y pegue un mismo select solamente cambiando el id de cada uno ok ahora en el primer select se llama al metodo generaSelect(); que si te fijas vienen en el mismo archivo en la parte de arriba, cuando seleccionas un campo de ese select se activa el JS, en el cual no tienes que cambiar ni entender nada si no quieres basta con cambiar estas lineas las mias quedaron asi:
Código Javascript:
Ver original
  1. // Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
  2.  
  3. var listadoSelects=new Array();
  4.  
  5. listadoSelects[0]="select1";
  6.  
  7. listadoSelects[1]="select2";
  8.  
  9. listadoSelects[2]="select3";
  10.  
  11. listadoSelects[3]="select4";

En esta parte agregas los N select que vas a tener anidados los mios son 4. Cada uno dependiente del anterior.

y ahora lo que tienes que cambiar en el archivo php el que procesa tus consultas es el siguiente:
Código PHP:
Ver original
  1. // Array que vincula los IDs de los selects declarados en el HTML con el nombre de la tabla donde se encuentra su contenido:
  2.  
  3. $listadoSelects=array(
  4.  
  5. "select1"=>"Pais",
  6.  
  7. "select2"=>"Estado",
  8.  
  9. "select3"=>"Municipio",
  10.  
  11. "select4"=>"Comunidad"

como puedes observar basta con poner el nombre del select seguido de la tabla a la cual invocara, en ese mismo archivo mas abajo debes de cambiar la consulta que necesites a tu conveniencia.

Como nota extra, mis tablas solo contienen id, nombre ya que asi me funciono como ves no tienes que hacer grandes cambios en los archivos y si no quieres de momento no debes de entender como funciona todo si es que no te gusta JS, yo lo logre de esa forma y la verdad me funciona a la perfeccion, espero haberte ayudado.

PD: XD mi nombre no se de donde venga jaja pero no soy hindu (creo) XD soy de Mexico XD Saludos desde aca.