Clase PHP para generar documentos PDF a partir de HTML

1 COMENTARIO -  Publicado hace 6 meses -  Clasificado en: ,

mPDF es una clase de PHP que genera archivos PDF a partir de HTML codificado en UTF-8. Se basa en FPDF, HTML2FPDF, y UFPDF, con una serie de mejoras. La gran mejora aportada respecto a las anteriormente mencionadas librerías, es que permite generar archivos PDF "al vuelo", a partir de HTML, con soporte a estilos CSS.

mPDF » »

Algunas entradas relacionadas:

 

Clase para acceder a Google Weather

1 COMENTARIO -  Publicado hace 6 meses -  Clasificado en: , , , ,

Interesante clase para acceder de un modo sencillo al servicio metereológico de Google.

Ejemplo:

<?php
class GoogleWeatherAPI {
	private $city_code = '';
	private $city = '';
	private $domain = 'www.google.com';
	private $prefix_images = '';
	private $current_conditions = array();
	private $forecast_conditions = array();
	private $is_found = true;

	/**
	* Class constructor
	* @param $city_code is the label of the city
	* @param $lang the lang of the return weather labels
	* @return ...
	*/
	 
	function __construct ($city_code,$lang='fr') {
		$this->city_code = $city_code;
		$this->prefix_images = 'http://'.$this->domain;
		$this->url = 'http://'.$this->domain.'/ig/api?weather='.urlencode($this->city_code).'&hl='.$lang;
		
		$content = utf8_encode(file_get_contents($this->url));
		
		$xml = simplexml_load_string($content);
		
		if(!isset($xml->weather->problem_cause)) {
			
			$xml = simplexml_load_string($content);

			$this->city = (string)$xml->weather->forecast_information->city->attributes()->data;

			$this->current_conditions['condition'] = (string)$xml->weather->current_conditions->condition->attributes()->data;
			$this->current_conditions['temp_f'] = (string)$xml->weather->current_conditions->temp_f->attributes()->data;
			$this->current_conditions['temp_c'] = (string)$xml->weather->current_conditions->temp_c->attributes()->data;
			$this->current_conditions['humidity'] = (string)$xml->weather->current_conditions->humidity->attributes()->data;
			$this->current_conditions['icon'] = $this->prefix_images.(string)$xml->weather->current_conditions->icon->attributes()->data;
			$this->current_conditions['wind_condition'] = (string)$xml->weather->current_conditions->wind_condition->attributes()->data;
			
			foreach($xml->weather->forecast_conditions as $this->forecast_conditions_value) {
				$this->forecast_conditions_temp = array();
				$this->forecast_conditions_temp['day_of_week'] = (string)$this->forecast_conditions_value->day_of_week->attributes()->data;
				$this->forecast_conditions_temp['low'] = (string)$this->forecast_conditions_value->low->attributes()->data;
				$this->forecast_conditions_temp['high'] = (string)$this->forecast_conditions_value->high->attributes()->data;
				$this->forecast_conditions_temp['icon'] = $this->prefix_images.(string)$this->forecast_conditions_value->icon->attributes()->data;
				$this->forecast_conditions_temp['condition'] = (string)$this->forecast_conditions_value->condition->attributes()->data;
				$this->forecast_conditions []= $this->forecast_conditions_temp;
			}
		} else {
			$this->is_found = false;
		}
	}
	function getCity() {
		return $this->city;
	}
	function getCurrent() {
		return $this->current_conditions;
	}
	function getForecast() {
		return $this->forecast_conditions;
	}
	function isFound() {
		return $this->is_found;
	}
	
}
$gweather = new GoogleWeatherAPI('valencia','es'); 
if($gweather->isFound()) {
	echo '<pre>'; print_r($gweather->getCity()); echo '</pre>';
	echo '<pre>'; print_r($gweather->getCurrent()); echo '</pre>';
	echo '<pre>'; print_r($gweather->getForecast()); echo '</pre>';
}
?>

Ver ejemplo en funcionamiento » »

Google Weather API » »

Algunas entradas relacionadas:

 

Crear hojas de cálculo Excel con PHP

10 COMENTARIOS -  Publicado hace 12 meses -  Clasificado en: , , ,

Existen varias formas de exportar a Excel mediante PHP. En este post vamos a servirnos de la clase Excel Writer. La clase es muy sencilla de utilizar y nos puede permitir realizar el proceso de exportación de una tabla de nuestra base de datos sin grandes complicaciones. Primero veamos un ejemplo básico muy ilustrativo del funcionamiento de la clase.

<php
include("excelwriter.inc.php"); 
$excel=new ExcelWriter("FicheroExcel.xls");

if($excel==false) { 
   echo $excel->error;
}

// PRIMERA FORMA DE ESCRITURA DE FILAS
$myArr=array("CeldaA1","CeldaB1","CeldaC1","CeldaD1");
$excel->writeLine($myArr);

$myArr=array("CeldaA2","CeldaB2","CeldaC2","CeldaD2");
$excel->writeLine($myArr);

