gafeman viciao2k3 logo viciao2k3
 
cagando...
 
 
◀ Inicio

Entradas sobre PHP

diferentes maneras de leer un fichero en php

Publicado en PHP el dia 6 Julio, 2007   1690 lecturas  y  2 comentarios

Lo que me gusta de la programacion, es que las cosas se pueden hacer de muchas maneras para obtener un mismo resultado.

La manera clásica:

PHP:
  1. $nombre_archivo = '/usr/local/algo.txt';
  2. $gestor = fopen($nombre_archivo, 'r');
  3. $contenido = fread($gestor, filesize($nombre_archivo));
  4. fclose($gestor);

Pero, ¿Sabias que tambien lo puedes hacer de esta manera?

PHP:
  1. $contenido = implode('',file('/usr/local/algo.txt'));

Los dos ejemplos asignan a la variable $contenido el contenido del fichero /usr/local/algo.txt

¿tamaño maximo de las cookies?

Publicado en PHP el dia 5 Julio, 2007   1338 lecturas  y  2 comentarios

esta es una de las dudas que tenia, desde que termine el FP y que no me respondieron los profesores

he hecho algunas pruebas en el servidor donde estoy alojado con la version del php 4.4.4 y el resultado ha sido de 4093 caracteres

Clase para la conexion a bases de datos MySQL

Publicado en PHP el dia 27 Junio, 2007   3633 lecturas  y  9 comentarios

Diario de cambios:
Version: 0.3
Ultima edicion: 6-julio-2007

  • arreglado un problema en la funcion enmarcar, siempre muestra el mensaje $str
  • he añadido los constructores para que sea compatible con PHP 5

Hoy he terminado de desarrollar dos classes en PHP

  1. para conectar con una base de datos MySQL
  2. para hacer llamadas a la base de datos (querys, updates, deletes, inserts, etc.)

Caracteristicas importantes:

  1. al hacer selects, si estas devuelven valores, se tiene que hacer mysql_free_result($mysql_result) para liberar recursos, esta clase lo hace automaticamente
  2. cuando haces una query esta devuelve una tabla de objetos
    puedes acceder a los valores mediante $query1->v[0]->nombre o recorrerlos todos con un foreach
    con lo que ya no tienes que dudar si era un mysql_fetch_row, mysql_fetch_ass­oc u otro...
  3. modo de depuracion, si estas en modo de depuracion si se producen errores, se mostraran las querys tal y como se han ejecutado a la base de datos
  4. muy facil de recordar y programar, ya que se tiene que escribir muy poco
  5. Cierra la conexion datos automaticamente al final de la aplicacion, utilizando un __destructor() compatible con PHP4 y 5

Ejemplo practico:

PHP:
  1. //incluimos la clase
  2. require 'class_mysql.php';
  3.  
  4. //creamos el objeto bd para poder conectar con la base de datos
  5. //Nota: para el modo debug se tiene que escribir: $bd = new bd(1);
  6. $bd = new bd();
  7.  
  8. //para hacer una query
  9. $query1 = new query('select id, nombre, apellidos from trabajadores',$bd);
  10.  
  11. //podemos comprobar si la query ha obtenido valores (no hace falta para mostrar datos)
  12. if($query1->n){
  13.  
  14. //recorremos las filas y mostramos los resultados
  15. foreach ($query1->v as $fila)
  16. echo $fila->d,' - ',$fila->nombre,' ',$fila->apellidos,'<br />';
  17. }else{
  18. //si no hay valores se muestra un mensaje
  19. echo 'no se encontraron resultados';
  20. }

Otras caracteristicas:

  • para evitar sql-injections, debes filtrar los datos de esta manera:
    PHP:
    1. $query1 = new query("select * from usuarios where nombre='".$bd->f($_POST['nombre'])."' and password='".$bd->f($_POST['password'])."'",$bd);

  • saber numero de filas afectadas, al hacer por ejemplo un update:
    PHP:
    1. $query1 = new query("update trabajadores set salario='1000' where departamento='12'",$bd);
    2. echo $query1->a,' registros actualizados';

Pasos:

  1. Descargar el fichero:
    class_mysql.txt
  2. Remplazar el nombre del fichero a class_mysql.php
  3. Subirlo al ftp

