| Subcribe via RSS

Publicados ya cuatro capítulos del Curso de PHP

Octubre 29th, 2009 | No Comments » | Posted in mis-proyectos, php, programacion

Ya están publicados los primeros cuatro capítulos del curso de PHP en el Rincón del PHP.

Si tenéis dudas sobre PHP pasaos por el foro, que está nuevecito y responderé a cualquier consulta gustosamente (relacionada con PHP, claro).

Tags:

El Rincón del PHP – Web dedicada a la programación en PHP

Octubre 25th, 2009 | No Comments » | Posted in mis-proyectos, php, programacion

Siguiendo con nuestros contínuos lanzamientos :-) hace un par de días pusimos en marcha la nueva web del Rincón del PHP.

La idea de la web es ser un punto en el que poder encontrar información sobre PHP, cursos y un foro donde podamos conocernos, compartir ideas y exponer dudas.

Entra en el Rincón del PHP, los foros están nuevecitos ¿te animas a estrenarlos?

Tags: ,

Curso de PHP+MySQL en Bilbao

Octubre 17th, 2009 | No Comments » | Posted in php

Estamos cerrando ya un grupo para empezar en breve otra edición del curso de programación en PHP+MySQL en Bilbao.

Más información sobre el contenido del curso aquí:

Curso de programación PHP+MySQL en Bilbao

Tags: , ,

Curso de PHP en Bilbao. Plazas disponibles

Mayo 7th, 2009 | No Comments » | Posted in mis-proyectos, php

Como cada cierto tiempo estamos organizando un curso de programación en PHP en Bilbao. Tenemos un grupo ya casi cerrado (sería en horario de tarde) y quedan un par de plazas. Si quieres más información puedes ponerte en contacto con nosotros:

Tfno.: 94 421 58 40
Email: contactar@urlanheat.com

También hay algo más de información aquí.

Tags:

Code Igniter: llamar a un controlador desde consola o desde otro fichero.php

Abril 30th, 2009 | No Comments » | Posted in code igniter, php, programacion

Si has trabajado con Code Igniter encontrarás este “truquillo” de mucha utilidad. Te permitirá llamar a un controlador desde consola o desde otro fichero PHP. Por ejemplo:

1) Supón que tienes una tarea (en un cron) que tiene que llamar a un controlador de tu aplicación Code Igniter. Supongamos que tienes un controlador que se llama ’saludar’ y quieres llamar a la función ‘decir_hola’ de ese controlador. No puedes hacer la llamada así:

php /var/www/saludar/decir_hola

ni:

php /var/www/index.php/saludar/decir_hola

(pruébalo)

2) También es posible que necesites recibir parámetros $_GET pero, por ejemplo, no sabes en el orden en el que te los van a enviar.

En ambos casos puedes crear un fichero llamado, por ejemplo, redirigir.php con el contenido siguiente:

<?php
// Recoger parámetros o cualquier otra tarea previa que necesites antes de llamar al controlador
...
// Fin de tareas previas
 
$_SERVER['PATH_INFO']    = 'saludar/decir_hola';
 
require('index.php');
?>

o incluso, podemos pasarle parámetros desde la consola:

<?php
$_SERVER['PATH_INFO']    = $argv[1];
require('index.php');
?>

(Si usas el fichero .htaccess no olvides añadir este fichero redirigir.php para que se pueda ejecutar).

Tags: , ,

Curso de PHP: Ejercicios de cadenas y funciones

Abril 29th, 2009 | No Comments » | Posted in php, programacion

Dado que llevo bastante tiempo impartiendo cursos de PHP en Bilbao ya va siendo hora de poner un poco de orden y actualizar los ejercicios.

Según los vaya poniendo “bonitos” los iré publicando aquí.

En esta primera tanda pondré algunos ejercicios de cadenas y funciones que servirán de repaso a mis alumnos. A ver si se animan algunos a hacerlos, que haciendo el esfuerzo de resolverlos es como se aprende, no mirando cómo los resuelve otro (este es un pequeño tirón de orejas para un par de personas :-D ).

<?php
/*
 * Para los siguientes ejercicios se deben/pueden usar las siguientes funciones:
 * 
 * - substr($cadena, $comienzo, $longitud);
 * 		Extrae una subcadena de una cadena:
 * 		$cadena - es la cadena de la que queremos sacar una subcadena
 * 		$comienzo - es la posición a partir de la que empezamos a extraer. El primer carácter
 * 		está en la posición 0.
 * 		$longitud - con este parámetro indicamos la longitud de la cadena. Es opcional, si
 * 		no lo ponemos nos cogerá todo desde el comienzo que hemos especificado hasta el final.
 * 
 * - strlen($cadena);
 * 		Cuenta el número de caracteres que tiene la cadena.
 * 
 * - strtoupper($cadena);
 * 		Convierte una cadena en mayúsculas.
 */
 
/*
 * Ejercicio 1:
 * 
 * Escribir una función que convierta la primera letra de una cadena en mayúsculas.
 * 
 */
 
