Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con formulario en ventana modal

Estas en el tema de Problema con formulario en ventana modal en el foro de PHP en Foros del Web. Hola a todos, amigos del web. Hoy estoy rompiéndome la cabeza intentando hacer un pequeño formulario para editar un campo de una tabla, en una ...
  #1 (permalink)  
Antiguo 08/02/2014, 18:47
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Problema con formulario en ventana modal

Hola a todos, amigos del web.

Hoy estoy rompiéndome la cabeza intentando hacer un pequeño formulario para editar un campo de una tabla, en una ventana modal.

Tengo varias ventanas modales en mi página, pero solo son formularios para insertar, al no ser para editar no tenía problemas con las variables.... hasta ahora.

El caso es que tengo una tabla con una consulta de base de datos en la que muestro:

Nombre, Apellidos, Cita, Hora, Comentarios

Lo que quiero hacer es que al clickar sobre el comentario que quiero me abra una ventana modal para modificar solo ese campo recibiendo el idCita, que es el valor clave. Os paso el código.

Este es el enlace para abrir la ventana modal al hacer click en el comentario que quiero cambiar:
Código HTML:
Ver original
  1. <td align="center" style="padding:5px;font-size:20px"><span style="cursor:pointer" onclick="javascript:mostrarVentana3();"><?php echo $row_CitasHoy['txtComentario']; ?></span></td>

Este es el script que me abre la ventana modal:
Código Javascript:
Ver original
  1. function mostrarVentana3()
  2. {
  3.     var ventana3 = document.getElementById('miVentana3');
  4.     ventana3.style.marginTop = "100px";
  5.     ventana3.style.left = ((document.body.clientWidth-500) / 2) +  "px";
  6.     ventana3.style.display = 'block';
  7. }
  8. function cerrarVentana3()
  9. {
  10.     var ventana3 = document.getElementById('miVentana3');
  11.     ventana3.style.display = 'none';
  12. }

Y esta es la ventana modal con el form:
Código HTML:
Ver original
  1. <form action="<?php echo $editFormAction; ?>" method="post" name="form8" id="form8">
  2.       <table align="center">
  3.         <tr valign="baseline">
  4.             <td nowrap="nowrap" align="left" valign="top" style="padding-top:5px">Direcci&oacute;n: </td>
  5.             <td nowrap="nowrap" align="left" valign="middle" style="padding-left:8px;padding-top:5px"><textarea name="txtComentario" cols="50" rows="5" value="" style="cursor:text;resize:none"><?php echo htmlentities($row_CitasHoy['txtComentario'], ENT_COMPAT, 'utf-8'); ?></textarea></td>
  6.         </tr>
  7.         <tr valign="baseline">
  8.           <td nowrap="nowrap" align="right">&nbsp;</td>
  9.           <td>
  10.                 <input type="submit" value="Guardar" style="cursor:pointer" class="button" />&nbsp;
  11.                 <input type="button" value="Cerrar" onclick="javascript:cerrarVentana3();" style="cursor:pointer" class="button" />
  12.           </td>
  13.         </tr>
  14.       </table>
  15.       <input type="hidden" name="MM_update" value="form8" />
  16.       <input type="hidden" name="idCita" value="<?php echo $row_CitasHoy['idCita']; ?>" />
  17.     </form>


La historia es que no sé como pasarle el idCita para que me abra la linea que corresponde al idCita. He probado un monton de cosas, pero no logro pasar las variable a la función mostrarVentana, por lo que no me muestra el comentario que ya está en la BD ni me devuelve nada. Hubo una de las veces que estaba programando que me hizo el edit pero me cambió todas las líneas de la BD, imagino que porque no había pasado el idCita.

Bueno, espero no haberme enrollado demasiado.
Y espero me puedan ayudar, estoy muy agradecido por la ayuda que me brindan siempre aqui.
Espero alguna idea.
Gracias.
Estaré conectado.
Raúl

Última edición por raulgranadosraul; 08/02/2014 a las 18:49 Razón: Cambiar etiquetas
  #2 (permalink)  
Antiguo 08/02/2014, 21:59
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Mediante la llamada a mostrarVentana3(), puedes pasar el valor del Id en cuestión, mientras que en la función recibes el valor y lo asignas a un elemento oculto en el formulario, luego, cuando guardes los datos, tomas el valor del elemento oculto y lo usas en la condición dentro de la consulta.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 08/02/2014 a las 22:08
  #3 (permalink)  
Antiguo 09/02/2014, 15:31
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Mediante la llamada a mostrarVentana3(), puedes pasar el valor del Id en cuestión, mientras que en la función recibes el valor y lo asignas a un elemento oculto en el formulario, luego, cuando guardes los datos, tomas el valor del elemento oculto y lo usas en la condición dentro de la consulta.

Saludos
Gracias por contestar Alexis. He encontrado muchos foros que hablan sobre eso, pero al final no veo una solución. He intentado pasar el id de varias maneras pero no lo consigo. Estoy acostumbrado a trabajar en php... y no se como pasarle la variable ya que se usan sintaxis diferentes.

