Sie sind auf Seite 1von 14

25/02/2013

Accediendo MySQL desde el Web con PHP

Ejemplo de Cdigo y Formulario para acceder la Base de Datos


Acceso a Mysql desde PHP 1

Sentencias para crear la Base de Datos y la tabla CREATE DATABASE biblio; CREATE TABLE libros ( id_libro int NOT NULL auto_increment, autor varchar(150) NOT NULL, isbn varchar(125) NOT NULL , titulo varchar(150) NOT NULL, editorial varchar(125) default NULL, paginas int default NULL , encuadernacion varchar(20) default NULL, anio int NOT NULL , precio decimal(6,2), PRIMARY KEY (id_libro) Acceso a Mysql desde PHP );

25/02/2013

INSERT INTO libros ( autor, isbn, titulo, editorial, paginas, encuadernacion, anio, precio) VALUES ( 'Muriel Barbery', '978-84-322-2811-6', 'La elegancia del erizo', 'Seix Barral', 364, 'Rstica', 2009,7.80), ( 'Paolo Giordano', '978-84-9838-205-1', 'La soledad de los nmeros primos', 'Salamandra', 281, 'Rstica', Rstica , 2009,10.20), ( 'Agota Kristof', '978-84-9711-084-6', 'Claus y Lucas', 'El Aleph', 444, 'Bolsillo', 2009,20.40), ( 'Jos Saramago', '204-7463-2', 'El viaje del elefante', 'Alfaguara', 270, 'Pasta dura', 2009,15.00), ( 'Germn Castro Caycedo', '958-614-650-0', 'Perdido en el Amazonas', 'Planeta', 281, 'Rstica', 2001,9.90), ( 'Mark Haddon', '978-84-7888-910-5', 'El curioso incidente del perro a medianoche', 'Salamandra', 268, 'Rstica', 2008,23.56), ( 'Terenci Moix', '84-473-0126-5', 'No digas que fu un sueo', 'RBA', 378, 'Pasta dura', 1993,7.90), ( 'Gabriel Garca Mrquez', '84-473-0121-4', 'El general en su laberinto', 'RBA', 285, 'Pasta dura', 1993,15.87), ( 'Gabriel Garca Mrquez', '84-473-1514-2', 'Noticia de un secuestro', 'RBA', 254, 'Pasta dura', 1999,12.78), ( 'Stieg Larsson', '978-84-233-4044-6', 'Los hombres que no amaban a las mujeres', 'Destino', 665, 'Rstica', 2009,54.89), ( 'Josh Bazell', '978-84-339-7512-6', 'Burlando a la parca', 'Anagrama', 316, 'Rstica', 2009,15.87);
Acceso a Mysql desde PHP 3

Formulario De Bsqueda
<html> <head> <title>Bsqueda en Catlogo</title> </head> <body> <h1>Bsqueda en Catlogo</h1> <form action=Resultado.php" method="post"> Seleccione tipo de bsqueda:<br /> <select name="tipobusqueda"> <option value="autor">Autor</option> <option value="titulo">Ttulo</option> <option value="isbn">ISBN</option> </select> <br /> Entrar el trmino a buscar:<br /> <input name="valorbusqueda" type="text"> <br /> <input type="submit" value="Buscar"> </form> </body> Acceso a Mysql desde PHP </html>

25/02/2013

<html> <head> <title>Resultado de la bsqueda en Catlogo</title> </head> <body> <h1>Resultado de la bsqueda en Catlogo</h1> <?php // create short variable names $tipobusqueda=$_POST['tipobusqueda']; $valorbusqueda=$_POST['valorbusqueda']; $valorbusqueda= trim($valorbusqueda); if (!$tipobusqueda || !$valorbusqueda) { echo 'No ha especificado los valores de bsqueda. Por favor regrese e intntelo de nuevo.'; exit; } if (!get_magic_quotes_gpc()) { $tipobusqueda = addslashes($tipobusqueda); $valorbusqueda = addslashes($valorbusqueda); } @ $db = new mysqli('localhost', 'root', '', 'biblio'); //mysqli("localhost", "user", "password", "database"); if (mysqli_connect_errno()) { echo 'Error: No se pudo conectar con la base de datos. Intntelo ms tarde.'; exit; Acceso

} $query = "select autor, isbn, titulo,precio from libros where ".$tipobusqueda." like '%".$valorbusqueda."%'"; $result = $db->query($query); $num_results = $result->num_rows; echo '<p>Nmero de libros encontrados: '.$num_results.'</p>'; for ($ ($i=0; ; $i $ <$num_results; $ ; $i++) $ ) { $row = $result->fetch_assoc(); echo '<p><strong>'.($i+1).'. Ttulo: '; echo htmlspecialchars(stripslashes($row['titulo'])); echo '</strong><br />Autor: '; echo stripslashes($row['autor']); echo '<br />ISBN: '; echo stripslashes($row['isbn']); echo '<br />Precio: '; echo stripslashes($row['precio']); echo '</p>'; } $result >free(); $result->free(); $db->close(); ?> </body> </html>

