Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Introducción de nuevos registros con PHP


Forma sencilla de introducir nuevos elementos en una tabla de base de datos. Realizamos un Insert con PHP.


01/1/70 - Una vez creada la tabla clientes en nuestra base de datos ejemplo, el paso siguiente sea llenarla con registros. Para ello vamos a ver este artículo, en el que se reciben datos desde un formulario y luego se insertan con PHP en la base de datos, en la tabla adecuada.

Los datos del registro pueden ser recogidos, por ejemplo, a partir de un formulario. Aquí os proponemos un simple documento HTML que recoge los datos y los envía a una página PHP que se encarga de procesarlos:

<HTML>
<HEAD>
<TITLE>Insertar.html</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Insertar un registro</h1>
<br>
<FORM METHOD="POST" ACTION="insertar.php">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Teléfono<br>
<INPUT TYPE="TEXT" NAME="telefono"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</div>
</BODY>
</HTML>

Llegados a la página destino del formulario (insertar.php), lo primero que habrá que hacer es establecer un vínculo entre el programa y la base de datos. Esta conexión se lleva a cabo con la función mysql_connect. A continuación, deberemos generar una orden de inserción del registro en lenguaje SQL. Esta orden será ejecutada por medio de la función mysql_db_query. En esta función especificaremos primeramente la base de datos sobre la que queremos actuar y a continuación introduciremos la sentencia SQL:

<HTML>
<HEAD>
<TITLE>Insertar.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la base
mysql_connect("localhost","tu_user","tu_password");

//selección de la base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");

//Ejecucion de la sentencia SQL
mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
?>
<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><a href="lectura.php">Visualizar el contenido de la base</a></div>
</BODY>
</HTML>

Ejecutar ejemplo

Los parametros user y password son definidos por el creador de la base. Es conveniente en un principio, al crear nuestras bases, trabajar sin ellos con lo cual dejaremos las cadenas correspondientes vacias: "".

Además de la propia inserción, el programa avisa de la introducción del registro y ofrece un enlace hacia una página de lectura la cual será comentada a continuación.

No entraremos en la descripción de la orden SQL, para comprender más acerca de cómo introducir registros, refererirse al tutorial de SQL.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 2 categorias relacionadas
+ 11 comentarios (Añadir)
+ 40 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Rubén Alvarez*

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Programación en PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP
+ Entrar en Manuales de PHP


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestran 11 comentarios revisados

 Comentario de María Celia Ibarra
09/3/02 
Tal vez un cambio de versión ocasiona que la ejecución de la carga de un registro muestre el siguiente mensaje:

Warning: mysql_db_query is deprecated; use mysql_select_db() and mysql_query() instead in C:\EjemplosPHP\insertar.php on line 10

Para resolverlo hay que reemplazar la función
mysql_db_query

por estas dos:
mysql_select_db()
mysql_query()

Ejemplo:

Donde dice:
mysql_db_query("ejemplo","insert into clientes (nombre,telefono) values ('$nombre','$telefono')");

Hay que reemplazar por:
mysql_select_db("ejemplo");
mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");

Lo demás funciona perfecto.


 Comentario de Dario
26/8/02 
No olviden poner la conexion a la base de datos usando mysql_connect("suhost", "usuario", "sucontraseña");

 Comentario de Carlos
15/10/02 
Si acabas de instalar PHP, la varible Register_Global debe estar en "On" en el archivo PHP.ini, si no el ejemplo no funciona. Viene en Off por defecto.

Register_Global = On


 Comentario de Miguel Angel Alvarez
30/7/03 
Si, por cualquier error que no sabemos todavía, no se insertan correctamente los datos en la tabla (no se inserta nada o algún/os campos aparecen vacíos), lo mejor para saber donde está el error es imprimir en pantalla la sentencia SQL y así vemos si estamos creando una instrucción correcta o no.

La sentencia SQL se puede crear dentro de una variable PHP y luego imprimirla y ejecutarla. Algo como esto:

$ssql = "insert into clientes (nombre,telefono) values ('$nombre','$telefono')";
echo $ssql;
mysql_query($ssql);