//SEGUNDA FORMA DE ESCRITURA DE FILAS
$excel->writeRow();
$excel->writeCol("CeldaA3");
$excel->writeCol("CeldaB3");
$excel->writeCol("CeldaC3");
$excel->writeCol("CeldaD3");

$excel->writeRow();
$excel->writeCol("CeldaA4");
$excel->writeCol("CeldaB4");
$excel->writeCol("CeldaC4");
$excel->writeCol("CeldaD4");

$excel->close();
echo "Los datos se han grabado con éxito.";
?>

Descargar ejemplo completo » »

Supongamos ahora que tenemos una tabla con una serie de comercios y deseamos poder exportarla, para uso propio o porque el cliente nos lo ha pedido, a una hoja de cálculo Excel. Un ejemplo de utilización de la clase Excel Writer para exportar datos de una tabla de una base de datos MySQL sería:

<?php
include("includes/excelwriter.inc.php");

$excel=new ExcelWriter("galeria_comercial.xls");

if($excel==false) {
echo $excel->error;
}

//Escribimos la primera fila con las cabeceras
$myArr=array("Nombre Comercial","Direccion","CP","Localidad","Telefono","Email");
$excel->writeLine($myArr);

//REALIZAMOS LA CONSULTA
$dbhost = "localhost";
$dbuser = "usuario";
$dbpassword = "password";
$dbname = "base_de_datos";

$db2 = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error());
mysql_select_db($dbname) or die("Error al conectar a la base de datos.");
$sql2 = "SELECT * FROM ComerciosGaleria";
$sql2 .= " ORDER BY NombreComercial ASC ";
$result2 = mysql_query( $sql2) or die("No se puede ejecutar la consulta: ".mysql_error());

//Escribimos todos los registros de la base de datos
//en el fichero EXCEL
while($Rs2 = mysql_fetch_array($result2)) {
$myArr=array(
$Rs2['Nombre_Comercial'],
$Rs2['Direccion'],
$Rs2['CodigoPostal'],
$Rs2['Localidad'],
$Rs2['Telefono'],
$Rs2['Email']
);
$excel->writeLine($myArr);
//Otra forma es
//$excel->writeLine($Rs2);
//De este modo volcariamos todos los registros seleccionados
//Sin necesidad de colocarlos/filtrar previamente en $myArr
}
$excel->close();

//Abrimos el fichero excel que acabamos de crear
header("location:galeria_comercial.xls");
?>

Algunas entradas relacionadas:

 

Easy Google Maps: clase PHP para facilitar el uso de la API de Google Maps

12 COMENTARIOS -  Publicado hace 12 meses -  Clasificado en: , ,

Easy Google Maps es una clase para PHP que, como su nombre indica facilita la inclusión de mapas a través de Google Maps en un sitio web. Lo primero que deberemos hacer, para poder utilizar la API de Google Maps es obtener una key o clave para el dominio en el que pensemos utilizar la API.

Una vez tenemos una key podemos invocar un mapa de un modo tan sencillo como:

<?php
require'EasyGoogleMap.class.php';
$key ="XXXXXXXXXX";
$gm = & new EasyGoogleMap($key);
$gm->SetMapZoom(15);
$gm->SetAddress("Colon 22, Valencia");
$gm->SetInfoWindowText("Esta es la primera direcci&oacute;n");
$gm->SetAddress("Periodista Azzati 7, Valencia");
$gm->SetInfoWindowText("Esta es la segunda direcci&oacute;n");
?>
<html>
<head>
<title>EasyGoogleMap</title>
<?php echo $gm->GmapsKey(); ?>
</head>
<body>
<?php echo $gm->MapHolder(); ?>
<?php echo $gm->InitJs(); ?>
<?php echo $gm->UnloadMap(); ?>
</body>
</html>

Donde "XXXXXXXXXX" es la key que acabamos de obtener.
Ver ejemplo en funcionamiento » »

Algunas de las propiedades que podemos establecer son las siguientes:

//Para habilitar/deshabilitar el zoom progresivo.
// De modo predeterminado deshabilitado (FALSE)
$gm->mContinuousZoom = FALSE;

//Para habilitar/deshabilitar La escala del mapa.
// De modo predeterminado habilitado (TRUE)
$gm->mScale = TRUE;

//Para habilitar/deshabilitar el mapa interno.
// De modo predeterminado deshabilitado (FALSE)
$gm->mInset = FALSE;

//Para habilitar/deshabilitar el tipo de mapa.
// De modo predeterminado deshabilitado (FALSE)
$gm->mMapType = FALSE; # default

//Para establecer las dimensiones del mapa
//De modo predeterminado 300px x 300px
$gm->SetMapWidth(500);
$gm->SetMapHeight(500);

//Para establecer el zoom
//De modo predeterminado 13
$gm->SetMapZoom(10);

//Para establecer el tipo de puntero
// De modo predeterminado se utiliza GT_FLAT
$gm->SetMarkerIconStyle('FLAG');
$gm->SetMarkerIconStyle('GT_FLAT');
$gm->SetMarkerIconStyle('GT_PILLOW');
$gm->SetMarkerIconStyle('HOUSE');
$gm->SetMarkerIconStyle('PIN');
$gm->SetMarkerIconStyle('PUSH_PIN');
$gm->SetMarkerIconStyle('STAR');

