Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2011, 13:03
Avatar de zalito12
zalito12
 
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
PHP + JS + MySql Formulario dinámico

Hola, primero me presento. Soy Gonzalo, me registre hace poco porque empecé con flash y pensé que podría prestar ayuda a otros nuevos en eso ya que lo iba entendiendo bastante bien y ahora soy yo el que necesita ayuda.

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&oacute;n...</option></select></td>";
    nuevaCelda=nuevaFila.insertCell(-1);
    nuevaCelda.innerHTML="<td><div id='pepe"+posicionCampo+"'>"+posicionCampo+"</div></td>";
Esto es parte del código. Como veis, en la primera línea introduzco una llamada a una función, generaPaises(variable), pero no me funciona bien, el PROBLEMA está identificado.
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."";

Perdón por la parrafada, pero no quería explcarme de menos y alomejor me pase, jeje, muchas gracias.