+ All Categories
Home > Documents > 6_MySQL_PHP_2

6_MySQL_PHP_2

Date post: 24-Oct-2014
Category:
Upload: noemi-espinoza-ticse
View: 39 times
Download: 3 times
Share this document with a friend
Popular Tags:
15
Miguel Ángel Córdova Solís 26/01/2011
Transcript
Page 1: 6_MySQL_PHP_2

Miguel Ángel Córdova Solís

26/01/2011

Page 2: 6_MySQL_PHP_2

CONSULTA A BASES DE DATOS MYSQL DESDE

APLICACIONES PHP:

FUNCIONES: MYSQL_SELECT_DB Selecciona una base de datos MySQL int mysql_select_db ( cadena base_de_datos [, int identificador_de_enlace] )

Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo. MYSQL_QUERY

Envía una sentencia SQL a MySQL int mysql_query ( string sentencia [, int identificador_de_enlace])

Devuelve TRUE (no-cero) o FALSE para indicar si la sentencia se ha ejecutado correctamente o no. Un valor TRUE significa que la sentencia era correcta y pudo ser ejecutada en el servidor. MYSQL_NUM_ROWS

Devuelve el número de filas de un resultado int mysql_num_rows ( int id_resultado )

Regresa el número de filas en un resultado. Este comando es válido solo para las sentencias SELECT. Para obtener el número de filas afectadas por las sentencias INSERT, UPDATE o DELETE, use mysql_affected_rows(). MYSQL_RESULT

Devuelve datos de un resultado int mysql_result ( int id_resultado, int numero_de_fila [, mixed campo])

Devuelve el contenido de una celda de un resultado MySQL. El campo argumento puede ser el nombre del campo o el offset o tabla.nombre_del_campo. Si el nombre de la columna tiene un

alias ('select foo as bar from...'), utilice el alias en lugar del nombre de la columna. MYSQL_FETCH_ROW Devuelve una fila de resultado como matriz array mysql_fetch_row ( int id_resultado )

Devuelve: Una matriz que corresponde a la fila seleccionada, o FALSE si no quedan más filas. Selecciona una fila de datos del resultado asociado al identificador de resultado especificado. La fila es devuelta como una matriz. Cada columna del resultado es guardada en un offset de la matriz, empezando por el offset 0. MYSQL_DATA_SEEK Mueve el puntero interno int mysql_data_seek ( int id_resultado, int numero_de_fila )

Mueve el puntero de fila interno a la fila específicada para el identificador de resultado. La próxima llamada a mysql_fetch_row() devolverá esa fila.

Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo. El número de

fila inicia con cero.

MYSQL_FETCH_ASSOC

Recupera una fila de resultado como una matriz asociativa mysql_fetch_assoc ( resource resultado )

Devuelve una matriz asociativa que corresponde a la fila recuperada y mueve el apuntador de datos interno hacia adelante. mysql_fetch_assoc() es equivalente a llamar mysql_fetch_array() con MYSQL_ASSOC como el segundo parámetro opcional. Únicamente devuelve una matriz asociativa.

Page 3: 6_MySQL_PHP_2

MYSQL_ERRNO

Devuelve el número del mensaje de error de la última operación MySQL int mysql_errno ( [int identificador_de_enlace] )

Regresa el número de error de la última función, o 0 (cero) si no hay error. Los errores que se obtienen de la base de datos MySQL ya no generan alertas. En lugar de eso, use mysql_errno() para obtener el código de error. Note que esta función solo regresa el código de error de la función MySQL más recientemente executada (sin incluir mysql_error() y mysql_errno()), así que si quiere usarla, asegúrese de chequear el valor antes de llamar a otra función de MySQL. MYSQL_ERROR

Devuelve el texto con error del mensaje de la anterior operación MySQL cadena mysql_error ( [int identificador_de_enlace] )

Regresa el texto del error de la última función MySQL o „‟(cadena vacía) si no ocurrió error. Si no se específica el identificador de enlace en la función se usa el último enlace abierto exitosamente para obtener el mensaje de error del servidor MySQL. OPERACIONES TRANSACCIONES:

Es importante saber que las transacciones son soportadas solo para las tablas tipo innodb Iniciar transacción: BEGIN, BEGIN WORK, START TRANSACTION mysql_query(“BEGIN”, $cn); Confirmar transacción:

