Noticias Weblogs Foros Wiki Código

RecorteX

» php
326 usuarios y 203 recortes de código
Usuario

Contraseña
Crear cuenta
Estás viendo los recortes de la etiqueta php

RSS
Recortes: 38

Etiquetas relacionadas:
mysql
imagenes
jpg
fichero
letras
formato
html
xhtml
fechas
clase
acentos
Fresqui
Web20
existe-registro
tabla
database
Meneame
base
imagen-flash
filtrar
url
elimina-ficheros
para
clases
leer
ADOdb
genera-select
widgets
extension
tags
date
Meta
bbdd
formatear
valor-maximo
entidades
phpbb3
convertir
ajax
hora
wordpress
fecha
tildes
datos
busca
index
valor-minimo
escribir
querystring
cristiano
libre
apache
todas
dieresis
números
castellano
javascript
formulario
variables
español
SQL
cuenta-registros
mascara
array
ID
tus
Digg
paginas

Consulta a BBDD con ADOdb

Utilizando la librería ADOdb (PHP): http://adodb.sourceforge.net/
 
// Lee todos los "Perez" de la tabla usuarios
 
$db = NewADOConnection('mysql');
$db->PConnect($dbhost, $dbuser, $dbpass, $dbdatabase);
 
$result = $db->Execute("select nombre, apellidos from usuarios where apellido=?", array("Perez"));
if ($result === false) die("falló"); 
while (!$result->EOF) {    
  echo $result->fields['nombre'].' '.$result->fields['apellidos'];
  $result->MoveNext();
}
 

Meta tags genericas para todo el sitio PHP

He tenido algo de inquietud de ver como funciona, y creo que ha funcionado bien, hice unos archivos que contienen los meta tags completos y asi solo los editaremos una vez y apareceran en todas las paginas. Primero hacemos un archivo que se llama _metas.php
 
<META NAME="Description" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Title" CONTENT="Instituto aernautico">
<META NAME="Author" CONTENT="Ing Josue E. Basurto Nieto">
<META NAME="Subject" CONTENT="Escuela de Aviacion ">
<META HTTP-EQUIV="CONTENT-LANGUAGE" CONTENT="ES">
<META NAME="Abstract" CONTENT="Escuela de aviacion">
<META NAME="Copyright" CONTENT="© Instituto Aernautico">
<META NAME="Designer" CONTENT="Ana Cecilia Cota Espero">
<META NAME="Publisher" CONTENT="CN System Corp">
<META NAME="Revisit-After" CONTENT="1 Days">
<META NAME="Rating" CONTENT="general">
<META NAME="Distribution" CONTENT="Global">
<META NAME="Robots" CONTENT="all,index,follow">
<META HTTP-EQUIV="VW96.OBJECT TYPE" CONTENT="homepage">
 
Y nada mas... ahora si, nadamas tenemos que hacer una inclusion de este codigo en un archivo que queramos, por ejemplo en nuestro index.php
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<?php include('_title.php'); ?>
<link href="/styles/final.css" rel="stylesheet" type="text/css" />
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<?php include('_metas.php'); ?>
<?php include('_javascript.php'); ?>
<?php include('_styles.php'); ?>
<?php include('_title.php'); ?>
</head><body>
</body>
</html>
 
Y como pueden ver pues se puede incluir mas codigo que lo hagamos generico para todo el sitio. Taiben se puede hacer por funciones, o clases y eso, pero eso despues se los platico. EXITO!

Cambiar URL cumplejas por URL simples con Mod_Rewrite de Apache

Veremos un ejemplo simple de como utilizar el modulo de apache "Mod_Rewrite", que nos permite crear reglas que serán procesadas por el servidor (siempre que este sea un servidor Linux)

Supongamos que nuestra url actual es de esta forma:
http://www.supagina.com/web/index.php?mod=news&id=2345
Y queremos cambiarla por esta otra:
http://www.mipagina.com/web/noticias/2345.html
Entonces deberíamos crear el directorio "noticias" (sin comillas) y allí subir un archivo .htaccess con la siguiente regla
 
RewriteEngine on 
RewriteBase /web/ 
RewriteRule ^noticias/(.*).html$ index.php?mod=news&id=$1
 
Si quisiéramos darle un poco mas de seguridad podríamos utilizar expresiones regulares más exactas, por ejemplo, que solo se permitan números entre 1 y 6 caracteres
 
RewriteEngine on 
RewriteBase /web/ 
RewriteRule ^noticias/([0-9]{1,6}).html$ index.php?mod=news&id=$1
 
