Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Actualizar objetos javascript

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript
Mensaje Mar Jul 03, 2007 10:06 am
marcosss
Perlero Nuevo
Perlero Nuevo
Registrado: 14 May 2007
Mensajes: 87
Actualizar objetos javascript Responder citando

¡Hola!

Estoy programando en php y javascript y tengo una duda:

A ver, para la creación de determinados inputs uso javascript porque no sé cuántos inputs va a necesitar el usuario (por ejemplo, para añadir las titulaciones de un profesor, a priori no sabemos cuántas son, entonces mediante javascript el usuario pulsa en el botón 'añadir titulación' y se añade). A continuación muetro el código para crear las titulaciones de un profesor:



Código:
<script type="text/javascript">

num=0;
function crear(obj) {
  num++;
  fi = document.getElementById('fiel'); // 1
 contenedor = document.createElement('div'); // 2
  contenedor.id = 'div'+num; // 3
  fi.appendChild(contenedor); // 4

  ele = document.createElement('input'); // 5
  ele.type = 'text'; // 6
  ele.name = 'text'+num; // 6
  ele.size = '40';
  contenedor.appendChild(ele); // 7
 
  ele = document.createElement('input'); // 5
  ele.type = 'button'; // 6
  ele.value = 'Borrar'; // 8
  ele.name = 'div'+num; // 8
  ele.onclick = function () {borrar(this.name)} // 9
  contenedor.appendChild(ele); // 7
}
function borrar(obj) {
  fi = document.getElementById('fiel'); // 1
  fi.removeChild(document.getElementById(obj)); // 10
}

</script>


He mostrado el código javascript, ahora muestro el código php desde el que lo llamo:

Código:

<h2>Nombre de la nueva titulación</h2>
<fieldset id="fiel">      
<input type="button" value="Añadir titulación" onclick="crear(this)">
</fieldset>



Y esto me funciona bien, consigo crear al profesor con el número de titulaciones que quiera el usuario.


Pero el problema viene cuando se quiere modificar a ese profesor, y entonces aparecen las titulaciones que tenía, pero no se pueden añadir más poque no consigo hacerlo de forma dinámica:


Código:
   <strong>Titulaciones del profesor</strong>      <br><br>';
echo'
<fieldset id="fiel1">';   

echo "
<script type='text/javascript'>
  num1=0;
  num1++;
  fi = document.getElementById('fiel1');
  contenedor = document.createElement('div1');
  contenedor.id = 'div1'+num1;
  fi.appendChild(contenedor); ";

  while ($fila1= mysql_fetch_assoc($result1)){ 

echo"
  ele = document.createElement('input');
  ele.type = 'text';
  ele.name = 'titulacion'+num1; ";
echo"ele.value='".$fila1['nombreTitulacion']."';";
echo" 
  ele.size = '40';
  contenedor.appendChild(ele);";
  }
   
  echo"
  ele = document.createElement('input');
  ele.type = 'button';
  ele.value = 'Borrar';
  ele.name = 'div1'+num1;
  ele.onclick = function () {borrar1(this.name)}
  contenedor.appendChild(ele); // 7
}
</script>
";
echo'   
</fieldset>';


echo'
<fieldset id="fiel">
<input type="button" value="Añadir titulación" onclick="crear(this)">
</fieldset>';



Sé que este último código está mal porque javascript se ejecuta del lado del cliente y php del lado del servidor, pero ¿qué forma hay de hacer esto? Ya llevo mucho tiempo estancado aqui y no sé como seguir, si me puediéseis ayudar...

Muchas gracias
Mensaje Mar Jul 03, 2007 11:32 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1366
Ubicación: México
Responder citando

Umm, necesitas guardar la cantidad de titulaciones que se crearon para cierto profesor, de esa manera ya cuando lo despliegas para editar con el PHP creas la cantidad de campos necesarios, ya sin usar el JavaScript.

Un ejemplo burdo, pero si se crearon 10 titulaciones, después para desplegar podrías hacer algo así:

Código:
for( i=1; i<=cantidad_titulaciones; i++){
    imprime <input type="text" name="titulacion-i" value="valor-titulacion-i">
}
Mensaje Mar Jul 03, 2007 11:44 am
marcosss
Perlero Nuevo
Perlero Nuevo
Registrado: 14 May 2007
Mensajes: 87
Responder citando

Si, eso es lo que hago hasta ahora, pero al editar el usuario puede querer eliminar o crear una nueva titulación, y ahí viene el problema ¿entiendes lo que te digo?
Publicar nuevo tema   Responder al tema    Foros de discusión -> Javascript Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group