mysql_query(“COMMIT”, $cn); Cancelar transacción:

mysql_query(“ROLLBACK”, $cn);

LIBRERIA.PHP Para facilitar la programación, utilizaremos una librería de funciones

<?php function fnConnect( &$msg){ $cn=mysql_connect("localhost","root",""); if(!$cn){ $msg = "Error en la conexión"; return 0; } $rpta = mysql_select_db("rh",$cn); if(!$rpta){ $msg = "BD no existe"; mysql_close($cn); return 0; } return $cn; } function say($cad){ echo $cad . "\n"; } function fnShowMsg($title,$msg){ say("<table width='250'>"); say("<tr>"); say("<th align=center valign=middle>$title</th>"); say("</tr>"); say("<tr>"); say("<td align=left valign=middle>".$msg."</td>"); say("</tr>"); say("</table>");

Page 4: 6_MySQL_PHP_2

} function fnLink($link,$target,$mouseover,$msg){ $cad = "<A href='$link' target='$target' "; $cad .= "onmouseout=\"self.status='';return true\" "; $cad .= "onmouseover=\"self.status='$mouseover' ;return true\">"; $cad .= "$msg</A>"; return $cad; } ?>

ESTILO.CSS Define el estilo de las páginas web que mostrarán los resultados.

body { color: #000099; font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 0.8em; font-weight: 500; background: #FFF8EC; } H1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 2em; font-weight: 700; } H2 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 1.75em; font-weight: 700; } H3 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 1.58em; font-weight: 500; } TABLE { background-color: #FFEFD5; } TH { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 0.9em; color: White; font-weight: 500; font: bold; background: #804D19; } TD { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 0.9em; font-weight: 500; color: Navy; }

Page 5: 6_MySQL_PHP_2

CONSULTA1.PHP Solicite ingreso del código de un empleado y muestre los resultados de código, apellido y nombre.

CONSULTA1.PHP

<?php require "libreria.php"; ?> <link rel="stylesheet" href="estilo.css" type="text/css"> <body> <h1>Consulta de un Empleado</h1> <form method="POST" action="consulta1.php"> Código <input type="text" name="codigo"> <input type="submit" value="Enviar"> </form> <?php // Verificar si existe la variable: codigo if( !isset($_POST["codigo"]) ) { say( "</body>" ); return; } // leer la variable: codigo $codigo = $_POST["codigo"]; // Conexión con la base de datos $cn = fnConnect( $msg ); // Verificar la conexión con la base de datos if( !$cn ) { fnShowMsg( "Error", $msg ); say( "</body>" ); return; } // Realizar consulta a la base de datos $sql = "select * from empleado "; $sql .= "where idempleado='$codigo'"; $rs = mysql_query( $sql ); // Verificar si retorna resultado $rows = mysql_num_rows( $rs ); if( $rows == 0 ) { $msg = "Código " . $codigo . " no existe."; fnShowMsg( "Mensaje", $msg ); say( "</body>" ); return; } // Mostrar resultado say( "<h2>Resultado</h2>" ); say( "<table border=1>" ); say( "<tr>" ); say( "<td>Código</td>" );

Page 6: 6_MySQL_PHP_2

say( "<td>" . mysql_result($rs,0,"idempleado") . "</td>" ); say( "</tr>" ); say( "<tr>" ); say( "<td>Apellido</td>" ); say( "<td>" . mysql_result($rs,0,"apellido") . "</td>" ); say( "</tr>" ); say( "<tr>" ); say( "<td>Nombre</td>" ); say( "<td>" . mysql_result($rs,0,"nombre") . "</td>" ); say( "</tr>" ); say( "</table>" ); ?> </body>

CONSULTA2.PHP Consulta que muestre el registro de empleados por departamento, la cual debe ser seleccionado desde una lista desplegable.

<?php require "libreria.php"; ?> <link rel="stylesheet" href="estilo.css" type="text/css"> <body> <?php // Conexión con la base de datos $cn = fnConnect( $msg ); // Verificar la conexión con la base de datos if( !$cn ) { fnShowMsg( "Error", $msg ); say( "</body>" ); return; } ?> <h1>Consulta de Empleados</h1> <form method="POST" action="consulta2.php"> Departamento <select name="dept" size="1"> <?php $sql = "select iddepartamento, nombre from departamento"; $rs = mysql_query( $sql, $cn ); while( $row = mysql_fetch_row( $rs ) ) { $op = "<option value='" . $row[0] . "'>"; $op .= $row[1] . "</option>"; say( $op ); } ?> </select>

Page 7: 6_MySQL_PHP_2

<input type="submit" value="Enviar"> </form> <?php // Verificar si existe la variable: dept if( !isset($_POST["dept"]) ) { say( "</body>" ); return; } // leer la variable: dept $dept = $_POST["dept"]; // Leer el nombre del departamento $sql = "Select nombre from departamento "; $sql .= "where iddepartamento = $dept"; $rs = mysql_query( $sql, $cn ); $nom = mysql_result( $rs, 0, 0 ); // Consultar los empleados del departamento $sql = "select idempleado, apellido, nombre, sueldo from empleado "; $sql .= "where iddepartamento=$dept"; $rs = mysql_query( $sql ); // Verificar si retorna resultado $rows = mysql_num_rows( $rs ); if( $rows == 0 ) { $msg = "Departamento $dept - $nom no tiene empleados."; fnShowMsg( "Mensaje", $msg ); say( "</body>" ); return; } // Mostrar resultado say( "<h2>Resultado</h2>" ); say( "Departamento: $dept - $nom" ); say( "<table border=1>" ); say( "<tr>" ); say( "<th>Código</th>" ); say( "<th>Apellido</th>" ); say( "<th>Nombre</th>" ); say( "<th>Sueldo</th>" ); say( "</tr>" ); while( $row = mysql_fetch_row( $rs ) ) { say( "<tr>" ); foreach ( $row as $celda) { if( is_null( $celda ) ) { $celda = "None"; } say( "<td>$celda</td>" ); } say( "</tr>" ); } say( "</table>" ); ?> </body>

Page 8: 6_MySQL_PHP_2

CONSULTA3.PHP Consulta del número de empleados por cargo, la cual debe ser seleccionado desde una lista desplegable.

<?php require "libreria.php"; ?> <link rel="stylesheet" href="estilo.css" type="text/css"> <body> <?php // Conexión con la base de datos $cn = fnConnect( $msg ); // Verificar la conexión con la base de datos if( !$cn ) { fnShowMsg( "Error", $msg ); say( "</body>" ); return; } ?> <h1>Consulta de Empleados</h1> <form method="POST" action="consulta3.php"> Cargo <select name="cargo" size="1"> <?php $sql = "select idcargo, nombre from cargo"; $rs = mysql_query( $sql, $cn ); while( $row = mysql_fetch_assoc( $rs ) ) { $op = "<option value='" . $row["idcargo"] . "'>"; $op .= $row["nombre"] . "</option>"; say( $op ); } ?> </select> <input type="submit" value="Enviar"> </form> <?php // Verificar si existe la variable: cargo if( !isset($_POST["cargo"]) ) { say( "</body>" ); return; } // leer la variable: cargo $cargo = $_POST["cargo"]; // Leer el nombre del puesto de trabajo $sql = "Select nombre from cargo where idcargo = '$cargo'"; $rs = mysql_query( $sql, $cn ); $nom = mysql_result( $rs, 0, 0 ); // Consultar los empleados del departamento $sql = "select iddepartamento as dept, count(*) as emps "; $sql .= "from empleado ";

Page 9: 6_MySQL_PHP_2

$sql .= "where idcargo = '$cargo' "; $sql .= "group by iddepartamento "; $rs = mysql_query( $sql ); // Verificar si retorna resultado $rows = mysql_num_rows( $rs ); if( $rows == 0 ) { $msg = "Cargo $cargo - $nom no tiene empleados."; fnShowMsg( "Mensaje", $msg ); say( "</body>" ); return; } // Mostrar resultado say( "<h2>Resultado</h2>" ); say( "Cargo: $cargo - $nom" ); say( "<table border=1 width=300>" ); say( "<tr>" ); say( "<th>Departamento</th>" ); say( "<th>Empleados</th>" ); say( "</tr>" ); while( $row = mysql_fetch_assoc( $rs ) ) { say( "<tr>" ); say( "<td align='center'>" . $row["dept"] . "</td>" ); say( "<td align='center'>" . $row["emps"] . "</td>" ); say( "</tr>" ); } say( "</table>" ); ?> </body>

CONSULTA4.PHP Página que muestre los resultados en una página pero de 5 registros, los diversos resultados deberá paginarse.

<?php require( "libreria.php" ); ?> <link rel="stylesheet" href="estilo.css" type="text/css"> <body> <h1>Paginación</h1> <h2>Listado de Empleados</h2> <?php // Conexión con la base de datos $cn = fnConnect( $msg ); // Verificar la conexión con la base de datos if( !$cn ) { fnShowMsg( "Error", $msg ); say( "</body>" ); return;

Page 10: 6_MySQL_PHP_2

} // Parámetros de Paginación $pagesize = 5; $pageno = 1; if( isset($_GET["pageno"]) ) { $pageno = $_GET["pageno"]; } // Paginación $dezp = ($pageno - 1) * $pagesize; $sql = "select count(*) from empleado "; $rs = mysql_query( $sql, $cn ); $rows = mysql_result( $rs, 0, 0 ); $pages = ceil( $rows / $pagesize ); say( "Páginas: " ); for( $i = 1; $i <= $pages; $i++ ) { if($i != $pageno) { $link = "<a href='consulta4.php?pageno=$i'>$i</a>"; } else { $link = $i; } say( $link . " " ); } // Listado $sql = "select idempleado, apellido, nombre, email "; $sql .= "from empleado limit $dezp, $pagesize"; $rs = mysql_query( $sql, $cn ); say( "<table border='1'>" ); say( "<tr>" ); say( "<th>Código</th>" ); say( "<th>Apellido</th>" ); say( "<th>Nombre</th>" ); say( "<th>Email</th>" ); say( "</tr>" ); while( $rec = mysql_fetch_row($rs) ) { say( "<tr>" ); foreach ( $rec as $field ){ say( "<td>$field</td>" ); } say( "</tr>" ); } ?> </body>