Jugando con expresiones regulares podrás adaptar todas tus URL's complejas a URL's fáciles de recordar.

Vale destacar que con este mismo modulo de apache podremos generar distintas acciones y no solo redireccionar URL, por ejemplo, con una simple línea podríamos denegar el ingreso a un directorio.
Deny from all
 
Esto ultimo se utiliza mucho en, por ejemplo, directorios en donde se guardan los módulos de un sitio, ya que podremos incluir el archivo desde php, pero un extraño no podrá ingresar al archivo tipeando su dirección.

Paginar resultados con PHP

Crearemos una función en PHP para paginar resultados de una consulta MySQL

Función:
 
<?php
function PAGINAR($_max,$_db,$_uri,$_sep,$_class) {
  // $_max obtiene el numero de filas a mostrar en cada pagina (default: 20)
  // $_db contiene la consulta SQL que genera el paginador (default: error)
  // $_uri contiene la URL de la pagina para propagarla (default: automatico)
  // $_sep contiene el/los caracter/es que separan cada numero de pagina, por default son espacios en blanco (opcional)
  // $_class contiene la clase personalizada para darle formato a los vinculos (opcional)
  if (empty($_max)) { $_max = 20; } else { $_max = $_max; }
  if (empty($_sep)) { $_sep = '&nbsp;&nbsp; '; } else { $_sep = $_sep; }
  if (empty($_class)) { $_class = 'paginator'; } else { $_class = $_class; }
  if (empty($_GET['p'])) { $_pag = 1; } else { $_pag = $_GET['p']; }
  if (empty($_db)) { echo 'Error critico. No se ha seteado la variable $_db para realizar la consulta SQL'; exit; } else { $_db = $_db; }
  $_query = @mysql_query($_db); $_total = @mysql_num_rows($_query); $_total = ceil($_total/$_max);
  if (!$_uri) { $_uri = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; } else { $_uri = $_uri; }
  if ($_total >= 2) {
    for ($_i = 1; $_i <= $_total ;$_i++) {
      if ($_pag) {
        if (($_i == $_pag) || (!$_GET[p] && $_i == 1)) { echo '<span class="'.$_class.'">['.$_i.']</span>'.$_sep }
        else { echo '<a href="'.$_uri.'&amp;p='.$_i.'" class="'.$_class.'"><span class="'.$_class.'">'.$_i.'</a>'.$_sep; }
      }
    }
    mysql_free_result($_query);
  }
}
?>
 
Modo de uso (explicado linea a linea):
 
<?php
// indicamos el valor maximo
$_paginador[max] = 20;
 
// obtenemos el valor minimo actual
if (empty($_GET['p']) || $_GET['p'] == 1) { $_paginador[min] = 0; } else { $_paginador[min] = ($_GET['p']-1) * $_paginador[max]; }
 
// realizamos la consulta
$_sql = mysql_query("SELECT * FROM `nombre_de_tabla` DESC LIMIT $_paginador[min],$_paginador[max]");
while ($_row = mysql_fetch_assoc($_sql)) {
  echo $_row['nombre_de_campo'];
}
 
// URL actual
$_paginador['url'] = 'index.php?mod=fotos';
 
// Consulta sin LIMIT para contar los registros totales.
$_paginador['db'] = 'SELECT * FROM `nombre_de_tabla`';
 
// indicamos el separador (opcional)
$_paginador['sep'] = '&nbsp;&nbsp;';
 
// indicamos la clase CSS (opcional)
$_paginador['class'] = 'blue';
 
// llamamos al paginador
PAGINAR($_paginador[max],$_paginador['db'],$_paginador['url'],$_paginador['sep'],$_paginador['class']);
 
?>
 

Volcar el contenido de un array en PHP

Al hacer var_dump se muestra el contenido de un array, pero no de una forma vistosa. Con esta funcion sera mucho mas visual el printado.
 
		// Dumpear Array
		// Muestra los elementos de un array
		function Dumpear($item) {
	   	    print "<pre>\n";
			ob_flush();
			ob_start();
			var_dump($item);
			print htmlentities(ob_get_clean());
			print "</pre>\n";
		}
 

Código de ejemplo de un widget para wordpress

(funciona con el plugin que da soporte para widgets de wordpress)
 
function widget_myuniquewidget($args) {
 
    extract($args);
?>
        <?php echo $before_widget; ?>
            <?php echo $before_title
                . 'My Unique Widget'
                . $after_title; ?>
            Hello, World!
        <?php echo $after_widget; ?>
<?php
 
}
 
register_sidebar_widget( 'My Unique Widget', 'widget_myuniquewidget' );
 

Generar enlaces a los directorios 2.0

Este sencillo código genera el lo necesario para transformar la ID de tu entrada en los enlaces para los sistemas de promoción de noticias mas conocidos.
 
// Comunidades
function getComunities($postid) {
$posturl = "http://www.melkorcete.com/index.php?p="; // Tu web hasta la variable $_GET 
$url = htmlentities( $posturl.$postid); // De cara a validacion 
?>
 
<a href="http://del.icio.us/post?url=<?= $url ?>" target="_blank">
<img src="icos/delicious_s.gif" alt="Add to del.icio.us" />
</a>
<a href="http://meneame.net/submit.php?url=<?= $url ?>" target="_blank">
<img src="icos/menealo.png" alt="Men&eacute;alo" />
</a>
<a href="http://digg.com/submit?phase=2&url=<?= $url ?>" target="_blank">
<img src="icos/digg.png" alt="Digg" />
</a>
<a href="http://tec.fresqui.com/post?url=<?= $url ?>" target="_blank">
<img src="icos/fresqui.png" alt="Fresqui" />
</a>
<a href="http://www.blogmemes.com/post.php?url=<?= $url ?>" target="_blank">
<img src="icos/blogmemes.png" alt="BlogMemes" />
</a>
<a href="http://furl.net/storeIt.jsp?&u=<?= $url ?>" target="_blank">
<img src="icos/toonfuse.png" alt="Furl" />
</a>
<a href="http://www.neodiario.net/submit.php?url=<?= $url ?>" target="_blank">
<img src="icos/neodiario.png" alt="NeoDiario" />
</a>
<a href="http://www.melkorcete.com/index.php?p=<?= $postid ?>" target="_blank">
<img src="icos/permalink.png" alt="Permalink" />
</a>
<?
}
 

Escala una imágen forzando un alto máximo

Escala una imágen forzando un alto máximo.
 
function f_resizeMaxHeight($file, $height) {
	$imSrc  = imagecreatefromjpeg($file);
	$w      = imagesx($imSrc);
	$h      = imagesy($imSrc);
	if($h>$height) {
		$width = ($w/$h)*$height;
		$imTrg  = imageCreateTrueColor($width, $height);
		imagecopyresized($imTrg, $imSrc, 0, 0, 0, 0, $width, $height, $w, $h);
		imagedestroy($imSrc);
		imagejpeg($imTrg, $file, 95);
		imagedestroy($imTrg);
	} else {
		imagedestroy($imSrc);
	}
}
 

Escalado de una imagen forzando ancho y alto sin deformarla

Escala una imágen al máximo ancho o al máximo alto, según sea su proporción y la proporción deseada, y coge la parte central del resultado garantizando la proporcion deseada.

Dicese, de una imagen de 1600 x 1200, si se solicita 350x300, la escalará a 400x300 y cogerá de 25,0 a 375,300 garantizando un escalado sin distorsión, y las medidas deseadas.

function clipImage($file, $width, $height) {
	$imSrc  = imagecreatefromjpeg($file);
	$w      = imagesx($imSrc);
	$h      = imagesy($imSrc);
	if($width/$height>$w/$h) {
		$nh = ($h/$w)*$width;
		$nw = $width;
	} else {
		$nw = ($w/$h)*$height;
		$nh = $height;
	}
	$dx = ($width/2)-($nw/2);
	$dy = ($height/2)-($nh/2);
	$imTrg  = imageCreateTrueColor($width, $height);
	imagecopyresized($imTrg, $imSrc, $dx, $dy, 0, 0, $nw, $nh, $w, $h);
	imagedestroy($imSrc);
	imagejpeg($imTrg, $file, 95);
	imagedestroy($imTrg);
}

Escala una imágen forzando un ancho máximo

Escala una imágen forzando un ancho máximo.

function f_resizeMaxWidth($file, $width) {
	$imSrc  = imagecreatefromjpeg($file);
	$w      = imagesx($imSrc);
	$h      = imagesy($imSrc);
	if($w>$width) {
		$height = ($h/$w)*$width;
		$imTrg  = imageCreateTrueColor($width, $height);
		imagecopyresized($imTrg, $imSrc, 0, 0, 0, 0, $width, $height, $w, $h);
		imagedestroy($imSrc);
		imagejpeg($imTrg, $file, 95);
		imagedestroy($imTrg);
	} else {
		imagedestroy($imSrc);
	}
}
info@recortex.com - Proyecto: Juanjo Navarro, 2006 - Diseño: Albin