Académique Documents
Professionnel Documents
Culture Documents
MYSQL_ERRNO Devuelve el nmero del mensaje de error de la ltima operacin MySQL int mysql_errno ( [int identificador_de_enlace] ) Regresa el nmero de error de la ltima funcin, 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 cdigo de error. Note que esta funcin solo regresa el cdigo de error de la funcin MySQL ms recientemente executada (sin incluir mysql_error() y mysql_errno()), as que si quiere usarla, asegrese de chequear el valor antes de llamar a otra funcin de MySQL. MYSQL_ERROR Devuelve el texto con error del mensaje de la anterior operacin MySQL cadena mysql_error ( [int identificador_de_enlace] ) Regresa el texto del error de la ltima funcin MySQL o (cadena vaca) si no ocurri error. Si no se especfica el identificador de enlace en la funcin 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 transaccin: BEGIN, BEGIN WORK, START TRANSACTION mysql_query(BEGIN, $cn); Confirmar transaccin: mysql_query(COMMIT, $cn); Cancelar transaccin: mysql_query(ROLLBACK, $cn);
LIBRERIA.PHP Para facilitar la programacin, utilizaremos una librera de funciones <?php function fnConnect( &$msg){ $cn=mysql_connect("localhost","root",""); if(!$cn){ $msg = "Error en la conexin"; 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>");
} 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 pginas web que mostrarn 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; } { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 1.75em; font-weight: 700; }
H2
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; }
CONSULTA1.PHP Solicite ingreso del cdigo de un empleado y muestre los resultados de cdigo, 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"> Cdigo <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"]; // Conexin con la base de datos $cn = fnConnect( $msg ); // Verificar la conexin 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 = "Cdigo " . $codigo . " no existe."; fnShowMsg( "Mensaje", $msg ); say( "</body>" ); return; } // Mostrar resultado say( "<h2>Resultado</h2>" ); say( "<table border=1>" ); say( "<tr>" ); say( "<td>Cdigo</td>" );
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 // Conexin con la base de datos $cn = fnConnect( $msg ); // Verificar la conexin 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>
<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>Cdigo</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>
CONSULTA3.PHP Consulta del nmero 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 // Conexin con la base de datos $cn = fnConnect( $msg ); // Verificar la conexin 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 ";
$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 Pgina que muestre los resultados en una pgina pero de 5 registros, los diversos resultados deber paginarse.
<?php require( "libreria.php" ); ?> <link rel="stylesheet" href="estilo.css" type="text/css"> <body> <h1>Paginacin</h1> <h2>Listado de Empleados</h2> <?php // Conexin con la base de datos $cn = fnConnect( $msg ); // Verificar la conexin con la base de datos if( !$cn ) { fnShowMsg( "Error", $msg ); say( "</body>" ); return;
} // Parmetros de Paginacin $pagesize = 5; $pageno = 1; if( isset($_GET["pageno"]) ) { $pageno = $_GET["pageno"]; } // Paginacin $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( "Pginas: " ); 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>Cdigo</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 cmo controlar errores, para eso muestra un formulario para el ingreso de los parmetros necesarios para realizar una conexin, luego intenta realizar una nueva conexin, de haber un error muestra el nmero de error y el mensaje respectivo.
<link rel="stylesheet" href="estilo.css" type="text/css"> <body> <h1> Probar Conexin </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>Contrasea</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 conexin $cn = mysql_connect( $server, $user, $pass ); $errno = mysql_errno(); if( $errno == 0 ) { echo "Conexin Ok <br>"; } else {
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 cmo controlar errores, para eso muestra un formulario para el ingreso de los parmetros necesarios para realizar una conexin, luego intenta realizar una nueva conexin, de haber un error muestra el nmero de error y el mensaje respectivo.
<?php require "libreria.php"; ?> <link rel="stylesheet" href="estilo.css" type="text/css"> <body> <?php // Conexin con la base de datos $cn = fnConnect( $msg ); // Verificar la conexin 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'>
<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> Telfono </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> Comisin </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">
<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 cdigo." ); 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>" );
return; } mysql_query( "commit", $cn ); $msg = "Empleado registrado correctamente.<br>"; $msg .= "Cdigo Generado: $codigo<br>"; fnShowMsg( "Mensaje", $msg ); say( fnLink( "ejm1509.php","","Nuevo Empleado", "Nuevo Empleado" ) ); } ?> </body>
ACTIVIDAD
Realizar cinco formularios web PHP+MySQL adicionales.