• Publicidad

Actualizar objetos javascript

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Actualizar objetos javascript

Notapor marcosss » 2007-07-03 11:06 @504

¡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: Seleccionar todo
<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: Seleccionar todo
<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: Seleccionar todo
   <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
marcosss
Perlero nuevo
Perlero nuevo
 
Mensajes: 87
Registrado: 2007-05-14 06:23 @307

Publicidad

Notapor kidd » 2007-07-03 12:32 @564

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: Seleccionar todo
for( i=1; i<=cantidad_titulaciones; i++){
    imprime <input type="text" name="titulacion-i" value="valor-titulacion-i">
}
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor marcosss » 2007-07-03 12:44 @572

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?
marcosss
Perlero nuevo
Perlero nuevo
 
Mensajes: 87
Registrado: 2007-05-14 06:23 @307


Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron