Foros del Web » Programando para Internet » PHP »

fomulario con dos select vinculados

Estas en el tema de fomulario con dos select vinculados en el foro de PHP en Foros del Web. Hola a todos los que estais conectados. Tengo un problema con un formulario que tiene dos select vinculados, con esto quiero decir que el primero ...
  #1 (permalink)  
Antiguo 23/04/2004, 17:08
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
fomulario con dos select vinculados

Hola a todos los que estais conectados.
Tengo un problema con un formulario que tiene dos select vinculados, con esto quiero decir que el primero muestra los nif de clientes en una tabla en mysql y la segunda debe sacar los contactos del cliente elegido. He estado revisando los temas publicado y "novata" parece tener el mismo problema lo cual me ha llevado a investigar varios ejemplos.
El ejemplo realizado con la tecnico de "remote scripting" da un error en contextObj.busy, el cual no entiendo porque se produce.

Por mi parte he realizado un php que prescinde de js pero no consigo que me carge el segundo select. Muestro el fuentes a ver que algun@ podeis aclararme que me falla:

<?php $hostname_gon = "localhost";
$database_gon = "sli_spic";
$username_gon = "root";
$password_gon = "";
$gon = mysql_pconnect($hostname_gon, $username_gon, $password_gon) or trigger_error(mysql_error(),E_USER_ERROR);
?>
<?php
mysql_select_db($database_gon, $gon);
$query_cliente = "SELECT cif, razon_social, anagrama FROM cliente ORDER BY anagrama ASC";
$cliente = mysql_query($query_cliente, $gon) or die(mysql_error());
$row_cliente = mysql_fetch_assoc($cliente);
$totalRows_cliente = mysql_num_rows($cliente);

$colname_concli = "1";
if (isset($_POST['select1'])) {
$colname_concli = (get_magic_quotes_gpc()) ? $_POST['select1'] : addslashes($_POST['select1']);
}

mysql_select_db($database_gon, $gon);
$query_concli = sprintf("SELECT nombre, apellidos FROM contacto_cli WHERE cif = '%s' ORDER BY apellidos ASC", $colname_concli);
$concli = mysql_query($query_concli, $gon) or die(mysql_error());
$row_concli = mysql_fetch_assoc($concli);
$totalRows_concli = mysql_num_rows($concli);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>
<iframe id="iframeOculto" name="iframeOculto" style="width:0px; height:0px; border: 0px"></iframe>
<body>
<form action="" method="post">
<?php if ($colname_concli == 1) {?>

<select name="select1" id="select1" onchange=""document.frames['iframeOculto'].location='hola'.php">
<option value="">--seleccionar cliente--</option>
<?php
do {
?>
<option value="<?php echo $row_cliente['cif']?>"><?php echo $row_cliente['anagrama']?></option>
<?php
} while ($row_cliente = mysql_fetch_assoc($cliente));
$rows = mysql_num_rows($cliente);
if($rows > 0) {
mysql_data_seek($cliente, 0);
$row_cliente = mysql_fetch_assoc($cliente);
}
?>
</select>
<? } else { ?>
<p> <? echo $colname_concli ?></p>
<? } ?>

<select name="select2" id="select2">
<?php
do {
?>
<option value="<?php echo $row_concli['nombre']?>"><?php echo $row_concli['nombre']?></option>
<?php
} while ($row_concli = mysql_fetch_assoc($concli));
$rows = mysql_num_rows($concli);
if($rows > 0) {
mysql_data_seek($concli, 0);
$row_concli = mysql_fetch_assoc($concli);
}
?>
</select>
</form>
</body>
</html>
<?php
mysql_free_result($cliente);

mysql_free_result($concli);
?>

Un saludo a todos.
  #2 (permalink)  
Antiguo 26/04/2004, 06:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 44
Antigüedad: 20 años, 6 meses
Puntos: 3
Hola sali he tenido el mismo problema y me decidi a pasar a php el ejemplo que hay por ahí en asp y javascript. Funciona a la perfeccion. Aqui lo pongo:

<?php
include('recetas/config.php');
?>
<html>
<head>
<title>Listas dependientes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<!--
Fecha: 26/04/2004
Modificado: EduLopez [email protected]
Modificacion: Adaptacion a php del buen script en asp de Carlos de la Orden Dijs el 17 de Diciembre de 2000
--->
<form action="borra_medico.php" method="post" name="Listas">
<b>Centro</b>
<select name="Centros" size="1"
OnChange="ComponerLista (document.forms.Listas.Centros[selectedIndex].value);">
<?php
$consulta="SELECT CodCen,Centro FROM centros ORDER BY Centro";
$resultado=mysql_query($consulta,$conexion);
while($campos=mysql_fetch_array($resultado)){?>
<option value="<?php echo $campos[0];?>"><?php echo $campos[1];?></option>
<?php
}
?>
</select>
<b>Medico</b>
<select name="Medicos" size="1">
</select>
<b><br>
<input type="submit">
</form>
<script language="JavaScript">
<!--
function Tupla ( campo1, campo2 )
{
this.campo1 = campo1;
this.campo2 = campo2;
}
<?php
// Creamos el array de Medicos.
$consulta2="SELECT Centro,Cias,Apellido1,Apellido2,Nombre FROM facultativos";
$resultado2=mysql_query($consulta2,$conexion);
$cuenta=0;
$cen="basura";
while($campos=mysql_fetch_array($resultado2)){
if ($cen!=$campos[0]){
//cambio de centro, empiezo a contar en 0
$cuenta=0;
$cen=$campos[0];
//además tengo que crear un nuevo array para la categoría
?>
var opciones<?php echo $cen;?> = new Array();
<?php
}
?>
opciones<?php echo $cen?>[<?php echo $cuenta;?>]=new Tupla("<?php echo $campos[2]." ".$campos[3]." ".$campos[4];?>","<?php echo $campos[1];?>");
<?php
$cuenta++;
}
// Limpiamos objetos
mysql_free_result($resultado);
mysql_free_result($resultado2);
mysql_close($conexion);
?>

var contador;
function ComponerLista ( array ) {
// Compone la lista dependiente a partir
// del valor de la opcion escogida en la lista padre
BorrarLista();
array = eval("opciones" + array);
for (contador=0; contador<array.length; contador++)
{
// añade elementos nuestro combobox
var optionObj = new Option( array[contador].campo1, array[contador].campo2 );
Listas.Medicos.options[contador] = optionObj;
} // for
} // ComponerLista
function BorrarLista() {
Listas.Medicos.length=0;
}
//Inicializamos
ComponerLista (1);
-->
</script>
</form>
</body>
</html>
  #3 (permalink)  
Antiguo 26/04/2004, 10:13
 
Fecha de Ingreso: marzo-2003
Mensajes: 19
Antigüedad: 21 años
Puntos: 0
Gracias edulopez, aún no he probado tu proceso. De todas formas relice unos cambios que me han ido bien, cuando realice las pruebas con tu proceso implementaré el que me quede mejor.
Repito, muchas gracias.
  #4 (permalink)  
Antiguo 26/04/2004, 10:17
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 20 años
Puntos: 0
Muchas gracias edulopez, creo que incluiso tu ejemplo ha valido a novata. Yo también he realizado unos cambios al proceso que escribi. Aquí los teneis:

<?php $hostname_gon = "localhost";
$database_gon = "sli_paco";
$username_gon = "root";
$password_gon = "";
$gon = mysql_pconnect($hostname_gon, $username_gon, $password_gon) or trigger_error(mysql_error(),E_USER_ERROR);
?>
<?php

$colname_concli = $HTTP_GET_VARS["select1"];
if ($colname_concli == "") {
mysql_select_db($database_gon, $gon);
$query_cliente = "SELECT cif, razon_social, anagrama FROM cliente ORDER BY anagrama ASC";
$cliente = mysql_query($query_cliente, $gon) or die(mysql_error());
$row_cliente = mysql_fetch_assoc($cliente);
$totalRows_cliente = mysql_num_rows($cliente);
}else{
mysql_select_db($database_gon, $gon);
$query_concli = sprintf("SELECT nombre, apellidos FROM contacto_cli WHERE cif = '%s' ORDER BY apellidos ASC", $colname_concli);
$concli = mysql_query($query_concli, $gon) or die(mysql_error());
$row_concli = mysql_fetch_assoc($concli);
$totalRows_concli = mysql_num_rows($concli);
}
?>

<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>
<iframe id="iframeOculto" name="iframeOculto" style="width:0px; height:0px; border: 0px"></iframe>
<body>
<form name="form1" action="hola.php?" method="get">
<?php if ($colname_concli == "") {?>

<select name="select1" id="select1" onchange="this.form.submit()">
<option value="">--seleccionar cliente--</option>
<?php
do {
?>
<option value="<?php echo $row_cliente['cif']?>"><?php echo $row_cliente['anagrama']?></option>
<?php
} while ($row_cliente = mysql_fetch_assoc($cliente));
$rows = mysql_num_rows($cliente);
if($rows > 0) {
mysql_data_seek($cliente, 0);
$row_cliente = mysql_fetch_assoc($cliente);
}
?>
</select>
<? } else { ?>
<p> <? echo $colname_concli ?></p>
<? } ?>

<select name="select2" id="select2">
<?php
do {
?>
<option value="<?php echo $row_concli['nombre']?>"><?php echo $row_concli['nombre']?></option>
<?php
} while ($row_concli = mysql_fetch_assoc($concli));
$rows = mysql_num_rows($concli);
if($rows > 0) {
mysql_data_seek($concli, 0);
$row_concli = mysql_fetch_assoc($concli);
}
?>
</select>
</form>
</body>
</html>
<?php
if ($colname_concli == "") {
mysql_free_result($cliente);
}else{
mysql_free_result($concli);
}
?>
  #5 (permalink)  
Antiguo 12/05/2004, 16:46
 
Fecha de Ingreso: mayo-2004
Mensajes: 1
Antigüedad: 19 años, 11 meses
Puntos: 0
Pregunta

Te importaria comentarme el codigo ese... no lo entiendo muy bien
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 15:07.