Yo lo he puesto como
mostrarVentana3(<?php $row_Consulta['idCita'] ?>)
mostrarVentana3(<?php echo $row_Consulta['idCita'] ?>)
mostrarVentana3('idCita')

Pero no lo he conseguido con ninguno. En alguna ocasión me muestra el id, pero siempre el primer valor de la tabla.

Podrías echarme una mano con la sintaxis para pasar la variable por favor.
Estoy estancado ahí, en cómo convertir el dato php a javascript y como recuperarlo de javascript a php.

La teoría de como debe hacerse la tengo, justo como me lo has explicado.... pero no consigo llevarlo a las líneas.
  #4 (permalink)  
Antiguo 09/02/2014, 16:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Quizá con un ejemplo se entienda mejor lo que expliqué. Supongamos que en una tabla de la BD, tengo 3 campos; ID, NOMBRE y EDAD, entonces, lo que quiero hacer es listar todos los datos de dicha tabla y colocar un botón al final de cada fila generada, dicho botón llamará a una función JavaScript a la que le pasaré el ID de dicha fila o registro, en la función, solamente me limitaré a mostrar una alerta con el ID del registro, para comprobar que cada botón tiene el ID que le corresponde.

Código PHP:
Ver original
  1. <?php
  2. //Realizo la conexión
  3. $conexion = new mysqli("localhost", "root", "password", "bd_personas");
  4.  
  5. //Si se produce un error al intentar conectarme a la BD, lanzo un mensaje de error y finalizo el script
  6. if ($conexion->connect_error)
  7.     exit ("ERROR: No se pudo realizar la conexión a la base de datos");
  8.  
  9. //Caso contrario, continuo con el script
  10.  
  11. //Realizo la consulta
  12. $query = $conexion->query("SELECT * FROM tabla");
  13.  
  14. //Si se encuentran datos en la consulta
  15. if ($query->num_rows) {
  16. ?>
  17.     <table border = 1>
  18.         <tr>
  19.             <th> ID </th>
  20.             <th> NOMBRE </th>
  21.             <th> EDAD </th>
  22.             <th> OPCIONES </th>
  23.         </tr>
  24. <?php
  25.     //Creo un array asociativo con dichos datos y los itero para mostrarlos
  26.     while ($row = $query->fetch_array()) {
  27. ?>
  28.         <tr>
  29.             <td> <?php echo $row["ID"]; ?> </td>
  30.             <td> <?php echo $row["NOMBRE"]; ?> </td>
  31.             <td> <?php echo $row["EDAD"]; ?> </td>
  32.             <td>
  33.                 <button onclick = "miFuncion('<?php echo $row["ID"]; ?>')">
  34.                     OPCIÓN
  35.                 </button>
  36.             </td>
  37.         </tr>
  38. <?php
  39.     }
  40.     //Libero a la memoria de los resultado de la consulta
  41.     $query->free();
  42. ?>
  43.     </table>
  44. <?php
  45. }
  46. else { //Si no se encuentran datos en la consulta
  47.     echo "No se encontraron datos en la consulta";
  48. }
  49.  
  50. //Cierro la conexión
  51. $conexion->close();
  52. ?>

Y en miFuncion:

Código Javascript:
Ver original
  1. function miFuncion (id) {
  2.     alert (id);
  3. }

Las impresiones cortas que hago con PHP dentro de HTML como <?php echo $row["ID"]; ?>, también las puedes hacer así: <?=$row["ID"]?>.

Analiza este ejemplo y adáptalo a tus necesidades, saludos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 09/02/2014, 20:50
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Quizá con un ejemplo se entienda mejor lo que expliqué. Supongamos que en una tabla de la BD, tengo 3 campos; ID, NOMBRE y EDAD, entonces, lo que quiero hacer es listar todos los datos de dicha tabla y colocar un botón al final de cada fila generada, dicho botón llamará a una función JavaScript a la que le pasaré el ID de dicha fila o registro, en la función, solamente me limitaré a mostrar una alerta con el ID del registro, para comprobar que cada botón tiene el ID que le corresponde.

Código PHP:
Ver original
  1. <?php
  2. //Realizo la conexión
  3. $conexion = new mysqli("localhost", "root", "password", "bd_personas");
  4.  
  5. //Si se produce un error al intentar conectarme a la BD, lanzo un mensaje de error y finalizo el script
  6. if ($conexion->connect_error)
  7.     exit ("ERROR: No se pudo realizar la conexión a la base de datos");
  8.  
  9. //Caso contrario, continuo con el script
  10.  
  11. //Realizo la consulta
  12. $query = $conexion->query("SELECT * FROM tabla");
  13.  
  14. //Si se encuentran datos en la consulta
  15. if ($query->num_rows) {
  16. ?>
  17.     <table border = 1>
  18.         <tr>
  19.             <th> ID </th>
  20.             <th> NOMBRE </th>
  21.             <th> EDAD </th>
  22.             <th> OPCIONES </th>
  23.         </tr>
  24. <?php
  25.     //Creo un array asociativo con dichos datos y los itero para mostrarlos
  26.     while ($row = $query->fetch_array()) {
  27. ?>
  28.         <tr>
  29.             <td> <?php echo $row["ID"]; ?> </td>
  30.             <td> <?php echo $row["NOMBRE"]; ?> </td>
  31.             <td> <?php echo $row["EDAD"]; ?> </td>
  32.             <td>
  33.                 <button onclick = "miFuncion('<?php echo $row["ID"]; ?>')">
  34.                     OPCIÓN
  35.                 </button>
  36.             </td>
  37.         </tr>
  38. <?php
  39.     }
  40.     //Libero a la memoria de los resultado de la consulta
  41.     $query->free();
  42. ?>
  43.     </table>
  44. <?php
  45. }
  46. else { //Si no se encuentran datos en la consulta
  47.     echo "No se encontraron datos en la consulta";
  48. }
  49.  
  50. //Cierro la conexión
  51. $conexion->close();
  52. ?>