echo '<h1>Ejercicio 1</h1>';
 
function corregir_primera_letra($cadena)
{
 
}
 
echo corregir_primera_letra('gorka'); // --> debe mostrar: Gorka
echo "<br/>";
echo corregir_primera_letra('GORKA'); // --> debe mostrar: GORKA
echo "<br/>";
echo corregir_primera_letra('Gorka'); // --> debe mostrar: Gorka
echo "<br/>";
 
/*
 * Ejercicio 2:
 * 
 * ¿Daría algún error si usamos una cadena de una sola letra? ¿Sabrías por qué?
 * 
 */
 
echo '<h1>Ejercicio 2</h1>';
echo corregir_primera_letra('G');
echo "<br/>";
 
/*
 * Ejercicio 3:
 * 
 * ¿Funcionaría bien la siguiente función? Por el nombre es evidente que no pero
 * ¿por qué? 
 */
 
function corregir_primera_letra_version_mala($cadena)
{
	$letra = substr($cadena, 0, 1);
	$letra = strtoupper($letra);
	$resto = substr($cadena, 1);
	$cadena_corregida = $letra . $cadena;
	return $cadena_corregida;	
}
 
/*
 * Ejercicio 4:
 * 
 * Crear una función que coja una cadena, ponga la primera en mayúsculas y
 * el resto en minúsculas.
 */
 
function corregir_mayusculas($cadena)
{
 
}
 
echo '<h1>Ejercicio 4</h1>';
echo corregir_primera_letra('gorka'); // --> debe mostrar: Gorka
echo "<br/>";
echo corregir_primera_letra('GORKA'); // --> debe mostrar: Gorka
echo "<br/>";
echo corregir_primera_letra('Gorka'); // --> debe mostrar: Gorka
echo "<br/>";
 
/*
 * Ejercicio 5:
 * 
 * Escribir una función que cuente el número de 'a' minúsculas que hay en una frase.
 * (usar for en lugar de foreach)
 */
 
function contar_letra_a($cadena)
{
 
}
 
echo '<h1>Ejercicio 5</h1>';
echo contar_letra_a('gorka'); // --> debe mostrar: 1
echo "<br/>";
echo contar_letra_a('La bala mata la vaca'); // --> debe mostrar: 8
echo "<br/>";
echo contar_letra_a('El oso osó asir a la osa'); // --> debe mostrar: 4
echo "<br/>";
 
/*
 * Ejercicio 6: (este es para nota)
 * 
 * Escribir una función que cuente el número de mayúsculas de una cadena.
 * 
 */
 
function contar_mayusculas($cadena)
{
 
}
 
echo '<h1>Ejercicio 6</h1>';
echo contar_mayusculas('gorka'); // --> debe mostrar: 0
echo "<br/>";
echo contar_mayusculas('La bala mata la vaca'); // --> debe mostrar: 1
echo "<br/>";
 
/*
 * Ejercicio 7: (este es para nota)
 * 
 * Si usamos una cadena como la que viene a continuación ¿contará bien? ¿por qué?
 * ¿cómo corregirías la función? (pista: problemas con la letra 'Ñ')
 * 
 */
echo '<h1>Ejercicio 7</h1>';
echo contar_mayusculas('El Ñoño Niñato Ñoñeaba sin parar');
echo "<br/>";
 
function contar_mayusculas_corregida($cadena)
{
 
}
 
echo contar_mayusculas_corregida('El Ñoño Niñato Ñoñeaba sin parar');
echo "<br/>";
?>
Tags: , , ,

Aptana Studio en Ubuntu

Abril 9th, 2009 | 1 Comment | Posted in heramientas, php, programacion

Después de un tiempo usando Eclipse para los proyectos de Python he decidido buscarme otra opción para mis proyectos basados en PHP (que no son pocos). Desde hace unos años vengo usando el Quanta Plus, que cumplía a la perfección con lo que necesitaba. Sin embargo echo de menos algunas cosillas que puedo usar cuando desarrollo con Python en Eclipse.

Así que me he decidio a instalar algunos de los plugins para PHP que tiene Eclipse (entre otros el PDT). Creo que todos ellos me han dado problemas y, cuando estaba a punto de desistir, he recordado a Aptana Studio, que puede funcionar él solito o como un plugin de Eclipse. Me lo he descargado y, para variar, ha habido problemas. Después de investigar un poco he encontrado la solución aquí:

http://forums.aptana.com/viewtopic.php?t=7147

Parece que el problema tiene que ver con Xulrunner, la versión que instala Ubuntu por defecto, la 1.9.0.3 no es compatible con Aptana (en el post explican cómo solucionarlo).

