Foros del Web » Creando para Internet » HTML »

[SOLUCIONADO] Problema con formulario dentro de iframe

Estas en el tema de Problema con formulario dentro de iframe en el foro de HTML en Foros del Web. Bueno, parece que ya casi tengo acabada la web a falta de esto. Dentro de un iframe abro una pagina con un formulario y al ...
  #1 (permalink)  
Antiguo 30/01/2013, 10:45
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Problema con formulario dentro de iframe

Bueno, parece que ya casi tengo acabada la web a falta de esto. Dentro de un iframe abro una pagina con un formulario y al darle al botón de enviar debe meter los datos en la base SQL, mostrar un mensaje dando las gracias y volver a cargar esa pagina.

Solo consigo hacer funcionar esto con la siguiente linea dentro del HEAD

Código:
<base href="http://www.personal.tk/8.php" target="contenido"></base>
Siendo 8.php la pagina con el formulario y contenido el nombre del iframe


El problema es que si meto esa linea me descuadra todos los formatos en la pagina 8

Alguna idea?


Gracias
  #2 (permalink)  
Antiguo 30/01/2013, 14:56
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Problema con formulario dentro de iframe

He avanzado algo con el tema, parece que el problema esta en lo siguiente, el código de mi formulario es este, el archivo insertar_firma introduce los datos en la base SQL

Código:
<form id="form1" name="form1" method="post" action="insertar_firma.php" target="contenido">

y el de mi botón es este

Código:
<input name="button" type="submit" id="button" onclick="MM_validateForm('Nombre','','R','Comentarios','','R');return document.MM_returnValue" value="Enviar" />

con la linea del post anterior quitada veo no se llegan a insertar los datos en la base, cuando pulso el boton me recarga la pagina principal dentro del iframe
  #3 (permalink)  
Antiguo 30/01/2013, 15:17
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Problema con formulario dentro de iframe

amigo @davidsuarez82
Entre lo que necesitás, tu primer código, y el segundo no parece haber relación alguna.

La lógica dice esto
Si tenés un iframe, es porque tenés una página que contiene el iframe, es decir
index.html
Código HTML:
Ver original
  1. </head>
  2. <iframe....></iframe>
  3. </body>
  4. </html>
ahora dentro del iframe se carga una página que contiene un form, entonces

Código HTML:
Ver original
  1. </head>
  2. <iframe src="actualizar_bd.php"></iframe>
  3. </body>
  4. </html>

Ahora, tu actualizar_bd.php
Código PHP:
Ver original
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. if(isset($_POST['procesar'])){
  7. // conecta a la bd
  8. // ejecuta un mysql
  9. // si el sql se ejecuta correctamente imprimís
  10. // aqui se presenta una duda, que página es la que hay que recargar, index.html ó la página del form
  11. //suponiendo que sea lo primero
  12. echo "
  13. <script>
  14. top.location.href = 'index.html';
  15. </script>
  16. ";
  17. }else{
  18. // escribís el form
  19. ?>
  20.  
  21. <form action="actualizar_bd.php">
  22. .....
  23. <input type="submit" name="procesar" value="actualizar" />
  24. </form>
  25.  
  26. <?php
  27. }
  28. ?>
  29. </body>
  30. </html>

Se entiende
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 30/01/2013, 15:48
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Problema con formulario dentro de iframe

Hola Emprear,

Voy a intentar explicarme mejor.

Tengo una pagina principal index.php que contiene un div con un menu y un div con el iframe dentro que es donde voy cambiando entre paginas (1.php, 2.php....formulario.php)

Esta ultima es la que contiene el formulario y mi problema es que si mantengo la linea de codigo de mi primer post me cambia los estilos de formulario.php por lo que se que se descuadra su contenido ademas esa pagina es muy alta y tengo definido el scroll en auto pero con esa linea de codigo el scroll no aparece.

Si quito esa linea de codigo, al dar al boton de enviar no inserta nada en la base SQL y dentro del iframe me carga el index.php


Espero haberme explicado mejor


Un saludo

-------------------------

Adjunto codigo completo de formulario.php

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<base href="http://www.personal.tk/" target="contenido"></base>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>La liamos! Nos Casamos!! - Deja tu huella</title>

<meta http-equiv="content-language" content="ES" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-style-type" content="text/css" />

<link href="style.css" rel="stylesheet" type="text/css">
<link href="images/vmenu.css" rel="stylesheet" type="text/css">

<style type="text/css">

#titulo * { font-family:"Comic Sans MS", cursive; font-size:32px; color:#FFF; line-height:normal; text-align:center; }

#titulo p { padding: 0 !important; }

#parrafo * {  font-family:"Comic Sans MS", cursive; font-size:16px; color:#FFF; line-height:normal; text-align:justify; }

#parrafo p { padding: 0 !important; }

</style>
<script type="text/javascript">
function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
} }
</script>
</head>

<body>
<div id="titulo"><p>Deja tu huella</p></div>
<div id="parrafo"><p>Que si, que esto cada vez está más visto pero que quieres, nos apetece que nos*enviéis*dedicatorias ñoñas, graciosas, de las que son por cumplir... vamos lo que sea!</p></div>
          
<div align="center">