Y en miFuncion:

Código Javascript:
Ver original
  1. function miFuncion (id) {
  2.     alert (id);
  3. }

Las impresiones cortas que hago con PHP dentro de HTML como <?php echo $row["ID"]; ?>, también las puedes hacer así: <?=$row["ID"]?>.

Analiza este ejemplo y adáptalo a tus necesidades, saludos.
Ei muchas gracias, mil.
Captura bien el id y me lo muestra en un alert.

Estoy intentando que se me muestre en una modal que tengo con un form de actualizar registro en php.
¿ Sabes cómo podría mostrarlo en un campo o en un hidden para enviarlo con el form ?

Esta es la función js tal cual ha quedado ahora
Código Javascript:
Ver original
  1. <script>
  2. function mostrarVentana3(idCita)
  3. {
  4.     var ventana3 = document.getElementById('miVentana3');
  5.     ventana3.style.marginTop = "100px";
  6.     ventana3.style.left = ((document.body.clientWidth-500) / 2) +  "px";
  7.     ventana3.style.display = 'block';
  8. }
  9. function cerrarVentana3()
  10. {
  11.     var ventana3 = document.getElementById('miVentana3');
  12.     ventana3.style.display = 'none';
  13. }
  14. </script>

y en la ventana modal que muestro tengo este form:
Código HTML:
 <form action="<?php echo $editFormAction; ?>" method="post" name="form8" id="form8">
      <table align="center">
        <tr valign="baseline">
			<td nowrap="nowrap" align="left" valign="top" style="padding-top:5px">ID: </td>
			<td nowrap="nowrap" align="left" valign="middle" style="padding-left:8px;padding-top:5px">[COLOR="Red"]Aquí tengo que mostrar id[/COLOR]<textarea name="txtComentario" cols="50" rows="5" value="" style="cursor:text;resize:none">id</textarea></td>
        </tr>
        <tr valign="baseline">
          <td nowrap="nowrap" align="right">&nbsp;</td>
          <td>
				<input type="submit" value="Guardar" style="cursor:pointer" class="button" />&nbsp;
				<input type="button" value="Cerrar" onclick="javascript:cerrarVentana3();" style="cursor:pointer" class="button" />
          </td>
        </tr>
      </table>
      <input type="hidden" name="MM_update" value="form8" />
      <input type="hidden" name="idCita" value="[COLOR="red"]Aqui tengo que enviar el id que antes debo pasar por js y devolverlo aqui en php[/COLOR]" />
    </form> 
Si no puede ser con esto, no pasa nada, estamos en paz.
Gracias una vez más
Raúl
  #6 (permalink)  
Antiguo 09/02/2014, 21:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Basándome en el mismo ejemplo que hice, si deseas mostrar una ventana modal que contendrá un formulario con N campos y deseas enviar a través de la función un dato, así como lo hice para mostrarlo en el mensaje de alerta, podrías insertarlo directamente en un elemento específico.

Supongamos que en la ventana modal tenemos este formulario:

Código HTML:
Ver original
  1. <form action = "ejemplo.php" method = "post">
  2.     Nombre: <input type = "text" id = "nombre" name = "nombre" />
  3.     Edad: <input type = "text" id = "edad" name = "edad" />
  4.    
  5.     <input type = "hidden" id = "miId" name = "miId" />
  6.     <input type = "submit" value = "Enviar" />
  7. </form>

Solamente tendríamos que hacer esto en la función para insertar el valor recibido en la función al campo oculto:

Código Javascript:
Ver original
  1. function miFuncion (id) {
  2.     //Aquí va el código con el que muestras la ventana modal
  3.  
  4.     //Aquí inserto el valor en la caja oculta
  5.     document.getElementById("miId").value = id;
  6. }

Por favor, analiza el código, no te limites a copiarlo y pegarlo, si lo analizas, lo entenderás y podrás adaptarlo fácilmente a tus necesidades.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 14/02/2014, 15:31
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Basándome en el mismo ejemplo que hice, si deseas mostrar una ventana modal que contendrá un formulario con N campos y deseas enviar a través de la función un dato, así como lo hice para mostrarlo en el mensaje de alerta, podrías insertarlo directamente en un elemento específico.

Supongamos que en la ventana modal tenemos este formulario:

