Autor
|
Tema: PHP y SQL Problemas para hacer un peque~o formulario (Leído 5,174 veces)
|
pritguy
Desconectado
Mensajes: 9
|
estoy tratando se hacer un peque~O formulario que se deposite la data en mi hosting y no me sale alguien me puede ayudar? <?php $bd=mysql_connect("localhost","jerbix_base","aon") or die ("No puedo connectarme a base de datos"); mysql_select_db("jerbix_base");
$opt=$HTTP_GET_VARS["OPT"];
if ($opt==1)
{ $nombre=$HTTP_GET_VARS["nombre"]; $email=$HTTP_GET_VARS["email"]; $sql="insert into id_jerbix_base (nombre, email) values ('".$nombre."','".$email."'); $res=mysql_query($sql,$bd) or die (mysql_error()); ?>
<html>
<title>formulario</title>
<script language="javascript">
function verifica() { if (f.email.value=="") { alert ("por favor ingrese su email"); return; } f.opt.value=1 f.submit(); }
</script> <body>
<form name="f"> <input type="hidden" name="opt"> <table width="200" border="0"> <tr> <td width="63">Nombre</td> <td width="121"><form name="nombre" method="post" action=""> <label> <input type="text" name="nombre" id="nombre" /> </label> </form></td> </tr> <tr> <td>Email</td> <td><form name="email" method="post" action=""> <label> <input type="text" name="email" id="email" /> </label> </form></td> </tr> </table> <table width="200" border="0"> <tr> <td><form name="form3" method="post" action=""> <label> <input type="submit" name="submit" value="Submit" onclick=verifica() /> /> </label> </form></td> </tr> </table> </form> </body> </html> |
|
|
« Última modificación: 5 Mayo 2009, 07:58 am por pritguy »
|
En línea
|
|
|
|
luiggy2
Desconectado
Mensajes: 439
¡ Hello word ! XD
|
<?php $bd=mysql_connect("localhost","jerbix_base","aon") or die ("No puedo connectarme a base de datos"); $opt=$HTTP_GET_VARS["OPT"]; if ($opt==1) { $nombre=$HTTP_GET_VARS["nombre"]; $email=$HTTP_GET_VARS["email"]; $sql="insert into id_jerbix_base (nombre, email) values ('".$nombre."','".$email."')"; // FALTABAN estas comillas ?> <html> <title>formulario</title> <script language="javascript"> function verifica() { if (f.email.value=="") { alert ("por favor ingrese su email"); return; } f.opt.value=1 f.submit(); } </script> <body> <form name="f"> <input type="hidden" name="opt"> <table width="200" border="0"> <tr> <td width="63">Nombre</td> <td width="121"><form name="nombre" method="post" action=""> <label> <input type="text" name="nombre" id="nombre" /> </label> </form></td> </tr> <tr> <td>Email</td> <td><form name="email" method="post" action=""> <label> <input type="text" name="email" id="email" /> </label> </form></td> </tr> </table> <table width="200" border="0"> <tr> <td><form name="form3" method="post" action=""> <label> <input type="submit" name="submit" value="Submit" onclick=verifica() /> /> </label> </form></td> </tr> </table> </form> </body> </html>
No crees que así se lee mejor ??? respecto a tu pregunta: Te faltan unas comillas al principio (está en el código corregidas). Yo te recomendaría que cerraras la conexión al acabar mysql_close() A tu html le sobra un /> aquí: <input type="submit" name="submit" value="Submit" onclick=verifica() /> /> El resto no te puedo decir, ya que javascript no se. También he cambiado algo más por ahí. Saludos!
|
|
« Última modificación: 5 Mayo 2009, 16:01 pm por luiggy2 »
|
En línea
|
" Las grandes ideas suelen salir la mayoría de veces de grandes estupideces "
|
|
|
#!drvy
|
Tu codigo es un desastre total <?php $bd=mysql_connect("localhost","usuario","password") or die ("No puedo connectarme a base de datos"); if (isset($_POST['opt'])) { } ?> <html> <title>Forumario</title> <script language="javascript"> function verifica() { if (f.email.value=="") { alert ("por favor ingrese su email"); return; } f.opt.value=1 f.submit(); } </script> <body> <form name="f" action="" method="post"> <table width="200" border="0"> <tr><td width="63">Nombre: <br><input type="text" name="nombre"><input type="hidden" name="opt" /></td></tr> <tr><td width="63">E-mail: <br><input type="text" name="email" /></td></tr> <tr><td width="63"><input type="button" value="Enviar" onclick="verifica()" /></td></tr> </table> </form> </body> </html>
· Utilizamos isset para comprobar si la variable opt esta definida...de este modo te ahorras el error de que no es definida... · Utilizamos $_POST en caso de envio por post y $_GET en caso de envio por url.. · SIEMPRE PERO QUE SIEMPRE LIMPIAMOS LAS VARIABLES ANTES DE UTILIZARLAS PARA BASE DE DATOS O IMPRIMIRLAS EN LA PAGINA · Siempre cerramos el IF con } antes de cerrar PHP porque sino salta error No te hacen falta tantos forms...con uno te basta... Saludos
|
|
« Última modificación: 5 Mayo 2009, 16:46 pm por BadStupidMonkey »
|
En línea
|
|
|
|
pritguy
Desconectado
Mensajes: 9
|
Gracias BadStupidMonkey y luiggy2 por la ayuda. ahora tengo otro problemita jajaa . Cuando entro para probarlo no se connecta al MySQL . Verifique username y Pass que podria ser ademas? EL codigo lo tengo exactamente como me lo envio Badstupidmonkey . Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /home/content/j/e/r/jerbix/html/index3.php on line 3
|
|
|
En línea
|
|
|
|
#!drvy
|
Probablemente el servidor mysql no este en servidor local o no este instalado... si es un hosting (osea no lo estas testeando en tu propia pc) lo mas probable es que tengas que cambiar localhost por el servidor que te dan en el hosting. Otra cosa es que dicho hosting no tenga soporte para mysql Saludos
|
|
|
En línea
|
|
|
|
pritguy
Desconectado
Mensajes: 9
|
GRACIAS se me paso esa lol . Ya me salio!!! Gracias!
|
|
|
En línea
|
|
|
|
pritguy
Desconectado
Mensajes: 9
|
Solo el email y el nombre son los que llegan a mi base de datos que podria ser? el problema mio es el formulario solo llega a mi base de datos el campo de email y de nombre. GRACIAS <?php $bd=mysql_connect("host","jmyname","my pass") or die ("No puedo connectarme a base de datos"); if (isset($_POST['opt'])) { mysql_query("INSERT INTO jerbix_lead (nombre, email, telefono, direccion, asunto) VALUES ('".$nombre."', '".$email."', '".$telefono."','".$direccion."','".$asunto."')") or die (mysql_error()); } ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <style type="text/css"> <!-- body { font: 100% Verdana, Arial, Helvetica, sans-serif; background: #666666; margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */ padding: 0; text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */ color: #000000; } .twoColFixLtHdr #container { width: 780px; /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */ background: #FFFFFF; margin: 0 auto; /* the auto margins (in conjunction with a width) center the page */ border: 1px solid #000000; text-align: left; /* this overrides the text-align: center on the body element. */ } .twoColFixLtHdr #header { background: #DDDDDD; padding: 0 10px 0 20px; /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */ } .twoColFixLtHdr #header h1 { margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */ padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */ } .twoColFixLtHdr #sidebar1 { float: left; /* since this element is floated, a width must be given */ width: 200px; /* the actual width of this div, in standards-compliant browsers, or standards mode in Internet Explorer will include the padding and border in addition to the width */ background: #EBEBEB; /* the background color will be displayed for the length of the content in the column, but no further */ padding: 15px 10px 15px 20px; } .twoColFixLtHdr #mainContent { margin: 0 0 0 250px; /* the left margin on this div element creates the column down the left side of the page - no matter how much content the sidebar1 div contains, the column space will remain. You can remove this margin if you want the #mainContent div's text to fill the #sidebar1 space when the content in #sidebar1 ends. */ padding: 0 20px; /* remember that padding is the space inside the div box and margin is the space outside the div box */ text-align: left; } .twoColFixLtHdr #footer { padding: 0 10px 0 20px; /* this padding matches the left alignment of the elements in the divs that appear above it. */ background:#DDDDDD; } .twoColFixLtHdr #footer p { margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */ padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */ } .fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */ float: right; margin-left: 8px; } .fltlft { /* this class can be used to float an element left in your page */ float: left; margin-right: 8px; } .clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */ clear:both; height:0; font-size: 1px; line-height: 0px; } --> </style><!--[if IE 5]> <style type="text/css"> /* place css box model fixes for IE 5* in this conditional comment */ .twoColFixLtHdr #sidebar1 { width: 230px; } </style> <![endif]--><!--[if IE]> <style type="text/css"> /* place css fixes for all versions of IE in this conditional comment */ .twoColFixLtHdr #sidebar1 { padding-top: 30px; } .twoColFixLtHdr #mainContent { zoom: 1; } /* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */ </style> <![endif]--></head> <body class="twoColFixLtHdr"> <div id="container"> <div id="header"> <h1>Reparamos Desktops y Laptops</h1> <!-- end #header --></div> <div id="sidebar1"> <!-- end #sidebar1 --> </div> <div id="mainContent"> <h1>Solicitud de Servicios</h1> <script language="javascript"> function verifica() { if (f.email.value=="") { alert ("por favor ingrese su email"); return; } f.opt.value=1 f.submit(); } </script> <form name="f" action="" method="post"> <table width="200" border="0"> <caption> Formulario </caption> <tr> <tr><td width="63">Nombre: <br><input type="text" name="nombre"><input type="hidden" name="opt" /></td></tr> <tr><td width="63">Phone Number: <br><input type="text" name="telefono"><input type="hidden" name="opt"/></td></tr> <tr><td width="63">Direccion: <br><input type="text" name="dirrecion"><input type="hidden" name="opt" /></td></tr> <tr><td width="63">E-mail: <br><input type="text" name="email"><input type="hidden" name="opt"/></td></tr> <tr><td width="63">Asunto <br><textarea name="asunto" rows="4"></textarea> <input type="hidden" name="opt" /></td></tr><tr><td width="63"><input type="button" value="Enviar" onClick="verifica()" /></td></tr></tr> </table> </form> <!-- end #mainContent --></div> <!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats --><br class="clearfloat" /> <div id="footer"> <p>Footer</p> <!-- end #footer --></div> <!-- end #container --></div> </body> </html>
|
|
|
En línea
|
|
|
|
#!drvy
|
No cambiaste el nombre de las variables al principio aqui:
Ademas si te fijas aqui:
estas recogiendo la variable POST direccion con dos c... y en el formulario: <input type="text" name="dirrecion">
la tienes con dos r xD Bueno...he de decir que no estas utilizando REGISTER_GLOBALS ati te ayudaría mucho pero supone ser un problema grave de seguridad por lo tanto no te lo recomiendo... Te dejo el codigo... <?php $bd=mysql_connect("host","jmyname","my pass") or die ("No puedo connectarme a base de datos"); if (isset($_POST['opt'])) { mysql_query("INSERT INTO jerbix_lead (nombre, email, telefono, direccion, asunto) VALUES ('".$nombre."', '".$email."', '".$telefono."','".$direccion."','".$asunto."')") or die (mysql_error()); } ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <style type="text/css"> <!-- body { font: 100% Verdana, Arial, Helvetica, sans-serif; background: #666666; margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */ padding: 0; text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */ color: #000000; } .twoColFixLtHdr #container { width: 780px; /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */ background: #FFFFFF; margin: 0 auto; /* the auto margins (in conjunction with a width) center the page */ border: 1px solid #000000; text-align: left; /* this overrides the text-align: center on the body element. */ } .twoColFixLtHdr #header { background: #DDDDDD; padding: 0 10px 0 20px; /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */ } .twoColFixLtHdr #header h1 { margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */ padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */ } .twoColFixLtHdr #sidebar1 { float: left; /* since this element is floated, a width must be given */ width: 200px; /* the actual width of this div, in standards-compliant browsers, or standards mode in Internet Explorer will include the padding and border in addition to the width */ background: #EBEBEB; /* the background color will be displayed for the length of the content in the column, but no further */ padding: 15px 10px 15px 20px; } .twoColFixLtHdr #mainContent { margin: 0 0 0 250px; /* the left margin on this div element creates the column down the left side of the page - no matter how much content the sidebar1 div contains, the column space will remain. You can remove this margin if you want the #mainContent div's text to fill the #sidebar1 space when the content in #sidebar1 ends. */ padding: 0 20px; /* remember that padding is the space inside the div box and margin is the space outside the div box */ text-align: left; } .twoColFixLtHdr #footer { padding: 0 10px 0 20px; /* this padding matches the left alignment of the elements in the divs that appear above it. */ background:#DDDDDD; } .twoColFixLtHdr #footer p { margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */ padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */ } .fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */ float: right; margin-left: 8px; } .fltlft { /* this class can be used to float an element left in your page */ float: left; margin-right: 8px; } .clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */ clear:both; height:0; font-size: 1px; line-height: 0px; } --> </style><!--[if IE 5]> <style type="text/css"> /* place css box model fixes for IE 5* in this conditional comment */ .twoColFixLtHdr #sidebar1 { width: 230px; } </style> <![endif]--><!--[if IE]> <style type="text/css"> /* place css fixes for all versions of IE in this conditional comment */ .twoColFixLtHdr #sidebar1 { padding-top: 30px; } .twoColFixLtHdr #mainContent { zoom: 1; } /* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */ </style> <![endif]--></head> <body class="twoColFixLtHdr"> <div id="container"> <div id="header"> <h1>Reparamos Desktops y Laptops</h1> <!-- end #header --></div> <div id="sidebar1"> <!-- end #sidebar1 --> </div> <div id="mainContent"> <h1>Solicitud de Servicios</h1> <script language="javascript"> function verifica() { if (f.email.value=="") { alert ("por favor ingrese su email"); return; } f.opt.value=1 f.submit(); } </script> <form name="f" action="" method="post"> <table width="200" border="0"> <caption> Formulario </caption> <tr> <tr><td width="63">Nombre: <br><input type="text" name="nombre"><input type="hidden" name="opt" /></td></tr> <tr><td width="63">Phone Number: <br><input type="text" name="telefono"></td></tr> <tr><td width="63">Direccion: <br><input type="text" name="direccion"></td></tr> <tr><td width="63">E-mail: <br><input type="text" name="email"></td></tr> <tr><td width="63">Asunto <br><textarea name="asunto" rows="4"></textarea> </td></tr><tr><td width="63"><input type="button" value="Enviar" onClick="verifica()" /></td></tr></tr> </table> </form> <!-- end #mainContent --></div> <!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats --><br class="clearfloat" /> <div id="footer"> <p>Footer</p> <!-- end #footer --></div> <!-- end #container --></div> </body> </html>
Saludos
|
|
|
En línea
|
|
|
|
pritguy
Desconectado
Mensajes: 9
|
ok ahroa tengo una duda! Ya Me esta funcionando pero tengo una pregunta si por ejemplo quisiera que se mandara un aviso a mi email ? cuando se envia el formulario. Otra cosa es como yo puedo decirle al usuario que lo que envio fue enviado correctamente y lo envia para la pagina de inicio? Busque esto por google pero no me sale . header ("Location: mensajes.php?msg=exito"); } else { header ("Location: mensajes.php?msg=error"); }
|
|
|
En línea
|
|
|
|
#!drvy
|
Vale.. lo primero es ver si tu hosting soporta la función "mail" porque si no la soporta difícil lo vas a tener Otra cosa..te recomiendo que te leas algún manual de PHP de los de hoy en día... porque con copy&paste no se hace nada.... <?php if(isset($_POST['opt'])) { // Conexion Base de datos // Obtener datos // Crear Registro mysql_query("INSERT INTO contact (nombre, email, telefono, direccion, asunto) VALUES ('".$nombre."', '".$email."', '".$telefono."','".$direccion."','".$asunto."')") or die (mysql_error()); // Terminar conexion a base de datos // Comprobar si el servidor soporta funcion mail // Enviar email $hacia = "bad.stupid.monkey@gmail.com"; $asunto = "Nuevo Registro"; $mensaje = "Un nuevo registro fue añadido: <br> Nombre: $nombre <br> Email: $email <br> Telefono: $telefono <br> Direccion: $direccion <br> Asunto: $asunto"; if(mail($to, $subject, $message)) { echo "Su mensaje fue enviado. Gracias 1"; } else {echo "Error en el envio";} } else { echo "Su mensaje fue enviado. Gracias 2";} } ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <style type="text/css"> <!-- body { font: 100% Verdana, Arial, Helvetica, sans-serif; background: #666666; margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */ padding: 0; text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */ color: #000000; } .twoColFixLtHdr #container { width: 780px; /* using 20px less than a full 800px width allows for browser chrome and avoids a horizontal scroll bar */ background: #FFFFFF; margin: 0 auto; /* the auto margins (in conjunction with a width) center the page */ border: 1px solid #000000; text-align: left; /* this overrides the text-align: center on the body element. */ } .twoColFixLtHdr #header { background: #DDDDDD; padding: 0 10px 0 20px; /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */ } .twoColFixLtHdr #header h1 { margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */ padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */ } .twoColFixLtHdr #sidebar1 { float: left; /* since this element is floated, a width must be given */ width: 200px; /* the actual width of this div, in standards-compliant browsers, or standards mode in Internet Explorer will include the padding and border in addition to the width */ background: #EBEBEB; /* the background color will be displayed for the length of the content in the column, but no further */ padding: 15px 10px 15px 20px; } .twoColFixLtHdr #mainContent { margin: 0 0 0 250px; /* the left margin on this div element creates the column down the left side of the page - no matter how much content the sidebar1 div contains, the column space will remain. You can remove this margin if you want the #mainContent div's text to fill the #sidebar1 space when the content in #sidebar1 ends. */ padding: 0 20px; /* remember that padding is the space inside the div box and margin is the space outside the div box */ text-align: left; } .twoColFixLtHdr #footer { padding: 0 10px 0 20px; /* this padding matches the left alignment of the elements in the divs that appear above it. */ background:#DDDDDD; } .twoColFixLtHdr #footer p { margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */ padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */ } .fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */ float: right; margin-left: 8px; } .fltlft { /* this class can be used to float an element left in your page */ float: left; margin-right: 8px; } .clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */ clear:both; height:0; font-size: 1px; line-height: 0px; } --> </style><!--[if IE 5]> <style type="text/css"> /* place css box model fixes for IE 5* in this conditional comment */ .twoColFixLtHdr #sidebar1 { width: 230px; } </style> <![endif]--><!--[if IE]> <style type="text/css"> /* place css fixes for all versions of IE in this conditional comment */ .twoColFixLtHdr #sidebar1 { padding-top: 30px; } .twoColFixLtHdr #mainContent { zoom: 1; } /* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */ </style> <![endif]--></head> <body class="twoColFixLtHdr"> <div id="container"> <div id="header"> <h1>Reparamos Desktops y Laptops</h1> <!-- end #header --></div> <div id="sidebar1"> <!-- end #sidebar1 --> </div> <div id="mainContent"> <h1>Solicitud de Servicios</h1> <script language="javascript"> function verifica() { if (f.email.value=="") { alert ("Por favor ingrese su email"); return; } f.opt.value=1 f.submit(); } </script> <form name="f" action="" method="post"> <table width="200" border="0"> <caption> Formulario </caption> <tr> <tr><td width="63">Nombre: <br><input type="text" name="nombre"><input type="hidden" name="opt" /></td></tr> <tr><td width="63">Phone Number: <br><input type="text" name="telefono"></td></tr> <tr><td width="63">Direccion: <br><input type="text" name="direccion"></td></tr> <tr><td width="63">E-mail: <br><input type="text" name="email"></td></tr> <tr><td width="63">Asunto <br><textarea name="asunto" rows="4"></textarea> </td></tr><tr><td width="63"><input type="button" value="Enviar" onClick="verifica()" /></td></tr></tr> </table> </form> <!-- end #mainContent --></div> <!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats --><br class="clearfloat" /> <div id="footer"> <p>Footer</p> <!-- end #footer --></div> <!-- end #container --></div> </body> </html>
Intenta comprenderlo y no le hagas copy&paste directamente. Saludos
|
|
|
En línea
|
|
|
|
|
|