Foros del Web » Programando para Internet » PHP »

cambiar un select llenado por bd desde php

Estas en el tema de cambiar un select llenado por bd desde php en el foro de PHP en Foros del Web. hola comunidad... estoy empezando a trabajar con php estoy llenando un <select html, desde una base de datos por medio de un while y que ...
  #1 (permalink)  
Antiguo 09/02/2011, 11:27
 
Fecha de Ingreso: abril-2009
Mensajes: 36
Antigüedad: 15 años
Puntos: 0
Mensaje cambiar un select llenado por bd desde php

hola comunidad... estoy empezando a trabajar con php

estoy llenando un <select html, desde una base de datos por medio de un while y que en la consulta de un primer <select html> me seleccione las personas que tiene determinada identificacion, pero solo cambia el segundo <select html> cuando se hace una accion al form. DESEARIA HACER QUE CUANDO CAMBIE EL PRIMER COMBOBOX O SELECT HTML SE ME CAMBIE EL SEGUNDO COMBOBOX O SELECT HTML CON AYUDA DE PHP Y UNA CONSULTA sql DEPENDIENDO LO QUE ARROJE EL VALOR DEL PRIMER SELECT.

mejor coloco el codigo mas o menos parecido al que tengo
<FORM action="#public" name=laForma>
<DIV align=left>
<P>
<SELECT size=1 name=chooseEmp onchange=$estrateg=<?php $_REQUEST[chooseEmp]?>;>
<OPTION value ="323"selected>jorge</OPTION>
<OPTION value ="546">edison</OPTION>
<OPTION value ="657">marcos</OPTION>
</SELECT>

//Si selecciona edison o el valor 546 me seleccione en la tabla ventas solo los de edison.
<SELECT name=ventas>
<?php
include "conectarbd.php";
$intEmp = (int)chooseEmp;
$strSql ="SELECT idEmp, NombreEmp FROM ventas WHERE ventas.IdEmp = '$intEmp'";
$resultado = mysql_query($strSql);

if ($resultado){
while ($fila = mysql_fetch_array($resultado)) {
$valor1=$fila["idEmp"];
$valor2=$fila["NombreEmp"];
echo $valor1;
echo '<option value= "'.$valor1.'">'.$valor2.'</option>';
}
}
mysql_close($connec);
?>
</SELECT>

</P>
</DIV>
</FORM>
  #2 (permalink)  
Antiguo 09/02/2011, 11:33
 
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

Hola greg_dorian al igual que tu tambien tuve problemas hace unas semanas con lo mismo, te paso la pagina de donde baje el ejemplo que me ayudo a resolver mi problema, con este ejemplo logro cargar el segundo y tercer combo dependiedo la seleccion del primer select.

Espero te ayude la info, cuentanos como te fue.

Link [URL="http://www.formatoweb.com.ar/ajax/select_dependientes.php"]pagina[/URL].
De ahí mnismo puedes bajar el codigo para que lo manipules desde tu computadora
Saludos
  #3 (permalink)  
Antiguo 09/02/2011, 17:16
 
Fecha de Ingreso: abril-2009
Mensajes: 36
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: cambiar un select llenado por bd desde php

Cita:
Iniciado por hiramhzr Ver Mensaje
Hola greg_dorian al igual que tu tambien tuve problemas hace unas semanas con lo mismo, te paso la pagina de donde baje el ejemplo que me ayudo a resolver mi problema, con este ejemplo logro cargar el segundo y tercer combo dependiedo la seleccion del primer select.

Espero te ayude la info, cuentanos como te fue.

Link [URL="http://www.formatoweb.com.ar/ajax/select_dependientes.php"]pagina[/URL].
De ahí mnismo puedes bajar el codigo para que lo manipules desde tu computadora
Saludos
Gracias hiramhzr... es practicamente lo que necesito.. pero... tengo que implementar javascripts??? estoy en un nivel basico!! y lo veo como muy complejo tienes algun otro link como Mas sencillo??

Y de nuevo muchas gracias!!!

  #4 (permalink)  
Antiguo 09/02/2011, 19:29
 
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

Hola greg_dorian hiciste el ejemplo que viene en la pagina que te proporcione??? Ahi viene para bajarlo y el mismo rar que se baja viene la base de datos que necesitas para que funcione.

Sobre lo de JS la verdad es que no necesitas modificar nada de ese archivo funciona para N combos, tengo el ejemplo ese que esta en la pagina el mio lo adapte para el sistema que estoy desarrollando.

Cualquier duda pega aqui tu codigo o como lo estas intentando aunque no soy experto en php tratare de ayudarte.

Saludos.
  #5 (permalink)  
Antiguo 11/02/2011, 09:32
 
Fecha de Ingreso: abril-2009
Mensajes: 36
Antigüedad: 15 años
Puntos: 0
Exclamación Respuesta: cambiar un select llenado por bd desde php

Cita:
Iniciado por hiramhzr Ver Mensaje
Hola greg_dorian hiciste el ejemplo que viene en la pagina que te proporcione??? Ahi viene para bajarlo y el mismo rar que se baja viene la base de datos que necesitas para que funcione.

Sobre lo de JS la verdad es que no necesitas modificar nada de ese archivo funciona para N combos, tengo el ejemplo ese que esta en la pagina el mio lo adapte para el sistema que estoy desarrollando.

Cualquier duda pega aqui tu codigo o como lo estas intentando aunque no soy experto en php tratare de ayudarte.

Saludos.
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
  #6 (permalink)  
Antiguo 11/02/2011, 10:02
 
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.
  #7 (permalink)  
Antiguo 18/02/2011, 16:49
 
Fecha de Ingreso: abril-2009
Mensajes: 36
Antigüedad: 15 años
Puntos: 0
Respuesta: cambiar un select llenado por bd desde php

hizram holaa gracias casi que no fue todo un exito al fin pude hacerlo tenia mal unas consultas pero no fue sino eso... muchas GRACIAS










Cita:
Iniciado por hiramhzr Ver Mensaje
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.

Etiquetas: bd, select
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 12:19.