Código HTML:
Ver original
  1. <form action = "ejemplo.php" method = "post">
  2.     Nombre: <input type = "text" id = "nombre" name = "nombre" />
  3.     Edad: <input type = "text" id = "edad" name = "edad" />
  4.    
  5.     <input type = "hidden" id = "miId" name = "miId" />
  6.     <input type = "submit" value = "Enviar" />
  7. </form>

Solamente tendríamos que hacer esto en la función para insertar el valor recibido en la función al campo oculto:

Código Javascript:
Ver original
  1. function miFuncion (id) {
  2.     //Aquí va el código con el que muestras la ventana modal
  3.  
  4.     //Aquí inserto el valor en la caja oculta
  5.     document.getElementById("miId").value = id;
  6. }

Por favor, analiza el código, no te limites a copiarlo y pegarlo, si lo analizas, lo entenderás y podrás adaptarlo fácilmente a tus necesidades.

Saludos
Saludos Alexis, recurro a ti ya que has sido el único que ha podido o sabido ayudarme, a ver si puedo solucionar una cosa más.
El paso de valores de php a js va perfecto como tu me indicaste.

El problema es que tengo dos ventanas modales con dos updates diferentes pero necesito pasarles el mismo parámetro (idCita) para que me modifique la línea que es. Este es el envío:

Código HTML:
<td align="center" style="padding:5px;font-size:20px"><span style="cursor:pointer" onclick="javascript:mostrarVentana3(<?php echo $row_CitasHoy['idCita']; ?>);"><?php echo $row_CitasHoy['txtComentario']; ?>.</span></td>

<td align="center" style="padding:5px;font-size:20px"><span style="cursor:pointer" onclick="javascript:mostrarVentana4(<?php echo $row_CitasHoy['idCita']; ?>);"><?php echo $row_CitasHoy['txtAcciones']; ?>.</span></td> 
Verás que en las dos paso el idCita, ya que es la clave principal.
El caso es que he puesto las dos modales en diferentes paginas y funcionan bien cada uno por su lado, pero en la misma página no le puedo pasar el idCita a los dos.

Además el autocompletar de DW me avisa cuando estoy escribiendo el código de que idCita ya se usa en otros js.

Con lo cual no se que hacer para pasar el mismo parametro a las dos funciones y que me funcionen por separado.

Estas son las dos modales que reciben idCita:
Código Javascript:
Ver original
  1. <script>
  2.         function mostrarVentana3(idCita)
  3.         {
  4.             var ventana3 = document.getElementById('miVentana3');
  5.             ventana3.style.marginTop = "100px";
  6.             ventana3.style.left = ((document.body.clientWidth-300) / 2) +  "px";
  7.             ventana3.style.display = 'block';
  8.             document.getElementById("idCita").value = idCita;
  9.         }
  10.         function cerrarVentana3()
  11.         {
  12.             var ventana3 = document.getElementById('miVentana3');
  13.             ventana3.style.display = 'none';
  14.         }
  15. </script>
  16. <script>
  17.         function mostrarVentana4(idCita)
  18.         {
  19.             var ventana4 = document.getElementById('miVentana4');
  20.             ventana4.style.marginTop = "100px";
  21.             ventana4.style.left = ((document.body.clientWidth-300) / 2) +  "px";
  22.             ventana4.style.display = 'block';
  23.             document.getElementById("idCita").value = idCita;
  24.         }
  25.         function cerrarVentana4()
  26.         {
  27.             var ventana4 = document.getElementById('miVentana4');
  28.             ventana4.style.display = 'none';
  29.         }
  30. </script>

¿ Alguna idea de cómo puedo hacerlo ?
Gracias una vez más.
  #8 (permalink)  
Antiguo 14/02/2014, 16:14
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Solucionado
  #9 (permalink)  
Antiguo 14/02/2014, 19:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

No veo por qué no puedas pasarle el mismo Id a ambas llamadas de función, podrías hacerlo con 500 funciones más y todas deberían funcionar correctamente. Sería bueno que expliques cómo solucionaste este percance para que otros usuarios que tengan el mismo problema que tuviste al inicio, puedan encontrar la solución aquí, si yo compartí contigo lo que sé, ¿por qué tú no lo harías con otros?.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 15/02/2014, 09:58
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
No veo por qué no puedas pasarle el mismo Id a ambas llamadas de función, podrías hacerlo con 500 funciones más y todas deberían funcionar correctamente. Sería bueno que expliques cómo solucionaste este percance para que otros usuarios que tengan el mismo problema que tuviste al inicio, puedan encontrar la solución aquí, si yo compartí contigo lo que sé, ¿por qué tú no lo harías con otros?.