a Mysql desde PHP

5 5

Pantalla con Resultados

Acceso a Mysql desde PHP

25/02/2013

Pasos para acceder la Base de datos desde PHP

Consultar Base de Datos desde el Web


1. Comprobar los datos que provienen del 2. 3. 4. 5.
usuario usuario. Establecer la conexin a la Base de Datos. Elegir y consultar la Base de Datos. Obtener los resultados y presentarlos al usuario. Cerrar la conexin a la Base de Datos.

A continuacin se explica cada paso:


8

25/02/2013

1. Comprobar los datos que provienen del usuario.


Lo primero que hace el script despus de obtener los valores del formulario es asegurarse que de no existan espacios en blanco en los datos entrados: $valorbusqueda= trim($valorbusqueda); Luego se comprueba que el usuario entr los datos requeridos en el formulario: if (!$tipobusqueda || !$valorbusqueda) { echo 'No ha especificado los valores de bsqueda. Por favor regrese e intntelo de nuevo.'; exit; }

1. Comprobar los datos que provienen del usuario (cont.) Se tiene que validar si los datos vienen con las comillas (quotes) automticamente o no. no Es una directiva que se puede configurar a nivel de administracin. De no estar activada, hay que incluirle los slashes al campo: if (!get_magic_quotes_gpc()) { $tipobusqueda = addslashes($tipobusqueda); $valorbusqueda = addslashes($valorbusqueda); }
10

25/02/2013

2. Establecer la conexin a la Base de Datos.


Se usa el acceso mediante Objetos Librera que conecta a la base de datos

Para conectarnos a la Base de Datos:

@ $db = new mysqli('localhost', 'root', '', 'biblio');


Username Password Nombre de la base de datos

Acceso a Mysql desde PHP

11

2. Establecer la conexin a la Base de Datos. (cont.) Una vez se hace la conexin, se debe verificar que fue exitosa ya que el resto del cdigo depende de que la conexin se logre. Se coteja con el siguiente cdigo: if (mysqli_connect_errno()) { echo 'Error: Could not connect to database. Please try again later.'; exit; D ser cierto De i t el l resultado lt d } de esta funcin, significa que hubo problemas al tratar de conectarse a la base de datos.

12

25/02/2013

2. Establecer la conexin a la Base de Datos.

(cont. 2)

Se indica el siguiente cdigo para seleccionar la b base de d datos d t o si i se desea d cambiar bi de d base b de d datos:
//object oriented $db->select_db(dbname) o // procedural mysqli_select_db(db_resource, db_name)

13

3. Elegir y consultar la Base de Datos


Ya establecida la conexin, lo prximo que debemos hacer es crear el comando de SQL que queremos utilizar: $query = "select autor, isbn, titulo,precio from libros where ".$tipobusqueda." like '%".$valorbusqueda."%'"; Para ejecutar el comando anterior: // object oriented $result = $db->query($query);
// procedural

$result = mysqli_query($db, $query);


14

25/02/2013

4. Obtener los resultados y presentarlos al usuario


Para saber la cantidad de instancias (records) que obtuvimos de la base de datos, utilizamos el siguiente comando:;

// object oriented $num_results = $result->num_rows o // procedural $num_results = mysqli_num_rows($result);


Esto hace falta para inicializar el ciclo que acceda esos datos y se puedan presentar al usuario:

