Como enviar los datos a la Base de Datos

Iniciado por giagete, 3 Septiembre 2007, 19:53 PM

0 Miembros y 1 Visitante están viendo este tema.

giagete

Hola, soy un noob en este mundo y estoy intentando crear una web, y quería crear un formulario para que los datos que recoja fueran directamente a la Base de Datos, eso es podible? Como crearía el formulario para que conectaran? Por favor ayudarme, esto escapa de mis conocimientos. Si podeis decirme una cosa lo mas sencilla psible, luego yo la decoro y si es podible la mejoro...

Gracias por adelantado

Agente Naranja

Hola, esto lo haces con algún lenguaje de servidor, el más usado (por ser gratis) es PHP, y lo de enviar los datos a un archivo PHP lo puedes hacer desde las etiquetas HTML del formulario, así:

Código (html4strict) [Seleccionar]
<form method="POST" action="archivo.php">

Donde METHOD puede ser, o bien GET, o bien POST, ya según lo que necesites, aunque lo normal es POST. Y luego ACTION es el archivo PHP al que vas a mandar los datos, que ya se encargará de hacer lo que sea con ellos, bien sea meterlos en una base de datos, bien sea enviarlos por email, lo que tu le pongas.

Si te interesa meterlos en una base de datos, y si de base de datos usas mysql (tambien muy usada, por ser gratuita) tu primer paso sería aprender algo de PHP; y luego leerte sobre las funciones PHP para bases de datos. He dicho mysql_connect, mysql_pconnect, mysql_select_db, mysql_query, mysql_error.

Un saludo.

giagete

Haber, el formularo lo se hacer.. es más, quie te posteo uno que tengo.. lo que no se hacer es conectarlo a la base de datos, imagino que seran una o dos líneas indicando la base de datos, el nombre de usuario, la contraseña, la tabla, etc...

Mira, este es mi formulario:


<form action="engranes.php" method="post">
<table border="0" align="center">
  <tr>
    <td colspan="2"><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Contacto</font></div></td>
    </tr>
  <tr>
    <td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Nombre:</font></strong></div></td>
    <td><input name="nombre" type="text">&nbsp;</td>
  </tr>
  <tr>
    <td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">E-Mail:</font></strong></div></td>
    <td><input name="email" type="text">&nbsp;</td>
  </tr>
  <tr>
    <td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">URL:</font></strong></div></td>
    <td><input name="url" type="text">&nbsp;</td>
  </tr>
  <tr>
    <td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Asunto:</font></strong></div></td>
    <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">          <em>
    <input name="asunto" type="text">
&nbsp;</em></font></div></td>
  </tr>
  <tr>
    <td><div align="right"><strong><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Texto Completo:</font></strong></div></td>
    <td rowspan="2"><textarea name="texto" cols="25" rows="6"></textarea>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><input type="submit" name="enviar" value="Enviar">
      <input type="reset" name="borrar" value="Borrar"></td>
  </tr>
</table>
</form>&nbsp;</p>
</body>
</html>


Con esto seríais capaz de explicarme como conectarlo a la BD?

Agradezcom mucho vuestra ayuda!

Spider-Net

Pues eso que quieres hacerno es complicado, a ver si no me equivoco sería algo así:

Suponiendo que tienes una base de datos, con una tabla creada con los campos:
nombre, email, url, asunto, texto.

El archivo engranes.php sería tal que así:

Código (php) [Seleccionar]
<?php
// 1.- RECOGIDA DE DATOS DEL FORMULARIO
$nombre=$_POST['nombre'];
$email=$_POST['email'];
$url=$_POST['url'];
$asunto=$_POST['asunto'];
$texto=$_POST['texto'];

// 2.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db="nombredeladb";
$db_login="tunombredeusuario";
$db_pswd="tupass";
$link mysql_connect("server.delabase.dedatos"$db_login$db_pswd);

// 3.- CONEXION A LA BASE DE DATOS
mysql_select_db($db $link);