Saludos
Claro Alexis, sin problema. Ojalá pueda servirle a alguien.
Lo que estaba haciendo mal era que le pasaba el mismo id del campo. Una vez encontrado que era eso, tienes razón.... he podido añadir todas las modales que necesito. Este es el que le paso en la modal 3
Código Javascript:
Ver original
  1. function mostrarVentana3(idCita)
  2.         {
  3.             var ventana3 = document.getElementById('miVentana3');
  4.             ventana3.style.marginTop = "100px";
  5.             ventana3.style.left = ((document.body.clientWidth-300) / 2) +  "px";
  6.             ventana3.style.display = 'block';
  7.             document.getElementById("idCita").value = idCita;
  8.         }
  9.         function cerrarVentana3()
  10.         {
  11.             var ventana3 = document.getElementById('miVentana3');
  12.             ventana3.style.display = 'none';
  13.         }

El document.getElementById("idCita") es el que cambié por el que tenía la variable y perfecto. No sé como me di cuenta antes. De esta manera tengo estas dos ahora.
Código Javascript:
Ver original
  1. function mostrarVentana3(idCita)
  2.         {
  3.             var ventana3 = document.getElementById('miVentana3');
  4.             ventana3.style.marginTop = "100px";
  5.             ventana3.style.left = ((document.body.clientWidth-300) / 2) +  "px";
  6.             ventana3.style.display = 'block';
  7.             document.getElementById("idCita").value = idCita;
  8.         }
  9.         function cerrarVentana3()
  10.         {
  11.             var ventana3 = document.getElementById('miVentana3');
  12.             ventana3.style.display = 'none';
  13.         }
  14.  
  15.  
  16.  function mostrarVentana4(idCita)
  17.         {
  18.             var ventana4 = document.getElementById('miVentana4');
  19.             ventana4.style.marginTop = "100px";
  20.             ventana4.style.left = ((document.body.clientWidth-300) / 2) +  "px";
  21.             ventana4.style.display = 'block';
  22.             document.getElementById("Hora").value = idCita;
  23.         }
  24.         function cerrarVentana4()
  25.         {
  26.             var ventana4 = document.getElementById('miVentana4');
  27.             ventana4.style.display = 'none';
  28.         }

_______________________________________________

Alexis necesito hacerte una pregunta más. Espero no estar abusando de tu amabilidad. Te cuento.

En una de esas ventanas modales tengo unos input type="radio" en los que puedo hacer algunas acciones con esa cita. El problema me viene porque uno de los input es para eliminar la cita de la BD directamente.

Y no logro pasarle el idCita, el mismo parámetro que esta en hidden en la vontana modal.
Asi es como esta esta modal:
Código HTML:
Ver original
  1. <form action="<?php echo $editFormAction; ?>" method="post" name="form7" id="form7">
  2.                                         <table width="100%">
  3.                                             <tr valign="baseline">
  4.                                                 <td>
  5.                                                     <input name="txtAcciones" type="radio" value="0" checked="checked" style="float:left" onclick="form7.submit()"><p style="float:left;color:#000">Pendiente</p>
  6.                                                 </td>
  7.                                                 <td>
  8.                                                     <input name="txtAcciones" type="radio" value="1" style="float:left" onclick="form7.submit()"><p style="float:left;color:#090">Confirmar</p>
  9.                                                 </td>
  10.                                             </tr>
  11.                                             <tr valign="baseline">
  12.                                                 <td>
  13.                                                     <input name="txtAcciones" type="radio" value="2" style="float:left" onclick="form7.submit()"><p style="float:left;color:#B05C00">No acudi&oacute;</p>
  14.                                                 </td>
  15.                                                 <td>
  16.                                                     <input name="txtAcciones" type="radio" value="3" style="float:left" onclick="form7.submit()"><p style="float:left;color:#F00">Cancelar</p>
  17.                                                 </td>
  18.                                             </tr>
  19.                                             <tr valign="baseline">
  20.                                                 <td align="center">
  21.                                                     <input name="txtAcciones" type="radio" value="4" style="float:left" [COLOR="red"]onclick="javascript:eliminarCita('idCita')"[/COLOR]><p style="float:left;color:#000">Eliminar cita</p>
  22.                                                 </td>
  23.                                                 <td>&nbsp;</td>
  24.                                             </tr>
  25.         <input type="hidden" id = "estadoCita" name = "idCita" />
  26.         <input type="hidden" name="MM_update" value="form7" />
  27.     </table>
  28. </form>

Estoy intentando llamar a la funcion eliminarCita('idCita')
que es esta:
Código Javascript:
Ver original
  1. function eliminarCita(idCita) {
  2.         window.location = "elim_cita.php?elimCita="+idCita;  
  3. }

Funciona pero este es el valor que me saca en la url:

Código HTML:
http://www.opencelteldesantana.es/agenda/elim_cita.php?elimCita=idCita
Con lo que saco en conclusión que no estoy pasándole el idCita que recuperaba antes. Al ya estar en la funcion mostrarVentana(idCita) ..... no logro pasarlo a la otra función.

Te aseguro que esta es la última pregunta sobre modales que te hago, jejejeje
Nunca había trabajado con ellas y la verdad me soluciona un monton de cosas....aunque tengo muuuucho que aprender sobre esto aun.

Alguna idea de como puedo pasar el idCita de mostrarVentana(idCita) a eliminarCita() ?????

Gracias una vez más.
  #11 (permalink)  
Antiguo 15/02/2014, 14:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Eso sucede porque estás pasando la cadena 'idCita', no estás pasando una variable. Debes de pasarle la variable.

Código HTML:
Ver original
  1. <input name="txtAcciones" type="radio" value="4" style="float:left" onclick="javascript:eliminarCita('<?php echo $row_Consulta['idCita']; ?>')">

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #12 (permalink)  
Antiguo 15/02/2014, 20:02
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Eso sucede porque estás pasando la cadena 'idCita', no estás pasando una variable. Debes de pasarle la variable.

Código HTML:
Ver original
  1. <input name="txtAcciones" type="radio" value="4" style="float:left" onclick="javascript:eliminarCita('<?php echo $row_Consulta['idCita']; ?>')">

Saludos
Lo he hecho así y no va. Yo creo que por estar en una ventana modal. Puede ser?

Lo he puesto así
Código Javascript:
Ver original
  1. <script>
  2. function eliminarCita(idCita) {
  3.         window.location = "elim_cita.php?elimCita="+idCita;
  4. }
  5. </script>
Y en el form de la modal
Código HTML:
<input name="txtAcciones" type="radio" value="4" style="float:left" onclick="javascript:eliminarCita(<?php echo $row_CitasHoy['idCita']; ?>)"><p style="float:left;color:#000">Eliminar cita</p> 
y me devuelve esto:

.../agenda/elim_cita.php?elimCita=undefined

He hecho varias pruebas pero ninguna me da resultado de momento.
  #13 (permalink)  
Antiguo 15/02/2014, 20:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

El que sea una ventana modal no tiene nada que ver, ese undefined aparece porque la variable no está definida, lo cual quiere decir que $row_CitasHoy['idCita'] no existe. Si pudieras mostrar el código completo de ese archivo, probablemente encontremos el error.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 15/02/2014, 21:01
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
El que sea una ventana modal no tiene nada que ver, ese undefined aparece porque la variable no está definida, lo cual quiere decir que $row_CitasHoy['idCita'] no existe. Si pudieras mostrar el código completo de ese archivo, probablemente encontremos el error.
Te muestro
La consulta:
Código PHP:
mysql_select_db($database_xxx$xxx);
$query_CitasHoy "SELECT * FROM Citas_tbl WHERE Citas_tbl.datDia = CURDATE() ORDER BY Citas_tbl.txtCita";
$CitasHoy mysql_query($query_CitasHoy$xxx) or die(mysql_error());
$row_CitasHoy mysql_fetch_assoc($CitasHoy);
$totalRows_CitasHoy mysql_num_rows($CitasHoy); 
El update:
Código PHP:
$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_update"])) && ($_POST["MM_update"] == "form7")) {
  
$updateSQL sprintf("UPDATE Citas_tbl SET txtAcciones=%s WHERE idCita=%s",
                       
GetSQLValueString(nl2br($_POST['txtAcciones']), "text"),
                       
GetSQLValueString($_POST['idCita'], "int"));

  
mysql_select_db($database_xxx$xxx);
  
$Result1 mysql_query($updateSQL$xxx) or die(mysql_error());

  
$updateGoTo "#citasDiv";
  if (isset(
$_SERVER['QUERY_STRING']))
  
header(sprintf("Location: %s"$updateGoTo));

La llamada a la ventana modal:
Código HTML:
<td align="center" valign="middle" style="padding:5px;font-size:20px"><span style="cursor:pointer" onclick="javascript:mostrarVentana4(<?php echo $row_CitasHoy['idCita']; ?>);"><?php echo ObtenerEstadoCita($row_CitasHoy['txtAcciones']); ?></span></td> 
La ventana modal que contiene el form para el update:
Código Javascript:
Ver original
  1. <script>
  2.         function mostrarVentana4(idCita)
  3.         {
  4.             var ventana4 = document.getElementById('miVentana4');
  5.             ventana4.style.marginTop = "150px";
  6.             ventana4.style.left = ((document.body.clientWidth-300) / 2) +  "px";
  7.             ventana4.style.display = 'block';
  8.             document.getElementById("estadoCita").value = idCita;
  9.         }
  10.         function cerrarVentana4()
  11.         {
  12.             var ventana4 = document.getElementById('miVentana4');
  13.             ventana4.style.display = 'none';
  14.         }
  15. </script>
El form de la ventana modal:
Código HTML:
<form action="<?php echo $editFormAction; ?>" method="post" name="form7" id="form7">
	<table width="100%">
		<tr valign="baseline">
			<td>
				<input name="txtAcciones" type="radio" value="0" checked="checked" style="float:left" onclick="form7.submit()"><p style="float:left;color:#000">Pendiente</p>
			</td>
			<td>
				<input name="txtAcciones" type="radio" value="1" style="float:left" onclick="form7.submit()"><p style="float:left;color:#090">Confirmar</p>
			</td>
		</tr>
		<tr valign="baseline">
			<td>
				<input name="txtAcciones" type="radio" value="2" style="float:left" onclick="form7.submit()"><p style="float:left;color:#B05C00">No acudi&oacute;</p>
			</td>
			<td>
				<input name="txtAcciones" type="radio" value="3" style="float:left" onclick="form7.submit()"><p style="float:left;color:#F00">Cancelar</p>
			</td>
		</tr>
		<tr valign="baseline">
			<td align="center">
				<input name="txtAcciones" type="radio" value="4" style="float:left" onclick="javascript:eliminarCita(<?php echo $row_CitasHoy['idCita']; ?>)"><p style="float:left;color:#000">Eliminar cita</p>
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr valign="baseline" align="right">
			<td width="100%" valign="middle" nowrap="nowrap">
                <input type="button" value="Cerrar" onclick="javascript:cerrarVentana4();" style="cursor:pointer" class="button" />
            </td>
		</tr>
        <input type="hidden" id = "estadoCita" name = "idCita" />
        <input type="hidden" name="MM_update" value="form7" />
	</table>