CONSULTA5.PHP Consulta que muestra cómo controlar errores, para eso muestra un formulario para el ingreso de los parámetros necesarios para realizar una conexión, luego intenta realizar una nueva conexión, de haber un error muestra el número de error y el mensaje respectivo.

Page 11: 6_MySQL_PHP_2

En caso se ingrese correctamente:

En caso se ingrese incorrectamente:

<link rel="stylesheet" href="estilo.css" type="text/css"> <body> <h1> Probar Conexión </h1> <?php if( !$_POST["seguro"] ) { ?> <form method="POST" action="consulta5.php"> <table width="300" border='1'> <tr> <td>Servidor</td> <td> <input type="text" name="server"> </td> </tr> <tr> <td>Usuario</td> <td> <input type="text" name="user"> </td> </tr> <tr> <td>Contraseña</td> <td> <input type="password" name="pass"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="hidden" name="seguro" value="12345"> <input type="reset" value="Limpiar"> <input type="submit" value="Enviar"> </td> </tr> </table> </form> <?php } else { // Captura de Datos $server = $_POST["server"]; $user = $_POST["user"]; $pass = $_POST["pass"]; // Probando conexión $cn = mysql_connect( $server, $user, $pass ); $errno = mysql_errno(); if( $errno == 0 ) { echo "Conexión Ok <br>"; } else {

Page 12: 6_MySQL_PHP_2

echo "Nro. de Error: $errno <br>"; echo "Mensaje: " . mysql_error() . "<br>"; } echo "<br><a href='consulta5.php'>Nueva Prueba</a>"; } ?> </body>

