Como hacer un INSERT y un SELECT en una BD de MySQL usando PHP

Desde hace ya tiempo tenia ganas de exponer algo sobre PHP pero hasta hoy me di a la tarea de invertir algo de tiempo en hacerlo. Y es que muchos dicen que ya PHP esta cayendo en desuso y otros que esta todavia muy fuerte, que esto y que el otro, la verdad es que no e investigado estadisticas para dar mi propia opinion. Pero creo que es un buen lenguaje web y cualquier estudiante de sistemas deberia tener a la mano algun apunte aunque sea algo basico, por eso me decidi a exponer algo.

En este ejemplo doy por hecho que ya tienes un servidor Apache correctamente instalado y configurado para cargar como modulo al PHP, sino sabes que es eso o todavia no lo tienes pues seria bueno irte ahora mismo a otro sitio y leer algo previo, por que sino no vas a entender mucho.

El ejemplo es muy sencillo; simplemente se realiza una insercion (INSERT) en una tabla que se llama usuarios, la tabla usuarios solamente tiene 3 campos y esta dentro de una Base de datos (BD) que lleva por nombre prueba.

Aca el comando SQL para crear la BD prueba y la tabla usuarios:

create database prueba;
create table usuarios(nick char(60) not null, pw char(40), correo char(255), primary key(nick));

Aca una imagen muestra en forma grafica el aspecto de la tabla ( creada con el workbench ):

Tabla usuarios

El ejemplo consta de tres archivos de codigo fuente; los cuales se describen a continuacion:

formularioAlta.html

Este archivo genera un formulario con tres campos de texto donde el usuario ingresara los datos que desea insertar en la tabla usuarios, una vez que el usuario a escrito los datos debe dar click en el boton Dar de alta! el cual es un boton submit que manda a llamar al archivo guardarAlta.php , dicho archivo es el que realmente guarda los datos en la tabla. Aca el codigo fuente:

<!--
                   Instituto Tecnologico de Zacatepec, Morelos
Descripcion:    Archivo fuente HTML que crea un formulario para capturar datos que seran
                enviados a un archivo .php para insertarlos en una BD de MySQL.
Author:         Gonzalo Silverio  gonzasilve@gmail.com
Fecha:          02/09/2010
Archivo:        formularioAlta.html
-->
<HTML>
   <HEAD>
        <TITLE>PHP y MySQL -Capturar datos alta</TITLE>
   </HEAD>

   <BODY>
      <FORM method="POST" action = "guardarAlta.php">
        Su nombre de usuario: <INPUT TYPE="text" name="nick" id="nick"><BR>
        Su Contraseña: <INPUT TYPE="password" name="password" id="password"><BR>
        Su correo electronico: <INPUT type="text" name="correo" id="correo"><BR><BR>
        <INPUT type="submit" NAME="enviar" VALUE="Dar de alta!" id="enviar">
      </FORM>
   </BODY>
</HTML>

guardarAlta.php
Este archivo abre una conexion con el servidor MySQL, captura los datos que llegan por el metodo POST, realiza dos comprobaciones para validar los datos a insertar, si los datos logran pasar satisfactoriamente las dos validaciones se hace la insercion y se avisa al usuario del exito de la operacion. A continuacion el codigo fuente, los comentarios indican donde se realiza cada cosa:

<!--
                   Instituto Tecnologico de Zacatepec, Morelos
Descripcion:    Archivo fuente de PHP que muestra como realizar una operacion INSERT
                en una BD de MySQL, con datos que llegan de un formulario HTML.
Author:         Gonzalo Silverio  gonzasilve@gmail.com
Fecha:          02/09/2010
Archivo:        guardarAlta.php
-->

<HTML>
<HEAD>
     <TITLE>PHP y MySQL -Resultados de alta</TITLE>
</HEAD>

<BODY>

