Foros del Web » Programando para Internet » Javascript »

Pasar Array a Javascript (Gracias a todos)

Estas en el tema de Pasar Array a Javascript (Gracias a todos) en el foro de Javascript en Foros del Web. Hola a tod@s: despues de estar dando la paliza a todo dios por no poder solucionar el paso de variables, a continuación pongo el codigo ...
  #1 (permalink)  
Antiguo 28/02/2005, 11:09
 
Fecha de Ingreso: junio-2004
Mensajes: 36
Antigüedad: 19 años, 10 meses
Puntos: 0
Pasar Array a Javascript (Gracias a todos)

Hola a tod@s:
despues de estar dando la paliza a todo dios por no poder solucionar el paso de variables, a continuación pongo el codigo de lo que estaba intentando solucionar y que funciona.
En este caso tengo cuatro campos.
Poblaciones
Sectores
Actividades (Que está encadenado a sectores)
Nombre de la empresa a buscar.
Pongo el código de las lecturas a la base de datos, porque los arrays en JavaScript estan embebidos entre los resultados de la búsqueda:

<?php

$varSec="'*Seleccione Sector'";
$varAct="'*Seleccione Actividad'";

// Formar Select "sectores".
$query = "SELECT * FROM $tabla1 WHERE id_sector<>'' ORDER BY 'nombre_$varim' ASC";
$result = mysql_query($query);
$numopciones = mysql_num_rows($result);
// a partir de aqui se crea el javascript que va a contener los valores
echo "<script type='text/javascript'>";
echo "var JSacti0=new Array(' ');";

$Sector="";
$Sector.=$varSec;
for ($k=0;$k<($numopciones);$k++){
$Sector.=",'";
$val_sector[$k]=mysql_result($result,$k,"id_sector");
$nom_sector[$k]=mysql_result($result,$k,"nombre_$varim");
$Sector.=$val_sector[$k]."*".$nom_sector[$k]."'";

// Formar todos los Select "actividades".
$query2 = "SELECT * FROM $tabla2 WHERE id_sector='$val_sector[$k]'";
$result2 = mysql_query($query2);
$numopciones2 = mysql_num_rows($result2);
$Acti[$k]="";
$Acti[$k].=$varAct;

for ($p=0;$p<$numopciones2;$p++){
$Acti[$k].=",'";
$val_acti[$k][($p+1)]=mysql_result($result2,$p,"id_activ");
$nom_acti[$k][($p+1)]=mysql_result($result2,$p,"nombre_$varim");
$Acti[$k].=$val_acti[$k][($p+1)]."*".$nom_acti[$k][($p+1)]."'";
}

echo "var JSacti".($k+1)."= new Array(".$Acti[($k)].");\n";


}
echo "var JSacti=new Array(JSacti0";

for ($p=1;$p<$numopciones;$p++){
echo ",JSacti".$p;
}
echo ");";

echo "var JSsector=new Array(".$Sector.");";


//Select de poblaciones
$query3 = "SELECT * FROM $tabla3 WHERE datos=1 ORDER BY nombre ASC";
$result3 = mysql_query($query3) or die(mysql_error());
$numeropob = @mysql_num_rows($result3);
for($m=0;$m<$numeropob;$m++){
$val_pob[$m] = mysql_result($result3,$m,"codpos");
$nom_pob[$m] = mysql_result($result3,$m,"nombre");
}

echo"
function opcion(oCntrl, iPos, sTxt, sVal){
var campos=sTxt.split('*');
var tVal = campos[0];
var TTxt = campos[1];
var selOpcion=new Option(TTxt, tVal);
eval(oCntrl.options[iPos]=selOpcion);
}


function cambia(oMster, oCntrl){
var nSelected = oMster.selectedIndex;
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < (JSacti[nSelected].length); i++)
opcion(oCntrl, i, JSacti[nSelected][i], String(i));
}

function llena(oCntrl){
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i <( JSsector.length); i++){
opcion(oCntrl, i, JSsector[i], String(i));
}
}

</script>\n";
?>
<form name="seleccion" method="post" enctype="multipart/form-data">
<table width="500" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<select name="pobla">
<option value="">Seleccione Población</option>
<? for ($k=0;$k<count($val_pob);$k++){?>
<option value="<? echo $val_pob[$k]; ?>"><? echo $nom_pob[$k]; ?></option>
<? } ?>
</select>
</td>
<td><input type="text" name="nom_emp" ></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>
<select name="sector" onChange="cambia(this, document.seleccion.activ)">
<option></option>
</select>
</td>
<td><select name="activ" >
</select>
</td>
<td ><input type="submit" value="Buscar" onClick="this.form.submit();" ></td>
</tr>
</table>
</form>
<script language="JavaScript">
llena(document.seleccion.sector);
</script>


Supongo que se podrá hacer de forma más elegante, pero de momento funciona.
Las Variables $tabla1,$tabla2 y $tabal3 corresponden a los nombre de las tablas en mi base de datos.
La variable $varim la utilizo para leer los nombres en funcion del idioma que me pasan al script.
Dentro de la función de javascript opcion(...), realizo un split a la variable sTxt, para que en el select tome el valor del Id que tiene en la base de datos, para poder luego realizar búsquedas.
Por cierto que no se me olvide:
El script base lo tome de uno que Kaopectate, tenía puesto aqui en foros del Web.
Muchisimas gracias a todos los que haceis que la vida de los que no tenemos muchos conocimientos, sea un poco más agradable.
Salud2

J.A. Sendra
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 02:47.