Ver Mensaje Individual
  #13 (permalink)  
Antiguo 15/11/2003, 13:23
kmizael
Usuario no validado
 
Fecha de Ingreso: abril-2002
Ubicación: mx
Mensajes: 65
Antigüedad: 22 años, 7 meses
Puntos: 0
lo q yo hice

yo la realize, para 3 combos. Cada q sucede un evento onChange mando a llamar a una funcion para recargar y cargar los nuevos valores, let's see....

Los datos son extraidos de una tabla categorias q contiene las categorias y subcategorias:
# Estructura de tabla para tabla `categoria`
CREATE TABLE categoria (
id int(4) unsigned NOT NULL auto_increment,
nombre varchar(50) default NULL,
nivel int(3) unsigned default '0',
relacion int(3) unsigned default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;


el id, pues es el id de la categoria; nombre, el nombre de la categoria; nivel, a q nivel pertenece, o sea si carga dentro del primer select o el segundo o el ultimo; relacion almacena el id de la categoria con la q esta relacionado esta subcategoria (para el caso de las categorias de nivel 1 no tienen relacion, obviamente), supongo esta claro; bueno hasta ahi la BD.
Procedan a cargar la BD con unos cuantos datos, ....

VAMOS AL SCRIPT
Código PHP:
<?
include("funciones.php");
$link=conecBD();
echo 
'
<table width="90%" border="0" cellspacing="0" cellpadding="0">
  <form name="mx" method="post">
  <tr align="center"><td width="33%"> 
  <!------ Primer Select  (s1) ---->
  <input name="is1" type="hidden" value="'
,$is1,'">
  <select name="s1" id="select1" class="prod" onChange="recarga(this.form);">'
;
$consulta=mysql_query("SELECT nombre, id FROM categoria WHERE nivel=1",$link);
if (
$row=mysql_fetch_array($consulta))
{ echo 
'<option value="0" selected>Elija...</option>';
  do   echo 
'<option value="',$row["id"],'">',$row["nombre"],'</option>';
  while (
$row=mysql_fetch_array($consulta));
  
mysql_free_result($consulta);
}
else echo 
'<option value="0" selected>No hay categorias def.</option>';
echo 
'
              </select>
            </td>
            <td width="34%"> 
              <!------ Segundo Select (s2)---->
              <input name="is2" type="hidden" value="'
,$is2,'">
              <select name="s2" class="prod" onChange="recarga(this.form);">
'
;
if (
$is1>0)
$consulta=mysql_query("SELECT nombre, id FROM categoria WHERE relacion=$s1",$link);
  
$nf=mysql_num_rows($consulta);
  if (
$nf>0)
  { echo 
'<option value="0" selected>Elija...</option>';
    while (
$row=mysql_fetch_array($consulta))
      echo 
"<option value='",$row["id"],"'>
      "
,$row["nombre"],"</option>";
  }
else echo 
'<option value="0" selected>No hay categorias</option>';
  
mysql_free_result($consulta);
}
else echo 
'<option value="0" selected>&lt;ninguno&gt;</option>';
echo 
'
              </select></td>
            <td width="33%"> 

              <!------ Tercer Select (s3)---->
<input name="is3" type="hidden" value="'
,$is3,'">
              <select name="s3" class="prod" id="select3" onChange="recarga(this.form);">
'
;
if (
$is2>0)
$consulta=mysql_query("SELECT nombre, id FROM categoria WHERE relacion=$s2",$link);
  
$nf=mysql_num_rows($consulta);
  if (
$nf>0)
  { echo 
'<option value="0" selected>Elija...</option>';
    while (
$row=mysql_fetch_array($consulta))
      echo 
"<option value='",$row["id"],"'>
      "
,$row["nombre"],"</option>";
  }
  else echo 
'<option value="0" selected>No hay categorias</option>';
  
mysql_free_result($consulta);
}
else echo 
'<option value="0" selected>&lt;ninguno&gt;</option>';
echo 
'
              </select></td>
          </tr>
          </form>
        </table>
'
;
?>
Despues hacemos:
<script language="JavaScript">
selecciona (<? echo $is1; ?>, <? echo $is2; ?>, <? echo $is3; ?>, document.mx.s1, document.mx.s2, document.mx.s3);
</script>

La funcion conecBD se vincula a la base que se encuentra dentro de la "libreria" funciones.php .....

ah si! falta la funciones: recarga() y selecciona()
Aqui estan .....
<script language="JavaScript">
function recarga(form)
{ form.is1.value=form.s1.selectedIndex;
form.is2.value=form.s2.selectedIndex;
form.is3.value=form.s3.selectedIndex;
if (form.s1.selectedIndex != <? echo $is1; ?>)
{ form.is2.value=0;
form.is3.value=0;}
if (form.s2.selectedIndex != <? echo $is2; ?>)
{form.is3.value=0;}
form.action="prueba_foro.php";
form.submit();
}//function recarga(...
function selecciona(opt1, opt2, opt3, combo1, combo2, combo3)
{
combo1.options[opt1].selected= "true";
combo2.options[opt2].selected= "true";
combo3.options[opt3].selected= "true";
}//fin de la funcion selecciona
</script>

ok espero le entiendas al codigo.... cualquier cosa sobre el, puedo aclarartela. ok adios.