<?php
   //Abrir una conexion con el servidor MySQL
   $conexio = mysql_connect("localhost","root","12345");
   mysql_select_db ("prueba", $conexio) OR die ("No se puede conectar");

   //Recoger datos que llegan
   $nik=$_POST['nick'];
   $pas=$_POST['password'];
   $cor=$_POST['correo'];

   //1.- Comprobar que no haya otro usuario con el mismo nick
   $sql="SELECT nick FROM usuarios WHERE nick='".$nik."'";
   $result=mysql_query($sql,$conexio);
   if($row=mysql_fetch_array($result))
   {
     echo "El nick <b>".$nik."</b> ya fue elegido por otro usuario.";
     exit();   /*cancelar la ejecucion del script y por tanto de la pagina web*/
   }
   //2.- Comprobar que no haya otro usuario registrado con el mismo correo
   $sql="SELECT correo FROM usuarios WHERE correo='".$cor."'";
   $result=mysql_query($sql,$conexio);
   if($row=mysql_fetch_array($result))
   {
     echo "El correo electronico <b>".$cor."</b> ya fue registrado por otro usuario.";
     exit();  /*cancelar la ejecucion del script y por tanto de la pagina web*/
   }
   //Si se ha logrado pasar las dos validaciones anteriores, entonces...
   //Realizar el INSERT en la tabla
   mysql_query("INSERT INTO usuarios(nick,pw,correo) VALUE ('$nik', '$pas', '$cor')",$conexio);
   echo "Registro Exitoso! <br><br> Usuario: <b>".$nik."</b> <br>Mail: <b>".$cor."</b>";

   //Cerrar la conexion
   mysql_close($conexio);
?>
 <BR><BR>
 <form method="POST" action="mostrarRegistros.php">
       <input type="submit" name="enviar" id="enviar" value="Ver registros de tabla">
 </form>
</BODY>
</HTML>

mostrarRegistros.php
Este archivo de codigo fuente abre una conexion con el servidor MySQL, realiza una seleccion (SELECT) de todos los registros de la tabla usuarios y los muestra en una tabla de tres columnas (3 campos tiene la tabla). A continuacion el codigo, otra vez los comentarios indican donde se realiza cada cosa:

<!--
                   Instituto Tecnologico de Zacatepec, Morelos
Descripcion:    Archivo fuente de PHP que muestra como realizar una operacion SELECT
                en una BD de MySQL.
Author:         Gonzalo Silverio  gonzasilve@gmail.com
Fecha:          02/09/2010
Archivo:        mostrarRegistros.php
-->
<HTML>
<HEAD>
     <TITLE>PHP y MySQL -Mostrar datos</TITLE>
</HEAD>

<BODY>

<?php
   //Abrir una conexion con el servidor MySQL
   $conexio = mysql_connect("localhost","root","12345");
   mysql_select_db ("prueba", $conexio) OR die ("No se puede conectar");

   //Seleccionar todos los registros
   $sql="SELECT * FROM usuarios";
   $result=mysql_query($sql,$conexio);

   //Mostrar los registros en una tabla en el navegador
   echo "<TABLE BORDER='1' width=50% align=center>";
   echo "<TR align=center><TD><b>Nick</b></TD><TD><b>Password</bd></TD><td><b>correo</b></td></TR>";
   while ($row=mysql_fetch_array($result))
   {
     echo "<TR><TD>".$row["nick"]."</TD><TD>".$row["pw"]."</TD><td>".$row["correo"]."</td></TR>";
   }
   echo "</TABLE>";

   //Cerrar la conexion
    mysql_close($conexio);

?>
<center>
   <br>
    <form method="POST" action="formularioAlta.html">
          <input type="submit" name="nuevo" id="enviar" value="Nuevo contacto">
    </form>
</center>
</BODY>
</HTML>

En resumen la logica del ejemplo es: El usuario abre el archivo formularioAltas.html en un navegador –> el usuario ingresa los datos y da clic en el boton submit –> Los datos son enviados al archivo guardarAlta.php –> Una vez que llegan los datos, se insertan en la BD (ho se muestra un msg de error de validacion) –> El usuario da clic en el boton Ver registros el cual es un boton submit y manda a llamar al archivo mostrarRegistros.php–> El archivo mostrarRegistros.php muestra los datos en el navegador.

A continuacion unos pantallazos de la ejecucion del ejemplo:

El usuario captura los datos y da clic en el boton Dar de alta!

formularioAltas.html

Se muestran al usuario resultados de la insercion, el usuario debe dar clic en el boton Ver registros de tabla

guardarAltas.php

Se muestran los datos en el navegador

mostrarRegistros.php Hasta pronto, comenta en caso de cualquier duda.

Anuncios

Acerca de gonzasilve
Freelance Web Developer.

17 Responses to Como hacer un INSERT y un SELECT en una BD de MySQL usando PHP

  1. peter3518 says:

    Muy bueno! me lo puedes enviar???

    Gracias, Pedro

  2. Agustín Penino says:

    Opa, como siempre Gonza, no dejas de sorprenderme, no se porque razón no me ha funcionado el registro de la autenticación que me has enviado, pero si me envías el código de aquí, podría implementarlo para poder registrar los usuarios yo mismo con los datos que ellos me den, ya que es una comunidad de juegos, y los miembros de mi “Team”, los registrare yo mismo.

    Muchas Gracias por todo, como siempre.
    Saludos Cordiales.

  3. Julian Sanchez says:

    Hola gonza! Tengo una pequeña duda, dentro de las tablas yo tengo primarias y foraneas!

    Ejemplo: Tabla 1 con campos campo1 PK, campo2, campo 3
    Tabla 2 con campos campo1 PK, campo 2, campo 3 FK

    Como insertar los datos en dos tablas o mas?

    • gonzasilve says:

      .. Hey que tal, mira primero inserta en la tablas que tengas la llaves primarias y ya que este generados los Id insertas en las otra que tiene las foraneas.
      para obtener el utimo id de una PK que se ha generado mysql tiene una funcion, disculpa no recuerdo como se llama pero existe.
      Aka tienes algo relacionado en la doc. oficial:
      http://php.net/manual/en/function.mysql-insert-id.php

      Saludos y suerte

  4. Gorkamorka says:

    Y esto mismo, pero planteando la conexión, insert, select, etc, desde una orientacion a objetos, como sería? Es muy buen ejemplo, pero es una pena que tiene un enfoque no de POO

    • gonzasilve says:

      si, lastima. Estos son ejemplos lo mas sencillos posibles para principiantes pero si gustas algo mas elaborado seguro ai algo en la red. Te dejo un par de links con algo respecto al tema que tocaste: http://www.driverop.com.ar/php_html/dbutil
      y http://hacerpaginaswebconphp.com/clase-php-trabajar-mysq/. Saludos cordiales

  5. Dani says:

    enviame este tambien gracias!!

    • gonzasilve says:

      enviado!

  6. porque cuando le doy a dar de alta me manda descargar el archivo “guardarAlta”

    • gonzasilve says:

      No esta bien configurado tu servidor apache.

  7. As well as Louis Vuitton lower coat had been probably the most pounds on the market in those days.

    • gonzasilve says:

      What are you talking?

  8. adsf says:

    adfadsf

  9. Eres muy bueno, por no decir, chiiiiixxxon, asta que encontre alguien que si sabe hacer las cosas, gracias master por tu aportacion.

    • gonzasilve says:

      grax

  10. alice says:

    hola,estoy utilizando tu codigo pero me sale el siguiente error: Notice: Undefined index: nick in C:\wamp\www\carpeta principal\admin\procesos\guardaralta.php on line 14

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\carpeta principal\admin\procesos\guardaralta.php on line 21. te agradeceria toda la ayuda que me puedas prestar y gracias de ante mano.

    • gonzasilve says:

      te acabo de escribir a tu correo. revisa x fas

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: