Buena muchachos.
Bueno, primero les doy un tip para solucionar algo que muchos se preguntan y la verdad que muchas veces no está bien explicado y luego la pregunta que no se como resolver.
Las select dependientes o listas enlazadas con una base de datos de PHP siempre fueron utiles y no siempre está claro como hacerlas, les paso el código:
Código PHP:
<?
echo "<script>\n";
echo "var peliculas = new Array;\n";
echo "var peliculas_val = new Array;\n";
$query = "SELECT id FROM Categorias ORDER BY nombre ASC" ;
//$getRubros = hyt_query($query);
//$cantRubros = hyt_numrows($getRubros);
$rsGeneros = $Conn->Retrieve($query);
$cantGeneros = $rsGeneros->NumRows();
echo "peliculas[0] = ['Peliculas'];\n";
echo "peliculas_val[0] = [''];\n";
$i = 1;
while (!$rsGeneros->EOF()){
// for($i=1; $i<$cantGeneros; $i++){
$query = "SELECT * FROM Peliculas WHERE categoria1 = ".$rsGeneros->Fields("id")." OR categoria2 = ".$rsGeneros->Fields("id")." OR categoria3 = ".$rsGeneros->Fields("id");
// $query = "SELECT * FROM Peliculas WHERE categoria1 = ".mysql_result($rsRubros, ($i-1), 0);
// $query = "SELECT * FROM subrubros WHERE id_rubro = ".mysql_result($getRubros, ($i-1), 0) . " ORDER BY nombre";
// $getSubrubros = hyt_query($query);
$rsPeliculas = $Conn->Retrieve($query);
$txt = "";
$txt_val = "";
while(!$rsPeliculas->EOF()){
$txt = $txt. ",'". $rsPeliculas->Fields("nombre")."'";
$txt_val = $txt_val . ",'". $rsPeliculas->Fields("id")."'";
$rsPeliculas->MoveNext();
}
echo "peliculas[$i] = ['Seleccione la Película'".$txt."];\n";
echo "peliculas_val[$i] = [''".$txt_val."];\n";
$i++;
$rsGeneros->MoveNext();
}
echo "</script>\n";
Basicamente lo que hago es imprimir los datos, pero con formato de JAVASCRIPT!
Y luego, claro, la funcion en javascript
:
Código PHP:
<script>
function ponCombo(formu){
var elConti = formu.genero1.selectedIndex;
for (j=1; j<5; j++){
peliculaString = "formu.pel" + j + "gen1";
pelicula = eval(peliculaString);
pelicula.length = peliculas[elConti].length;
//formu.pel1gen1.length = peliculas[elConti].length;
for (i=0; i<peliculas[elConti].length; i++){
pelicula.options[i].text = peliculas[elConti][i];
pelicula.options[i].value = peliculas_val[elConti][i];
}
}
}
y luego en los select:
Código PHP:
<select name="genero1" class="texto" id="genero1" onChange="ponCombo(this.form)" onBlur="ponCombo(this.form)" on>
<option value="">Seleccione el Genero</option>
<?
while(!$rs->EOF()){
if ( strlen($rs->Fields("nombre")) >50 ):
$nom = substr($rs->Fields("nombre"),0,50)." ...";
else:
$nom = $rs->Fields("nombre");
endif;
?>
<option value="<?=$rs->Fields("id")?>" <? if($generoUno==$rs->Fields("id")) { $selected = "yes"; echo 'selected'; } ?>>
<?=$nom?>
</option>
<?
$rs->MoveNext();
}
?>
</select>
<select name="pel<?=$i?>gen1" class="selectGeneros">
<option value="">Seleccione una Película</option>
</select>
Y listo!!!
Ahora, el problema es, esto (en mi caso) se guarda en una base de datos.
Lo que quiero hacer es que cada vez que entro en esta página se fije en la base de datos cual es el genero que guardado y me liste las películas de ese genero. No que tenga que elegir el genero, sino que se fije en la base de datos.
Y no solo eso sino que también me quede seleccionada la película (segundo select) que está en la base de datos.
Se me re complicó y no se como hacerlo, esto es por mi falta de conocimiento de javascript.
Alguien me puede dar una mano?.