<form id="form1" name="form1" method="post" action="insertar_firma.php" target="contenido">
      <table width="100%" border="0" cellspacing="3" cellpadding="2">
        <tr>
          <td colspan="3" align="left" style="font-family:'Comic Sans MS', cursive; font-size:16px; color:#FFF">Escribe todo lo que quieras, cuanto mas mejor</td>
        </tr>
        <tr>
          <td height="125" colspan="4" valign="top" align="left"><p>
            <textarea name="Comentarios" cols="110" rows="7" id="Comentarios"></textarea></p></td>
        </tr>
        <tr>
          <td colspan="3"align="left" style="font-family:'Comic Sans MS', cursive; font-size:16px; color:#FFF">Ahora dinos quien eres, no te escondas!</td>
        </tr>
        <tr>
          <td height="38" colspan="3" valign="top" align="left"><label for="Nombre"></label>
            <input name="Nombre" type="text" id="Nombre" size="40" maxlength="60" /></td>
        </tr>
        <tr>
          <td width="68%" align="left"><input name="button" type="submit" id="button" onclick="MM_validateForm('Nombre','','R','Comentarios','','R');return document.MM_returnValue" value="Enviar" /></td>
          <td width="20%" align="right">&nbsp;</td>
          <td width="12%">&nbsp;</td>
        </tr>
      </table>
      </form> 

</div>
   
<div align="center">

<?php
$conexion = mysql_connect('mysql.nixiweb.com','u933497375_david','E64680C025879'); //REALIZA LA CONEXION 
mysql_select_db("u933497375_boda",$conexion);//SELECCIONA LA BASE DE DATOS "USUARIOS"

$sql = "select * FROM Firmas ORDER BY `Fecha` DESC"; 
$result = mysql_query($sql,$conexion);//REALIZA LA CONSULTA

echo "<table width=\"100%\" border=\"1\" cellspacing=\"3\" cellpadding=\"2\">"; //EMPIEZA A CREAR LA TABLA CON LOS ENCABEZADOS DE TABLA
echo "<tr>";//<tr> CREA UNA NUEVA FILA
echo "<td style=\"width:160px; font-family:Comic Sans MS; font-size:16px\" align=\"center\" >FECHA</td>";//<td> CREA NUEVA COLUMNA
echo "<td style=\"width:190px; font-family:Comic Sans MS; font-size:16px\" align=\"center\">NOMBRE</td>";
echo "<td style=\"font-family:Comic Sans MS; font-size:16px\" align=\"center\">COMENTARIO</td>";
echo "</tr>";

$reg = mysql_fetch_array($result, MYSQL_NUM);//LA VARIABLE $REG GUARDA LOS REGISTROS DE LA CONSULTA REALIZADA
while($reg)
{
echo "<tr>";
echo "<td style=\"font-family:Comic Sans MS; color:#000000; font-size:14px\" align=\"center\">".$reg[0]."</td>";//EN CADA CELDA SE COLOCA EL CONTENIDO DE REG
echo "<td style=\"font-family:Comic Sans MS; color:#000000; font-size:14px\" align=\"center\">".$reg[1]."</td>";
echo "<td style=\"font-family:Comic Sans MS; color:#000000; font-size:14px\" align=\"justify\">".$reg[2]."</td>";
$reg = mysql_fetch_array($result, MYSQL_BOTH);
echo "</tr>";
}
echo "</table>";//FINALIZA LA TABLA
mysql_close($conexion);
?>

</div>   
   
                  
</body>
</html>
y de insertar_firma.php

Código:
<head>
<style type="text/css">
body {
	background-image: url(images/r_bg.jpg);
	background-repeat: repeat-x;
}
</style>
</head>

<body>

<?php   
//recibimos las variables enviadas por el formulario   
  
$Nombre=$_POST["Nombre"];   
$Comentarios=$_POST["Comentarios"];
   
//conectamos a la base  
$host = "xxxxxxxxxxxxxxx";   
$usuario = "xxxxxxxxxxxxxx";   
$clave = "xxxxxxxxxxxxxxx";  
$bd = "xxxxxxxxxxxxxx";  
$connect=mysql_connect ($host, $usuario, $clave);   
// seleccionamos la base   
mysql_select_db ( $bd, $connect );   
  
// definimos la consulta  
$query =    'INSERT INTO Firmas (Nombre, Texto)  
            VALUES (\''.$Nombre.'\',\''.$Comentarios.'\')';  

// hacemos la consulta  
mysql_query ($query, $connect) or die (mysql_error());  

$mensaje = "Gracias por escribirnos";
echo "<script>";
echo "alert('$mensaje');";  
echo "window.location = 'Deja-tu-huella/';";
echo "</script>";

?>

</body>

Última edición por davidsuarez82; 30/01/2013 a las 15:56 Razón: añadido codigo fuente
  #5 (permalink)  
Antiguo 30/01/2013, 16:39
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Problema con formulario dentro de iframe

Hola de nuevo emprear,

Lo he solucionado con tu código y me he ahorrado un archivo!

Muchisimas gracias!!
  #6 (permalink)  
Antiguo 30/01/2013, 20:15
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Problema con formulario dentro de iframe

Cita:
Iniciado por davidsuarez82 Ver Mensaje
Hola de nuevo emprear,

Lo he solucionado con tu código y me he ahorrado un archivo!

Muchisimas gracias!!
Menos mal, porque analizar eso último que pasaste iba a ser muy complicado.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: formulario, iframe
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 06:47.