- Si la sentencia es correcta, caso poco probable, podemos pensar que habrá algún problema en el sistema gestor de base de datos o en la conexión con la base de datos. Es muy probable que la sentencia parezca correcta pero que no lo esté, para asegurarnos podemos llevarla a algún programa distinto que utilicemos para trabajar directamente con la base de datos (como PhpMyAdmin o MyCC) y ejecutarla. El programa nos dirá si realmente es una sentencia correcta, con lo que tendría que insertar los datos, o una sentencia incorrecta, señalando alguna pista para la identificación del error.

- Si la sentencia no es correcta, que es seguro lo que está pasando, podemos localizar fácilmente en qué parte del código PHP está el error y subsanarlo.

 Comentario de Spiro Andreakis
31/5/04 
Hay que recordar que para cuestinoes de depuración también podemos utiliza la instrucción "die" que nos sirve como bandera para indicar la porción de código donde truena el programa.
Ejemplo:
$mysql_connect(equipo,usuario,pass) or die("hubo un error al conectar al servidor de BD!.");

 Comentario de Diego
12/6/04 
Estube bastante tiempo para encontrar el problema asi que lo dejo para los demás.

el nombre de la tabla y el de los campos tiene que ir entre `acentos` y el de los valores entre 'comillas'.

lo descubri gracias al phpMyAdmin si no me volvía mono.

 Comentario de Enrique
20/6/04 
Si no poneis el codigo del archivo php que hace visualizar el dato que hemos añadido a la tabla va a ser un poco difivil comprobar que realmente se ha insertado =_=

 Comentario de Juanjo
04/8/05 
Para todos aquellos q no encontraron la solución de x q no se insertan registros o estan vacios, aqui esta la solución:

Todo biene x q en el formulario utilizamos el metodo POST
<FORM METHOD="POST" ACTION="insertar.php">

entonces a la hora de insertar los valores de los campos falta hacer referencias en ellas, vemos como:

Antes:
mysql_db_query("ejemplo","insert into clientes (nombre,telefono) values ('$nombre','$telefono')");
Debería ir:
mysql_db_query("ejemplo","insert into clientes (nombre,telefono) values ('".$_POST['nombre']."' , '".$_POST['telefono']."' )";
Saludos y Suerte.

 Comentario de José
20/10/05 
Faltaría añadir algún mecanismo para evitar una doble inserción del mismo registro si, por alguna razón, se preciona el botón "actualizar" del navegador. Con MySQL, es definiendo como "único" uno de los campos, pero esto no siempre es posible en todos los casos. ¿cómo se haría usando php?

 Comentario de Yuri
08/11/05 
Yo tambien despues de horas de pruebas finalmente he podido resolver el problema.. me salian datos en blancos.. copiare el codigo para dar una mano a los que aun tienen problemas, ya que yo tambien me ayude de los post de los demas participantes.
Gracias
Este es mi codigo que finalmente me funcionó:

<?
$cod=$_POST['cod'];
$desc=$_POST['desc'];
$cant=$_POST['cant'];
$link = mysql_connect("localhost", "bdprueba", "pssprueba")
or die("Could not connect to database!");
mysql_select_db("dbp_customer")
or die("Could not select database!");
$query = "insert into `Prod` (`cod`,`desc`,`cant`) values
('$cod','$desc','$cant')";
$result = mysql_query($query)
or die("Query failed:$query");
?>

 Comentario de Ariel
29/4/07 
Finalmente despues de buscar otros ejemplos y comparar, me di cuenta del error del codigo fuente de este ejemplo:

antes de ejecutar la siguiente sentencia:
mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");

hay que hacer lo siguiente:
$nombre=$_POST[nombre];
$telefono=$_POST[telefono];

por q no nos olvidemos que las variables nombre y telefono las recivimos de un formulario mediante el metodo post.

osea que quedaria así:

$nombre=$_POST[nombre];
$telefono=$_POST[telefono];

mysql_query("insert into clientes (nombre,telefono) values ('$nombre','$telefono')");

asi si que anda.

Saludos

RESPUESTA

Tienes razón, como tú dices funciona perfectamente, pero como está en el artículo en muchos casos también funciona, pero sólo si register_globals está activado.

Muchas gracias por el comentario, que será muy útil para los lectores.

Añadir un comentario al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 40 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Programación en PHP
Categorías
+Scripts en PHP
+Manuales de PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia