lunes, 11 de junio de 2007

Examen Final - 4ta Unidad - Pregunta 5

Para crear la tabla:
mysql -u root -p
CREATE DATABASE prueba;
USE prueba;
CREATE TABLE productos (pro_cod int primary key auto_increment, pro_des varchar(30), pro_pre, float(7,2), pro_stk int);
La página php:
<?php
 $cn=mysql_connect("localhost","root","root");
 mysql_select_db($cn);
 $rs=mysql_query("SELECT * FROM productos 
      WHERE pro_pre>10 and pro_stk<100");
?>
<table>
 <tr><th>Nombre<th><th>Precio<th><th>Stock<th></tr>
 <?php while($f=mysql_fetch_array($rs)) { ?>
  <tr>
   <td><?php echo $f['pro_des'] ?></td>
   <td><?php echo $f['pro_pre'] ?></td>
   <td><?php echo $f['pro_stk'] ?></td>
  </tr>
 <?php } ?>
</table>

Examen Final - 4ta Unidad - Pregunta 4

Cree una página que permita establecer un valor como nombre de usuario, color de fondo de pantalla o color de texto, en una variable de sesión; y otra página que haga efectivo la configuración
<?php
 session_start();
 $_SESSION['nombre'] = $_POST['nombre'];
?>
<form method="post">
 Nombre <input type="text" name="nombre" />
 <input type="submit" value="Enviar" />
</form>
La página que hace uso de la variable de sesión sería:
<?php
 session_start();
 echo "Hola ".$_SESSION['nombre'];
?>

Examen Final - 4ta Unidad - Pregunta 3

Cree una clase que permita escribir y leer de una cookie, pasándole en el constructor el nombre de la cookie.
<?php
 class galleta {
  var $nombre="";

  function galleta($nombre) {
   $this->nombre = $nombre;
  }

  function escribirGalleta($valor) {
   setcookie($this->nombre,$valor,time()+1000000);
  }

  function leerGalleta() {
   return isset($_COOKIE[$this->nombre])?$_COOKIE[$this->nombre]:"";
  }
 }
 
 //-- Usando galleta
 $color = new galleta("color");
 $color->escribirGalleta("#0000FF");
?>
<body bgcolor="<?php echo $color->leerGalleta(); ?>">
</body>

sábado, 9 de junio de 2007

Examen Final - 4ta Unidad - Pregunta 2

Envíe un archivo al servidor, pero de la opción al usuario de poner el nombre con el que se guardará.
El código html es:
<form method="post" enctype="multipart/form-data">
 Archivo: <input type="file" name="archivo" /><br />
 Nombre: <input type="text" name="nombre" /><br />
 <input type="submit" value="Enviar" />
</form>
El código php es:
<?php
if (isset($_FILES['archivo'])) {
 $origen = $_FILES['archivo']['tmp_name'];
 if (is_uploaded_file($origen))
  move_uploaded_file($origen, $_POST['nombre']);
}
?>

Examen Final - 4ta Unidad - Pregunta 1

Imprima el contenido de un archivo de texto, indicando los número de línea.
$lineas = file("terminar.php");
foreach($lineas as $lin) echo ++$i." ".$lin."<br>";
La función file, abre un archivo de texto, lee cada línea y lo pone en cada elemento del array y luego cierra el archivo. Recorremos el array a través de foreach para escribir la línea pero agregándole el valor de un contador ($i) en cada línea.

martes, 5 de junio de 2007

Dando la opción de editar los datos de usuario

Ahora vamos a ver como se puede editar los datos de un usuario con el método secuencial:
  1. Primero vamos a crear la columna 'Editar' de forma análoga al de 'Eliminar'.
  2. Implementamos la función javascript editar, de forma análoga al de 'eliminar', pero le agregamos una línea para establecer la página de edición editar.php.
  3. Creamos la página de edición editar.php, y ponemos el mismo código de conexión.
  4. Consulta al usuario que tiene el código enviado por POST.
  5. Para probar hacemos un echo del campo nombre:
    $rs=mysql_query("SELECT * FROM usuarios WHERE codigo='$_POST[codigo]'",$cn);
    $fila = mysql_fetch_array($rs);
    echo $fila['nombre'];
  6. Ahora implementamos el formulario que es parecido al del primer archivo, sólo que le establecemos el action al form, el value al input text operacion, el value al input text codigo, el value al input text nombre y el value al select tipo por medio de javascript:
    <script>document.getElementById('tipo').value="<?php echo $fila['tipo'] ?>"</script>
  7. Ahora pasamos al primer archivo e implementamos el código necesario para actualizar registro, utilizamos una analogía de eliminar:
    if(isset($_POST['operacion']) && $_POST['operacion']=='D') mysql_query("update usuarios set nombre='$_POST[nombre]', tipo='$_POST[tipo]' where codigo=$_POST[codigo]");

Tabla con Scroll

En algunas ocasiones queremos que la información se limite a un sector, de forma que no mueva los demás controles. Es necesario utilizar un contenedor tal como el div de modo que si su contenido sobrepasa su límite, aparezcan de forma automática un scroll (barras de desplazamiento):
  1. Dividimos la tabla en dos parte: una que sólo contenga la cabecera y la otra que contenga el detalle.
  2. Ponemos un ancho fijo a las columnas de las tablas:
    <tr bgcolor="#FFCCCC"><th width="60px">Código</th><th width="170px">Nombre</th><th width="50px">Tipo</th><th width="60px">Eliminar</th></tr>
  3. Encerramos la tabla de abajo en un div.
  4. Ponemos borde al div por medio de estilos: border:solid;border-width:1px
  5. Establecemos una altura para el div: height
  6. Establecemos el modo de presentación de contenido: overflow, probamos todos sus valores.
  7. Damos un ancho adecuado al div por medio de width.

Modificación de programa de Base de Datos

El programa que realizamos tiene el defecto de que no advierte sobre la eliminación de un registro, por eso haremos una modificación del código donde haremos uso de javascript
  1. Corregimos el error por no encontrar variables POST, por medio de la función isset.
  2. Cambiamos a una versión HTML de la tabla para verlo más simple.
  3. Establecemos el color de fondo de la fila por medio de la propiedad bgcolor.
  4. Vamos a optimizar el proceso de eliminación, para ello primero modificamos el link de eliminación por un texto simple 'Eliminar'.
  5. Para dar un efecto de link ponemos el estilo: cursor:pointer.
  6. Es recomendable resaltar la fila actualmente seleccionada, utilizamos para ello la propiedad bgColor, e implementando los eventos onMouseOver y onMouseOut de la fila.
  7. Implementamos el evento OnClick de la celda 'Eliminar', por medio de la función javascript eliminar, le pasamos como parámetro el código del usuario a eliminar, probamos haciendo un alert del código.
  8. En la función javascript eliminar, hacemos que el usuario confirme la eliminación por medio de confirm.
  9. Es recomendable tener un campo invisible que indique a php la operación que se va ha realizar, para ello vamos a implementar el campo invisible operacion. También es necesario otro campo invisible para pasar a php el código del usuario que se va a eliminar, para ello implementamos el campo invisible codigo.
  10. En la función javascript eliminar implementamos el código para asignar el tipo de operación, que en nuestro caso es 'E' (Eliminar) y también establecemos el código a enviar para eliminación y por último llamamos al método para enviar el formulario.
  11. Ahora en la parte de php, verificamos primero que la variable $_POST['operacion'] exista y si existe debe tener como valor 'E'.
  12. En la instrucción de eliminación, cambiamos el $_GET por el $_POST.

Clase de Base de Datos

En la última clase implementamos el código necesario para realizar consulta, inserción y eliminación de registros de la tabla usuarios: <?php //-- Conexión $cn = @mysql_connect("localhost","root","root"); if($cn) echo "Conectado"; else echo "No conectado"; mysql_select_db("prueba"); echo "<br>"; //-- Insertando $nombre = $_POST['nombre']; $tipo = $_POST['tipo']; if(trim($nombre)!=="") mysql_query("insert into usuarios values(default,'$nombre','$tipo')"); //-- Eliminando if(isset($_GET['codigo'])) mysql_query("delete from usuarios where codigo=".$_GET['codigo']); //-- Consulta $rs=mysql_query("select * from usuarios"); //-- Recorremos resultados echo "<table border=1>"; echo "<tr><th>Código</th><th>Nombre</th><th>Tipo</th><th>Eliminar</th></tr>"; while($fila=mysql_fetch_array($rs)) { echo "<tr>"; echo " <td>".$fila['codigo']."</td> <td>".$fila['nombre']."</td> <td>".$fila['tipo']."</td> <td><a href='prueba.php?codigo=".$fila['codigo']."'>Eliminar</a></td>"; echo "</tr>"; } echo "</table>"; ?> <form method="post"> Nombre <input type="text" name="nombre"> Tipo <select name="tipo"> <option value="A">Alumno</option> <option value="P">Profesor</option> <option value="E">Empleado</option> </select><br> <input type="submit" value="Enviar"> </form>

lunes, 4 de junio de 2007

Recibir archivos

Para recibir un archivo enviado por medio del control input file podemos utilizar la siguiente función php, que nos simplifica el trabajo
function recibir_archivo($nombre){
 if (isset($_FILES[$nombre]) ) {
  if (is_uploaded_file($_FILES[$nombre]['tmp_name'])) {
   return move_uploaded_file($_FILES[$nombre]['tmp_name'], $_FILES[$nombre]["name"]);
  } else return 0;
 } else return 0;
}
Esta función ya no tiene el problema de que hay que enviar el archivo dos veces. Esta función se utiliza de la siguiente forma:
<?php
 if(recibir_archivo("archivo")) echo "Bien"; else echo "Mal";
?>
<form method='post' enctype='multipart/form-data'>
 <input name='archivo' type='file'>
 <input name='boton' id='boton' value='Enviar' type='submit'>
</form>

Bienvenida

Este blog ha sido creado con el propósito de publicar artículos relacionados al lenguaje de programación php. Se publicarán artículos con diferente formato, como funciones útiles, ejercicios para desarrollar y alguno que otro comentario. Cualquier sugerencia o duda háganlo saber a través del mismo blog.