// 4.- INSERCION DE DATOS
mysql_query ("INSERT INTO 
NOMBREDELATABLA (nombre, email, url, asunto, texto)
VALUES ('
$nombre','$email','$url','$asunto','$texto')");

print(
"Datos agregados a la base.");

mysql_close($link);


?>


Solo tienes que sustituir tu nombre de usuario y pass, el de la base de datos y tu server y por supuesto donde dice NOMBREDELATABLA pon el nombre de la tabla de tu base de datos.
Con eso no deberías de tener más problemas para insertar los datos en la base de datos, espero que te sea de ayuda ;)

Saludos

giagete

Muchas gracias, ahora lo pruebo.. y comento los resultados.


Me habeis ayudado mucho!

WHK

Ya veo esas inyecciones SQL y esos XSS  :rolleyes:
Ponle filtros UTF-8:

Código (php) [Seleccionar]
<?php
// 1.- RECOGIDA DE DATOS DEL FORMULARIO SIN FILTROS
$nombre_sf=$_POST['nombre'];
$email_sf=$_POST['email'];
$url_sf=$_POST['url'];
$asunto_sf=$_POST['asunto'];
$texto_sf=$_POST['texto'];
 
// 2.- Filtramos en UTF-8
$nombre htmlspecialchars("$nombre_sf"ENT_QUOTES);
$email htmlspecialchars("$email_sf"ENT_QUOTES);
$url htmlspecialchars("$url_sf"ENT_QUOTES);
$asunto htmlspecialchars("$asunto_sf"ENT_QUOTES);
$texto htmlspecialchars("$texto_sf"ENT_QUOTES);

// 3.- IDENTIFICACION nombre de la base, del usuario, clave y servidor
$db="nombredeladb";
$db_login="tunombredeusuario";
$db_pswd="tupass";
$link mysql_connect("server.delabase.dedatos"$db_login$db_pswd);
 
// 4.- CONEXION A LA BASE DE DATOS
mysql_select_db($db $link);
 
// 5.- INSERCION DE DATOS
mysql_query ("INSERT INTO 
NOMBREDELATABLA (nombre, email, url, asunto, texto)
VALUES ('
$nombre','$email','$url','$asunto','$texto')");
 
print(
"Datos agregados a la base.");
 
mysql_close($link); 
?>

giagete

#6
No es por molestar, pero los filtros UTF-8 para que sirven, estoy aprendiendo y me interesa todo... :P

Y tengo una pregunta al crear la tabla en la BD... creo una tabla que se llama "formulario" se supone que con 5 campos no?, los mismos que opciones hay en el formulario. Hasta ahí creo que va todo bien.

Luego a los campos les pongo el nombre de las opciones, "nombre" "url" "email"...

Pero lo demas nose que poner, ¿Que tipo? ¿Que valores, cotejamiento, atributos, nulo, preterminado, extra....?

Os agradeceria la ayuda

giagete

#7
Me he documentado un poco y os voy a enseñar lo que tengo: (ME da error, lo pongo abajo)

UN FORMULARIO SENCILLO
<form name="formulario" action="insertar_datos.php" method="post">
E-mail: <input type="text" name="email"><br>
Texto: <input type name="texto"><br>
<input type="submit" name="enviar" value="Enviar">
</form>


CONECTANDO BD (insertar_datos.php)
<?php

    
//Compruebo que ningún campo esté vacío y que todos los campos existan.
    
if(isset($_POST['titulo']) && !empty($_POST['titulo']) &&
    isset(
$_POST['contenido']) && !empty($_POST['contenido'])) {

        
// Si todo esta bien.

        
$link mysql_connect("*******","*****","******");
        
mysql_select_db("**********",$link);

        
// Se inserta todo en la Base de Datos
        
mysql_query("INSERT INTO formulario (titulo,contenido)
        VALUES ('
{$_POST['titulo']}','{$_POST['contenido']}')",$link);

        
// Compruebo que todo va perfectamente
        
$my_error mysql_error($link);

        if(!empty(
$my_error) {

            echo 
"Ha habido un error al insertar los valores. $my_error"

        } else {

            echo 
"Los datos han sido introducidos satisfactoriamente";

        }

    } else {

        echo 
"Error, no ha introducido todos los datos";

    }

?>


Parse error: syntax error, unexpected '{' in /home/virtual/sitio144456/www/user/insertar_datos.php on line 19

Me da este error, que fallo tiene..?

Ertai

Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Agente Naranja

Pues el error está, como dice Ertaí, en que te has comido un paréntesis.
Y lo de los filtros UTF, lo que hace es pasar las variables por un "encoder", o como se llame, una función que cambia todos los carácteres especiales (<,>,&...) y los convierte en HTML sencillo, para evitar algún posible crackeo a la base de datos.
Saludos.