CONSULTA6.PHP Consulta que muestra cómo controlar errores, para eso muestra un formulario para el ingreso de los parámetros necesarios para realizar una conexión, luego intenta realizar una nueva conexión, de haber un error muestra el número de error y el mensaje respectivo.

<?php require "libreria.php"; ?> <link rel="stylesheet" href="estilo.css" type="text/css"> <body> <?php // Conexión con la base de datos $cn = fnConnect( $msg ); // Verificar la conexión con la base de datos if( !$cn ) { fnShowMsg( "Error", $msg ); say( "</body>" ); return; } say( "<h1>Nuevo Empleado</h1>" ); if( !$_POST["seguro"] ) { // ****************************** // Formulario de Ingreso de Datos // ****************************** ?> <form method="POST" action="consulta6.php"> <table width="300" border='1'>

Page 13: 6_MySQL_PHP_2

<tr> <td> Apellido </td> <td> <input type="text" name="apellido"> </td> </tr> <tr> <td> Nombre </td> <td> <input type="text" name="nombre"> </td> </tr> <tr> <td> Email </td> <td> <input type="text" name="email"> </td> </tr> <tr> <td> Teléfono </td> <td> <input type="text" name="telefono"> </td> </tr> <tr> <td> Departamento </td> <td> <select name="dept" size="1"> <?php $sql = "select iddepartamento, nombre from departamento "; $sql .= "where iddepartamento in "; $sql .= "(select distinct iddepartamento from empleado)"; $rs = mysql_query( $sql, $cn ); while( $row = mysql_fetch_row( $rs ) ) { $op = "<option value='" . $row[0] . "'>" . $row[1] . "</option>"; say( $op ); } ?> </select> </td> </tr> <tr> <td> Cargo </td> <td> <select name="cargo" size="1"> <?php $sql = "select idcargo, nombre from cargo "; $sql .= "where idcargo not in ('C01', 'C02')"; $rs = mysql_query( $sql, $cn ); while( $row = mysql_fetch_assoc( $rs ) ) { $op = "<option value='" . $row["idcargo"] . "'>"; $op .= $row["nombre"] . "</option>"; say( $op ); } ?> </select> </td> </tr> <tr> <td> Sueldo </td> <td> <input type="text" name="sueldo"> </td> </tr> <tr> <td> Comisión </td> <td> <input type="text" name="comision"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="hidden" name="seguro" value="12345"> <input type="reset" value="Limpiar">

Page 14: 6_MySQL_PHP_2

<input type="submit" value="Enviar"> </td> </table> </form> <?php } else { // ******************* // Procesar Formulario // ******************* // Captura de Datos $ape = $_POST["apellido"]; $nom = $_POST["nombre"]; $email = $_POST["email"]; $tel = $_POST["telefono"]; $cargo = $_POST["cargo"]; $dept = $_POST["dept"]; $sueldo = $_POST["sueldo"]; $comm = $_POST["comision"]; // Inicio de Transaccion mysql_query( "begin", $cn ); // Generar Codigo $sql = "select valor from control "; $sql .= "where parametro = 'Empleado'"; $rs = mysql_query( $sql, $cn ); $cont = mysql_result( $rs, 0, 0 ); $sql = "update control set valor = valor + 1 "; $sql .= "where parametro = 'Empleado'"; $rpta = mysql_query( $sql, $cn ); if( !rpta ) { mysql_query( "rollback", $cn ); fnShowMsg( "Error", "No se puede generar el su código." ); say( "</body>" ); return; } $codigo = "0000" . $cont ; $codigo = "E" . substr( $codigo, strlen($codigo) - 4 ); // Determinar el codigo del jefe $sql = "select idempleado from empleado "; $sql .= "where iddepartamento = '$dept' "; $sql .= "and idcargo in ( 'C01', 'C02' ) "; $rs = mysql_query( $sql, $cn ); $rows = mysql_num_rows( $rs ); if( $rows != 1 ) { mysql_query( "rollback", $cn ); fnShowMsg( "Error", "No se pudo determinar el Jefe." ); say( "</body>" ); return; } $jefe = mysql_result( $rs, 0, 0 ); // Registrar el Empleado $sql = "insert into empleado(idempleado, apellido, nombre,"; $sql .= "fecingreso, email, telefono, idcargo, iddepartamento,"; $sql .= "sueldo, comision, jefe ) values ( '$codigo', '$ape', "; $sql .= "'$nom', curdate(), '$email', '$tel', '$cargo', $dept, "; $sql .="$sueldo, $comm, '$jefe')"; $rpta = mysql_query( $sql, $cn ); if(!$rpta){ mysql_query( "rollback", $cn ); $msg = "Datos ingresados no son correctos.<br>"; $msg .= "SQL: $sql"; fnShowMsg( "Error", $msg ); say( "</body>" );

Page 15: 6_MySQL_PHP_2

return; } mysql_query( "commit", $cn ); $msg = "Empleado registrado correctamente.<br>"; $msg .= "Código Generado: $codigo<br>"; fnShowMsg( "Mensaje", $msg ); say( fnLink( "ejm1509.php","","Nuevo Empleado", "Nuevo Empleado" ) ); } ?> </body>

ACTIVIDAD Realizar cinco formularios web PHP+MySQL adicionales.


Recommended