Dado que lo que me interesaba era desarrollar con PHP me he instalado también el plugin para PHP (es muy sencillo, basta ir a la pestaña “My Aptana” y pinchar en Plugins, y finalmente en el “Get it” que está justo bajo “Aptana PHP”.

Entre otras cosas (como el tener un panel con el listado de todas las funciones y objetos que tienes en el fichero que estás editando) hay una que me gusta especialmenete; se trata de la sincronización. Esta sincronización te permite definir y subir/bajar ficheros al/del servidor, lo que acelera enromemente el trabajo.

Os recomiendo que lo probéis.

Tags: , , , ,

Función PHP que añade un carácter al final si no existe

Diciembre 1st, 2008 | No Comments » | Posted in php, programacion

Hoy os propongo esta pequeña función que a mí me ahorra muchos disgustos. Se trata de una función que toma una cadena, comprueba si tiene el carácter ‘/’ al final y lo añade si no lo tiene.

Por ejemplo:

poner_barra_final("/home/gorka"); ---> "/home/gorka/"
poner_barra_final("/home/gorka/"); ---> "/home/gorka/"

De esta forma me aseguro que todas las carpetas tienen una barra al final y no tengo que preocuparme de si ya tienen la dichosa barra o no. Así me evito cosas como:

/home/gorka//

que en algunas situaciones ha sido fuente de errores.

La función:

function poner_barra_final($texto)
{
	if ((strrpos($texto, '/')+1)!=strlen($texto))
		$texto .= '/';
	return $texto;
}

Explicación:

La función strrpos (con dos ‘r’) devuelve la posición de la última aparición de ‘/’.

strlen cuenta el número de caracteres de la cadena.

Si no coinciden ambos valores (sumando uno al primer valor) quiere decir que el último carácter no es una ‘/’ así que la añado.

Tags: , ,

Extraer elementos aleatoriamente de un array en PHP

Noviembre 27th, 2008 | 1 Comment | Posted in php, programacion

Os dejo aquí un pequeño código que os permitirá extraer elementos de manera aleatoria de un array. La explicación un poco más abajo.

Este ejemplo toma un array y muestra dos elementos escogidos de manera aleatoria.

<?
$elementos = array('tortilla de patata', 'bonito con tomate',
'morcilla con pimientos', 'salmón ahumado');
$claves = array_rand($elementos, 2);
foreach($claves as $clave)
{
	echo $elementos[$clave];
}
?>

Explicación:

$elementos = array('tortilla de patata', 'bonito con tomate',
'morcilla con pimientos', 'salmón ahumado');

Esto es un array, no necesita mucha explicación. Un detalle importante, estoy escribiendo esto cerca de la hora de comer, por eso todos los elementos son platos que me encantan.

$claves = array_rand($elementos, 2);

Esta función nos devuelve un array $claves que contendrá dos (porque así lo hemos indicado) elementos que serán dos índices (o claves) aleatorios del array $elementos.

foreach($claves as $clave)

Con este foreach recorreremos el array de claves aleatorias y mostramos con el echo mostramos los valores.

Un pequeño apunte: antes de la versión de PHP 4.2.0 era necesario inicializar el generador de números aleatorios:

srand((float) microtime() * 10000000);
Tags: , , ,

cURL y PHP: hacer una llamada a una página en segundo plano

Noviembre 11th, 2008 | 2 Comments | Posted in php, programacion

Hace un par de días os hablaba de cURL. Hoy vamos a ver un sencillo ejemplo con esta librería.

En este ejemplo, vamos a conectarnos desde nuestro servidor con Google y vamos a pedirle que nos busque resultados que contengan la palabra ‘curl’:

<?
if(function_exists('curl_init')) // Comprobamos si hay soporte para cURL
{
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL,
		"http://www.google.es/search?hl=es&q=curl");
	curl_setopt($ch, CURLOPT_TIMEOUT, 30);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	$resultado = curl_exec ($ch);
 
	print_r($resultado);
}
else
	echo "No hay soporte para cURL";
?>

Lo primero que debemos hacer es iniciar la sesión cURL:

$ch = curl_init();

esto nos devuelve un “manejador” $ch que identifica a la sesión cURL recién creada.

Ahora vamos a indicarle cuál es la URL a la que nos queremos conectar:

curl_setopt($ch, CURLOPT_URL,
		"http://www.google.es/search?hl=es&q=curl");

En este caso vamos a realizar una búsqueda en google sobre el término ‘curl’.

Establecemos un tiempo máximo de respuesta:

curl_setopt($ch, CURLOPT_TIMEOUT, 30);

Esta línea la veremos más abajo:

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

Si en el servidor al que nos conectamos hubiese alguna redirección (código 302) y nos interesa seguirla entonces debemos decírselo a cURL:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

En este caso no es necesario, pero lo he dejado como nota didáctica.

Finalmente hacemos la llamada:

$resultado = curl_exec ($ch);

Como hemos establecido el parámetro CURLOPT_RETURNTRANSFER, curl_exec va a devolver la respuesta del servidor y la va a almacenar en la variable $resultado. Si no hubiésemos establecido ese parámetro curl_exec hubiese devuelto verdadero o falso dependiendo de si la operación se ha realizado con éxito.

Este es un ejemplo muy sencillo sin valor más allá del didáctico, pero puede tener muchas aplicaciones. Por ejemplo se puede usar en pasarelas de pago como PayPal para hacer una llamada en segundo plano al servidor.

Tags: , ,