</form> 
El script eliminarCita:
Código Javascript:
Ver original
  1. function eliminarCita(idCita) {
  2.         window.location = "elim_cita.php?elimCita="+idCita;
  3. }

En la página que elimina la cita
El delete:
Código PHP:
$eliminar $_POST['elimCita'];
if ((isset(
$_POST['elimCita'])) && ($_POST['elimCita'] != "")) {
  
$deleteSQL sprintf("DELETE FROM Citas_tbl WHERE idCita=%s",
                       
GetSQLValueString($eliminar"int"));

  
mysql_select_db($database_xxx$xxx);
  
$Result1 mysql_query($deleteSQL$xxx) or die(mysql_error());

________________________________

Guau, eso es todo creo.
Yo sigo dándole vueltas mientras copio y sigo sin verlo.

Gracias solamente por la atención bro.
Gracias

Última edición por raulgranadosraul; 15/02/2014 a las 21:04 Razón: Ordenar
  #15 (permalink)  
Antiguo 15/02/2014, 21:07
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Me gustaría saber si la llamada a la función la haces en el alcance del SELECT que realizas y del que obtienes dicho dato. Haz una impresión del dato que estás pasando antes de hacer la llamada a la función, si no se imprime, es porque o no está dentro del alcance o no existe el dato (quizá porque la consulta no arrojó resultados).
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #16 (permalink)  
Antiguo 15/02/2014, 21:24
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Me gustaría saber si la llamada a la función la haces en el alcance del SELECT que realizas y del que obtienes dicho dato. Haz una impresión del dato que estás pasando antes de hacer la llamada a la función, si no se imprime, es porque o no está dentro del alcance o no existe el dato (quizá porque la consulta no arrojó resultados).
No está dentro de seleect. No tengo select para los type="radio"
  #17 (permalink)  
Antiguo 15/02/2014, 21:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

¿Y cómo le vas a asignar el dato entonces?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #18 (permalink)  
Antiguo 15/02/2014, 21:39
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
¿Y cómo le vas a asignar el dato entonces?
quiza no entendí la pregunta!!!


Por ejemplo en una lista desplegable de otro form tiene el select asi:
Código HTML:
 <select name="Clientes" id="Clientes" autofocus="autofocus" class="button_cita">
  <option value="0">--Seleccionar--</option>
  <option value="0"></option>
	          <?php
				do {  
				?>
	          <option value="<?php echo $row_Desplegable_clientes['idCliente']?>" <?php if (!(strcmp($row_Desplegable_clientes['idCliente'], ""))) {echo "SELECTED";} ?>><?php echo $row_Desplegable_clientes['txtApellidos']; ?>, <?php echo $row_Desplegable_clientes['txtNombre']?></option>
	          <?php
} while ($row_Desplegable_clientes = mysql_fetch_assoc($Desplegable_clientes));
  $rows = mysql_num_rows($Desplegable_clientes);
  if($rows > 0) {
      mysql_data_seek($Desplegable_clientes, 0);
	  $row_Desplegable_clientes = mysql_fetch_assoc($Desplegable_clientes);
  }
?>
            </select> 
Pero en las opciones de radio buton no lo tengo, tengo esto:
Código HTML:
<form action="<?php echo $editFormAction; ?>" method="post" name="form7" id="form7">
	<table width="100%">
		<tr valign="baseline">
			<td>
				<input name="txtAcciones" type="radio" value="0" checked="checked" style="float:left" onclick="form7.submit()"><p style="float:left;color:#000">Pendiente</p>
			</td>
			<td>
				<input name="txtAcciones" type="radio" value="1" style="float:left" onclick="form7.submit()"><p style="float:left;color:#090">Confirmar</p>
			</td>
		</tr>
		<tr valign="baseline">
			<td>
				<input name="txtAcciones" type="radio" value="2" style="float:left" onclick="form7.submit()"><p style="float:left;color:#B05C00">No acudi&oacute;</p>
			</td>
			<td>
				<input name="txtAcciones" type="radio" value="3" style="float:left" onclick="form7.submit()"><p style="float:left;color:#F00">Cancelar</p>
			</td>
		</tr>
		<tr valign="baseline">
			<td align="center">
				<input name="txtAcciones" type="radio" value="4" style="float:left" onclick="javascript:eliminarCita(<?php echo $row_CitasHoy['idCita']; ?>)"><p style="float:left;color:#000">Eliminar cita</p>
			</td>
			<td>&nbsp;</td>
		</tr>
		<tr valign="baseline" align="right">
			<td width="100%" valign="middle" nowrap="nowrap">
                <input type="button" value="Cerrar" onclick="javascript:cerrarVentana4();" style="cursor:pointer" class="button" />
            </td>
		</tr>
        <input type="hidden" id = "estadoCita" name = "idCita" />
        <input type="hidden" name="MM_update" value="form7" />
	</table>
</form> 
Es correcto ¿no?
El resto de input radio de ese form funcionan correctamente sin error ninguno.

Última edición por raulgranadosraul; 15/02/2014 a las 21:46
  #19 (permalink)  
Antiguo 15/02/2014, 21:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Ojo, me estaba refiriendo a la consulta SQL en donde haces un SELECT o selección de datos, no me refería al elemento <select>.

A lo que iba es si $row_CitasHoy['idCita'] está dentro del alcance de ese SELECT (la consulta SQL) para que así puedas asignar dicho valor en la llamada a la función.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #20 (permalink)  
Antiguo 15/02/2014, 21:57
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Ojo, me estaba refiriendo a la consulta SQL en donde haces un SELECT o selección de datos, no me refería al elemento <select>.

A lo que iba es si $row_CitasHoy['idCita'] está dentro del alcance de ese SELECT (la consulta SQL) para que así puedas asignar dicho valor en la llamada a la función.
Si si, existe, claro.
El el mismo que uso para todos los form y para otras cosas. Si existe si. No hay duda
  #21 (permalink)  
Antiguo 15/02/2014, 22:07
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Imprime el valor de esa variable antes de ponerlo en el checkbox para ver si se muestra el dato y descartar algún problema con el alcance de la selección de datos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #22 (permalink)  
Antiguo 16/02/2014, 08:10
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Imprime el valor de esa variable antes de ponerlo en el checkbox para ver si se muestra el dato y descartar algún problema con el alcance de la selección de datos.
La he mostrado en la pantalla modal primera, la que recoge el valor inicialmente.
Me funciona perfecto. Solo he cambiado este input
Código HTML:
<input type="hidden" id ="estadoCita" name ="idCita" /> 
por un type="text"
Código HTML:
<input type="text" id ="estadoCita" name ="idCita" /> 
....y me recoge bien el id de cada cita y me hace los update que están en la misma ventana modal. El problema es que desde ese "radio" le tengo que enviar la variable idCita, que la he recogido ya en la modal.

Y eso es justo lo que no consigo, enviarla directamente a la pagina
/eliminar_cliente.php?loquesea=idCita

o aliminarlo desde la misma modal enviando el parámetro a otra función que haría el trabajo. Es esta
Código Javascript:
Ver original
  1. function eliminarCita(idCita) {
  2.         window.location = "elim_cita.php?elimCita="+idCita;
  3. }

?????
  #23 (permalink)  
Antiguo 16/02/2014, 13:05
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

Si el dato no llega es porque no lo estás enviando correctamente. A lo que me refería en las preguntas que te hice es a esto:

Código PHP:
Ver original
  1. <?php
  2. $query = mysql_query("SELECT * FROM tabla");
  3.  
  4. if (mysql_num_rows($query)){
  5.     $row = mysql_fetch_array($query);
  6. ?>
  7.     <input type = "checkbox" onclick = "eliminar('<?=$row["idCita"]?>')" /> Eliminar
  8. <?php
  9. }
  10. ?>

Es solo un ejemplo, pero la idea es que lo hagas así, pues de esa forma va a funcionar.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #24 (permalink)  
Antiguo 16/02/2014, 13:17
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 8 meses
Puntos: 1
Respuesta: Problema con formulario en ventana modal

Cita:
Iniciado por Alexis88 Ver Mensaje
Si el dato no llega es porque no lo estás enviando correctamente. A lo que me refería en las preguntas que te hice es a esto:

Código PHP:
Ver original
  1. <?php
  2. $query = mysql_query("SELECT * FROM tabla");
  3.  
  4. if (mysql_num_rows($query)){
  5.     $row = mysql_fetch_array($query);
  6. ?>
  7.     <input type = "checkbox" onclick = "eliminar('<?=$row["idCita"]?>')" /> Eliminar
  8. <?php
  9. }
  10. ?>

Es solo un ejemplo, pero la idea es que lo hagas así, pues de esa forma va a funcionar.
Como me dices es como lo tengo... de la misma manera
Código HTML:
<input name="txtAcciones" type="radio" value="4" style="float:left" onclick="eliminarCita('<?php echo $row_CitasHoy["idCita"] ?>')"><p style="float:left;color:#FFF">Eliminar </p> 
Tambien lo he probado sin el echo y con <?= y nada. No se elimina
  #25 (permalink)  
Antiguo 16/02/2014, 13:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Problema con formulario en ventana modal

¿Puedes poner el código que has escrito equivalente al ejemplo que acabo de poner?
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: formulario, funcion, javascript, modal, variables, ventana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:12.