//Para establecer el color del puntero
// De modo predeterminado se utiliza PACIFICA
$gm->SetMarkerIconColor('PACIFICA');
$gm->SetMarkerIconColor('YOSEMITE');
$gm->SetMarkerIconColor('MOAB');
$gm->SetMarkerIconColor('GRANITE_PINE');
$gm->SetMarkerIconColor('DESERT_SPICE');
$gm->SetMarkerIconColor('CABO_SUNSET');
$gm->SetMarkerIconColor('TAHITI_SEA');
$gm->SetMarkerIconColor('POPPY');
$gm->SetMarkerIconColor('NAUTICA');
$gm->SetMarkerIconColor('DEEP_JUNGLE');
$gm->SetMarkerIconColor('SLATE');
//Establecer el texto del bocadillo informativo
$gm->SetInfoWindowText("Este es el punto uno")

El uso es realmente sencillo. Lo unico que no me acababa de gustar es que apareciese el bocadillo de la primera dirección. Prefiero que aparezcan los bocadillos cuando el usuario hace click. Simplemente cogiendo la clase y comentando estas dos líneas ya lo tendremos,

if ($i===0) 
$ret .= "marker.openInfoWindowHtml(address_$i.infowindowtext);\n";

Ver un segundo ejemplo en funcionamiento » »

Descargar ejemplo completo » »

Algunas entradas relacionadas:

 

Obtener un listado de todas las clases disponibles en PHP

0 COMENTARIOS -  Publicado hace 15 meses -  Clasificado en: ,

PHP dispone de una función denominada get_declared_clases() que permite obtener una lista de todas las clases disponibles tanto por la propia instalación de PHP como las definidas por nosotros mismos o incluidas en bibliotecas de terceros. Con el siguiente ejemplo obtendríamos un listado alfabético de todas las clases disponibles para tu aplicación:

<?php
$classes = get_declared_classes();
sort($classes);
echo "<pre>";
print_r($classes);
echo "</pre>";
?>

Lo que nos devolvería un listado similar al siguiente:

Array
(
[0] => AppendIterator
[1] => AppendIterator
[2] => ArrayIterator
[3] => ArrayIterator
[4] => ArrayObject
[5] => ArrayObject
[6] => BadFunctionCallException
........................
[223] => stdClass
[224] => tidy
[225] => tidy
[226] => tidyNode
[227] => tidyNode
)

Algunas entradas relacionadas:

 

PHP DocWriter

0 COMENTARIOS -  Publicado hace 16 meses -  Clasificado en: , ,

Interesante biblioteca de clases. Muy útil por ejemplo para dar salida a informes creados por aplicaciones web en entornos abiertos.

PHP DocWriter es conjunto de clases escritas en PHP capaz de generar documentos en formato OpenOffice.org XML (es decir, documentos StarOffice/OpenOffice.org). Tambíen es capaz de comunicarse con la aplicación OpenOffice.org con el objetivo de que esta pueda convertir los documentos OpenOffice.org XML generados a cualquier otro formato soportado por la aplicación OpenOffice.org de forma autómatica y transparente. Esta librería esta todavia bajo desarrollo pero es completamente usable en este momento. Hasta ahora, soporta las siguientes características: Cabecera y pie de página, Cuadros de texto, Imágenes, Tablas, Dibujos, Meta-información de los documentos, Conversión automática de los documentos creados a otros formatos, etc.

PHP DocWriter » »

Algunas entradas relacionadas:

 

Clase para enviar correos con PHP

1 COMENTARIO -  Publicado hace 22 meses -  Clasificado en: , ,

Esta es la primera clase que hago en PHP. Ya había hecho alguna en Actionscript pero ésta es la primera que hago para PHP. Ocurre que PHP es un lenguaje con una comunidad tan grande que ya hay clases para todo lo que uno pueda imaginar. Clases para enviar correos deben haber bastantes y con bastantes más funcionalidades, pero ésta es sencilla y funciona correctamente. La clase es:

class correo{
	var $destinatario;
	var $remitente;
	var $asunto;
	var $mensaje;

function enviar() {
	$headers = "From: ".$this->remitente."\r\nReply-To: ". $this->remitente;
	ob_start(); 
	$message = ob_get_clean();
	$mail_sent = @mail( $this->destinatario, $this->asunto, $this->mensaje, $headers );
	echo $destinatario;
	echo $mail_sent ? "Correo Enviado" : "No se ha podido enviar el correo";
	}
}

Para hacer uso de ella (Un servicio SMTP debe estar disponible para PHP en el servidor):

$g = new correo();
$g->destinatario = 'direccion@correo.com';
$g->remitente = 'remitente@correo.com';
$g->asunto = 'Este es el asunto del mensaje';
$g->mensaje = 'Este es el cuerpo del mensaje.';
$g->enviar();

Algunas entradas relacionadas:

 
Páginas: 1 2 Siguiente >