No llevo mucho con php y javascript y estoy haciendo un software para un colegio. En ese software hay que crear, ver y editar los datos de un profesor. Y ese profesor tiene un número indeterminado de titulaciones, pues bien, al editar el profesor muestro las titulaciones que tiene y el usuario tiene q poder cambiar el texto que hay en una determinada titulación, pero además debe poder cambiar en número de titulaciones de ese profesor, es decir, añadir o borrar titulaciones.
Y para eso uso javascript, pero no consigo actualizar los datos de los inputs que creo con javascript de las titulaciones con los valores que extraigo de la tabla correspondiente en php.
Os explico un poco el código:
Código:
Este código anetrior es el script entero, pero lo que no me funciona es:<? session_start(); ?> <html> <head> <title>Datos Profesor</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <script type="text/javascript"> num=0; function crear(obj) { alert(num); num++; fi = document.getElementById('fiel'); // 1 //fi.insertBefore(contenedor,obj); // 2 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 } function enviar(){ document.form1.submit(); } function actualizar(obj,valor) { alert(valor); num++; fi = document.getElementById('fiel'); // 1 //fi.insertBefore(contenedor,obj); // 2 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'; ele.value = valor; 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 } </script> <? $login="marcospp"; //$login="fulano"; include("conexion.php"); $sql = "select * from profesores where login = '".$login."'"; $result = mysql_query($sql, $GLOBALS["miConexion"]) or die(mysql_error()); $fila= mysql_fetch_assoc($result); $sql1 = "select * from titulaciones where DNIProfesor = '".$fila['DNI']."'"; $result1 = mysql_query($sql1, $GLOBALS["miConexion"]) or die(mysql_error()); echo '<form name="f" method = "POST" action ="guardarProfesor.php"> <h2>Datos del profesor '.$fila['nombre'].' '.$fila['apellido1'].' '.$fila['apellido2'].'</h2>'; echo '<div style="margin-left: 3%; width=200px;"> DNI: <input name="cDNI" type="text" value="'.$fila['DNI'].'"> <br><br> Nombre: <input name="cNombre" type="text" value="'.$fila['nombre'].'">    Primer apellido: <input name="cApellido1" type="text" value="'.$fila['apellido1'].'">    Segundo apellido: <input name="cApellido2" type="text" value="'.$fila['apellido2'].'"> <br><br> Dirección: <input name="cDireccion" type="text" size="40" value="'.$fila['direccion'].'">    Teléfono: <input name="cTelefono" type="text" value='.$fila['telefono'].'> <br><br> <strong>Titulaciones del profesor</strong> <br><br>'; $i=0; echo' <fieldset id="fiel">'; while ($fila1= mysql_fetch_assoc($result1)){ $_SESSION['nTitulacion'.$i]=$fila1['nTitulacion']; echo' - <input onload="actualizar(this,'.$fila1['nombreTitulacion'].')">'; echo' <br><br>'; $i++; } echo ' <input type="button" value="Añadir titulación" onclick="crear(this)"> </fieldset>'; echo '<fieldset size="10"><p><legend>Dedicación</legend></p><p></p><label> <input type="radio" name="cDedicacion" value="valorTotal" '; if ($fila['dedicacion']=='1') echo 'checked'; echo '>Total</label>  <label> <input type="radio" name="cDedicacion" value="valorParcial" '; if ($fila['dedicacion']=='0') echo 'checked'; echo '>Parcial</label><br> </fieldset>'; echo '<br><br> Otras actividades: <br> <textarea name="cOtrasActividades" cols="40" rows="4">'.$fila['otrasActividades'].'</textarea>'; echo '<br><br> <input name="cDirector" type="checkbox" value="valorDirector" '; if ($fila['director']=='1') echo 'checked'; echo'> Director <input name="cSubdirector" type="checkbox" value="valorSubdirector" '; if ($fila['subdirector']=='1') echo 'checked'; echo'> Subdirector <input name="cTutor" type="checkbox" value="valorTutor" '; if ($fila['tutor']=='1') echo 'checked'; echo'> Tutor <input name="cJefeSeccion" type="checkbox" value="valorJefeSeccion" '; if ($fila['jefeSeccion']=='1') echo 'checked'; echo'> Jefe sección <input name="cOrientador" type="checkbox" value="valorOrientador" '; if ($fila['orientador']=='1') echo 'checked'; echo'> Orientador <input name="cRape" type="checkbox" value="valorRape" '; if ($fila['rape']=='1') echo 'checked'; echo'> RAPE <br><br> <center> <input name="botonGuardar" type="submit" value="Guardar"> </center> </form>'; ?> </body> </html>
Código:
Y la función actualizar de javascript:<strong>Titulaciones del profesor</strong> <br><br>'; $i=0; echo' <fieldset id="fiel">'; while ($fila1= mysql_fetch_assoc($result1)){ $_SESSION['nTitulacion'.$i]=$fila1['nTitulacion']; echo' - <input onload="actualizar(this,'.$fila1['nombreTitulacion'].')">'; echo' <br><br>'; $i++; } echo ' <input type="button" value="Añadir titulación" onclick="crear(this)"> </fieldset>';
Código:
function actualizar(obj,valor) { alert(valor); 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'; ele.value = valor; 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 }
La función actualizar la he creado a partir de la función 'crear' que me funciona bien. No sé si es que esa no es la sintaxis... si me podéis echar una mano...
Muchas gracias