for ($i=0; $i < $num_results; $i++) { // instrucciones }


15

4. Obtener los resultados y presentarlos al usuario (cont.)


Dentro del ciclo podemos utilizar la siguiente instruccin para almacenar en una variable (row) cada instancia y que nos permita mostrarla en pantalla al usuario:
// object oriented

$row = $result->fetch_assoc(); o
// procedural

$row = mysqli_fetch_assoc($result);
Esto hace falta para poder acceder a los datos en el ciclo y que se puedan presentar al usuario:

for ($i=0; $i < $num_results; $i++) { // instrucciones }


16

25/02/2013

4. Obtener los resultados y presentarlos al usuario (cont. 2) Esto nos va a permitir mostrar los atributos como por ejemplo j p el ISBN: echo '<br />ISBN: '; echo stripslashes($row['isbn']); Con lo que completaremos el ciclo de acceso a los datos: for ($i=0; $i < $num_results; $i++) { // instrucciones }
17

5. Cerrar la Conexin de la Base de Datos

Se puede liberar las instancias obtenidas utilizando el siguiente comando: $result->free(); ();// object oriented o mysqli_free_result($result); // procedural Finalmente podemos cerrar la conexin a la base de datos: $db->close(); // object oriented o mysqli_close($db) // procedural
18

25/02/2013

Poner informacin en la Base de Datos

19

Poner Informacin en la Base de Datos


Los pasos son similares a los de mostrar
resultados:

Crear la conexin Enviar la consulta Validar los resultados

Para este caso se utiliza el comando

INSERT en lugar del comando SELECT A continuacin se muestra un ejemplo


20 20

10

25/02/2013

Formulario De Altas
<html> <head> <title>Altas de libros</title> </head> <body> <h1>Altas de libros</h1> <form action="PHP08Insert.php" method="post"> <table border="0"> <tr> <td>ISBN</td> <td><input type="text" name="isbn" maxlength="125"

<tr>

size="20"></td>

<td>N de pginas</td> <td> <input type="text" name="paginas" maxlength="6" size="6"></td> </tr> <tr> <td>Encuadernacin</td> <td> <input type="text" text name= name="encuadernacion" encuadernacion maxlength= maxlength="20" 20

size="13"></td>

</tr> <tr> <td>Autor</td> <td> <input type="text" name="autor" maxlength="150"

size="30"></td>

</tr> <tr> <td>Ttulo</td> <td> <input type="text" name="titulo" maxlength="150"

</tr> <tr> <td>Ao</td> <td> <input type="text" name="anio" maxlength=4" size=4"></td> </tr> <tr> <td>Precio</td> <td><input type="text" name="precio" maxlength="7" size="7"> </td> </tr> <tr> <td colspan="2"><input type="submit" value="Aadir"></td> </tr> /table </table> </form> </body> </html>

size="30"></td>

</tr> <tr> <td>Editorial</td> <td> <input type="text" name="editorial" maxlength="125"

size="30"></td>

</tr>

21

Formulario De Altas

22

11

25/02/2013

Cdigo PHP que procesa las Altas


<html> <head> <title>Alta de libros: resultado</title> /head </head> <body> <h1>Alta de libros: resultado</h1> <?php // create short variable names $isbn=$_POST['isbn']; $autor=$_POST['autor']; $titulo=$_POST['titulo']; $editorial=$_POST['editorial']; $paginas=$_POST['paginas']; $encuadernacion=$_POST['encuadernacion']; $anio=$ POST['anio']; $anio=$_POST[ anio ]; $precio=$_POST['precio']; if (!$isbn || !$autor || !$titulo || !$precio) { echo 'No ha entrado todos los detalles requeridos.<br />' .'Vuelva a intentarlo.'; exit; }

if (!get_magic_quotes_gpc()) { $isbn = addslashes($isbn); $autor = addslashes($autor); $titulo = addslashes($titulo); $editorial = addslashes($editorial); $paginas $p g = intval($paginas); ($p g ); $encuadernacion = addslashes($encuadernacion); $anio = intval($anio); $precio = doubleval($precio); } @ $db = new mysqli('localhost', 'root', '', 'biblio'); if (mysqli_connect_errno()) { echo 'Error: No se puede conectar con la Base de Datos. Intntelo ms tarde.'; exit; } $query = 'insert into libros ' ."(autor, "(autor isbn, isbn titulo, titulo editorial, editorial paginas,encuadernacion,anio, paginas encuadernacion anio precio) values (" .'"' .$autor. '","' .$isbn. '","' .$titulo. '","' .$editorial .'",' .$paginas .',"' .$encuadernacion .'",' .$anio .',' .$precio .' );'; $result = $db->query($query); if ($result) echo $db->affected_rows.' libro aadido a la base de datos.'; $db->close(); ?> </body> 23 23 </html>

Resultado de la Ejecucin

24

12

25/02/2013

Revisin del Cdigo de Insertar


La siguiente instruccin permite insertar instancias en la tabla: $query = 'insert into libros ' ."(autor, isbn, titulo, editorial, paginas,encuadernacion,anio, precio) values (" .'"' .$autor. '","' .$isbn. '","' .$titulo. '","' .$editorial $ dit i l .'",' '" ' .$paginas $ i .',"' ' "' .$encuadernacion $ d i .'",' .$anio .',' .$precio .' );'; $result = $db->query($query); // indica si se insert o no
25

Ejercicio.
Aadir a la consulta la p posibilidad de modificar o borrar. Conjuntar toda la aplicacin con una pantalla inicial y mejorar el formato de todo.

Acceso a Mysql desde PHP

26

13

25/02/2013

Referencias
http://www.elwebmaster.com/talleres/taller-de-phpprograma http://www.php.net/usage.php http://www.php.net http://zend.com http://www.mysql.com/why-mysql/whitepapers/performance.php p p /p p p http://www.securityspace.com http://www.phpya.com/ar

Acceso a Mysql desde PHP

27

14

Das könnte Ihnen auch gefallen