Recuerda: (antes de usar la clase tienes que editar las variables)

  • var $usuari='root'; //nombre de usuario de la base de datos
  • var $clau=''; //contraseña del usuario
  • var $servidor='localhost'; //nombre del servidor, normalmente localhost
  • var $nomBD=''; //nombre de la base de datos

Si te ha gustado, crees que se puede mejorar o si encuentras fallos, deja un comentario

diferencias entre include, require, include_once y require_once

Publicado en PHP el dia 26 Junio, 2007   3876 lecturas  y  4 comentarios

en general las 4 funciones hacen lo mismo, importar en un documento php, funciones o variables de otros documentos escritos en php o html

esto resulta muy util y practico a la hora de dividir y organizar nuestro codigo
pongo un caso, imaginen una funcion que se ejecuta en 4 ficheros php, para poder utilizar la misma funcion esta tendria que estar escrita en cada uno de los ficheros

¿inconvenientes?

  1. si queremos modificar la funcion, tenemos que cambiar cada una de los ficheros donde este escrita
  2. tenemos mas trabajo y necesitamos mas tiempo a la hora de modificar cada uno de los ficheros
  3. mas dificil de mantener
  4. mas codigo
  5. mas espacio ocupado

solucion:

creamos un fichero llamado por ejemplo general.php con las funciones que necesitamos y añadimos un include a cada uno de los ficheros
luego para modificar la funcion solo tenemos que editar el fichero general.php

ejemplo de include:

fichero1.php

PHP:
  1. include 'fichero2.php';//$variable es igual a 10
  2. echo $variable;//imprime 10

fichero2.php

PHP:
  1. $variable = 10;

si ejecutamos el fichero1.php, mostrara por pantalla el valor de la variable $variable, 10

la diferencia entre require e include, es que si el fichero no existe:

  • include mostrara un warning y continuara con la ejecucion
  • require mostrara un fatal error y parara la ejecucion

ejemplo de include_once:

fichero1.php

PHP:
  1. include_once("fichero2.php"); //$variable es igual a 10
  2. $variable = 20; //$variable es igual a 20
  3. include_once("fichero2.php"); //$variable es igual a 20
  4. echo $variable; //imprime 20

fichero2.php

PHP:
  1. $variable = 10

si ejecutamos fichero1.php, mostrara por pantalla 20

¿porque 20 y no 10?

tanto include_once como require_once solo se pueden ejecutar una vez
la segunda vez que se llama a include_once, esta es como si no existiera.

si en vez de utilizar include_once, utilizamos include o require el valor final de $variable seria 10

include se comporta igual que include_once, a la hora de importar el fichero, si este no existe mostrara warning y continuara la ejecucion
lo mismo passa con require y require_once, si el fichero no existe muestra un fatal error y para la ejecucion

algunas anotaciones:

  • vigila a la hora de hacer mas de un include con ficheros que contengan funciones
    si importas un fichero que ya ha sido incluido antes o que contenga alguna funcion declarada anteriormente, aparacera un Fatal error y la ejecucion terminara, ya que no se puede declarar la misma funcion 2 veces
  • si quieres importar ficheros con solo variables, no tendras problemas para llamarlo mas de una vez (solo con include y require)
  • utiliza require o require_once, para cargar archivos de configuracion, que contengan constantes
  • puedes hacer un fichero php que contenga una plantilla html de un mensaje de foro y hacer un include a este fichero dentro de un while o for, ojo con include_once no lo puedes hacer
  • si el fichero que quieres incluir esta escrito en php, este debe tener encima del codigo <?php y al final ?>, si es codigo html no hace falta

curiosidades de echo

Publicado en PHP el dia 25 Junio, 2007   848 lecturas  y  2 comentarios
  1. Utiliza la comilla simple (') en vez de la comilla doble (") siempre que no vayas a usar variables dentro, la comilla doble hace que el intérprete analice lo que hay dentro de las comillas.
  2. La forma más rápida de concatenar texto es usando comillas simples.
  3. Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo.
  4. echo es más rápido que print.

Sobre el segundo punto la verdad es que no lo sabia, Alejando Torres hizo un comentario en mi post sobre mis manias a la hora de programar

El tercero tambien me ha sorprendido he hice un ejemplo:

PHP:
  1. $var = 13;
  2. echo 'los ',$var, ' monos voladores';

El resultado de este codigo es:
los 13 monos voladores

Via | Sentido Web