Intentaré explicarme lo mejor posible y poner código, tengo como 5 archivos, y largos así que no puedo ponerlo todo jeje.
Estoy creando un formulario bastante dinámico:
En primer lugar tengo dos selects dependientes, al seleccionar una cosa en el primero me carga el segundo. El contenido de ambos desde la base de datos pero con la DB no tengo ningun problema. Esto me funcionaba muy bien.
La cosa se complicó cuando decidí poner un botón para añadir campos (añadir más selects como estos), para que el usuario pueda meter más productos. De momento lo estoy llevando bastante bien con unos códigos que encontre por Internet de AJAX, pero me he encontrado con un PROBLEMA:
En un archivo PHP tengo un script en el head donde me genera texto para la página mediante innerHTML:
Código PHP:
nuevaCelda.innerHTML="<td><?php generaPaises("+posicionCampo+");?></td>";
nuevaCelda=nuevaFila.insertCell(-1);
nuevaCelda.innerHTML="<td><select disabled='disabled' name='piezas"+posicionCampo+"' id='piezas"+posicionCampo+"'><option value='0'>Selecciona opción...</option></select></td>";
nuevaCelda=nuevaFila.insertCell(-1);
nuevaCelda.innerHTML="<td><div id='pepe"+posicionCampo+"'>"+posicionCampo+"</div></td>";
Si en lugar de poner "+posicionCampo+" pongo el número manualmente todo va correcto, la cosa es que no me reconoce "+posicionCampo+" como una variable, en el resto de casos sí, eso es lo gracioso. Lo sé porque puse un echo y me imprimía literalmente y probe cambiando por un numero y me funcionaba.
¿Hay alguna manera de solucionarlo? De hacer que el código que genere el script lleve el número de la variable en la función en vez de que lo reconozca como texto. Mi función generarPaises() está así:
Código PHP:
function generaPaises($num)
{
conectar();
$consulta=mysql_query("SELECT id, opcion FROM lista_catalogos");
desconectar();
// Voy imprimiendo el primer select compuesto por los paises
echo "<select name='catalogos".$num."' id='catalogos".$num."' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige un catálogo</option>";
while($registro=mysql_fetch_row($consulta))
{
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>".$num."";
}