RSS
Recortes: 38
mysql
imagenes
fichero
jpg
html
xhtml
fechas
letras
formato
apache
todas
dieresis
números
castellano
javascript
formulario
variables
español
SQL
cuenta-registros
mascara
array
ID
tus
Digg
paginas
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
Aqui os dejo el codigo para que podais integrar completamente el nuevo foro phpBB3 en tu web sin complicaciones :)
Debemos poner el siguiente codigo al principio de cada pagina en la que vayamos a necesitar algo del foro phpbb3, antes de enviar nada al navegador.
define('IN_PHPBB', true); $phpbb_root_path = '/foros/'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx); // Start session management $user->session_begin(); $auth->acl($user->data);
Tener encuenta que
$phpbb_root_path = '/foros/';
almacena la ruta donde está almacenado el foro. En nuestro caso esta en una carpeta llamada foros alojada en el directorio raiz.
Una vez añadido este código ya tenemos acceso a las variables de usuario del foro. Algunas de ellas son:
$user->data['user_id']; /* Devuelve el identificador del usuario conectado */ $user->data['is_registered'] /* TRUE si el usuario esta identificado FALSE en caso contrario */
Si has tenido que mostrar alguna vez las entradas de un directorio y has tenido que filtrarlas de alguna forma (para ver, por ejemplo, todos los archivos de texto, los archivos XML, las imágenes …) posiblemente lo hayas resuelto abriendo el directorio, leyendo una a una cada entrada, comparándola con lo que buscabas y, después de hacer lo que necesitas, cerrando el directorio.
Pues has hecho mal. Existe una forma mucho más rápida de hacerlo. En PHP desde la versión 4.3 se hace uso de una función también disponible en la biblioteca estándar de C llamada glob().
En PHP su uso es, como suele suceder con todas las demás, mucho más fácil que en C. Pero qué mejor que un ejemplo:
<?php foreach (glob("*.txt") as $nombre_archivo) { echo $nombre_archivo ' con tamaño ', filesize($nombre_archivo), " bytes\n"; } ?>
Esto mostrará una salida como esta:
archivo1.txt con tamaño 44686 bytes archivo2.txt con tamaño267625 bytes archivo3.txt con tamaño137820 bytes
Función creada para convertir números en texto, especÃficamente con dos decimales. Para PHP
<?php function letras($n){ $cent=array( 1=>'ciento', 'doscientos', 'trescientos', 'cuatrocientos', 'quinientos', 'seiscientos', 'setecientos', 'ochocientos', 'novecientos'); $dec=array( '', '', '', 'treinta', 'cuarenta', 'cincuenta', 'sesenta', 'setenta', 'ochenta', 'noventa' ); $uni=array( '', ' y un', ' y dos', ' y tres', ' y cuatro', ' y cinco', ' y seis', ' y siete', ' y ocho', ' y nueve'); for ($i=0; $i<100;$i++){ $d=(int)($i/10); $u=$i%10; $num[$i]=$dec[$d].$uni[$u]; } $num[0]=''; $num[1]='un'; $num[2]='dos'; $num[3]='tres'; $num[4]='cuatro'; $num[5]='cinco'; $num[6]='seis'; $num[7]='siete'; $num[8]='ocho'; $num[9]='nueve'; $num[10]='diez'; $num[11]='once'; $num[12]='doce'; $num[13]='trece'; $num[14]='catorce'; $num[15]='quince'; $num[16]='dieciseis'; $num[17]='diecisiete'; $num[18]='dieciocho'; $num[19]='diecinueve'; $num[20]='veinte'; $num[21]='veintiun'; $num[22]='veintidos'; $num[23]='veintitres'; $num[24]='veinticuatro'; $num[25]='veinticinco'; $num[26]='veintiseis'; $num[27]='veintisiete'; $num[28]='veintiocho'; $num[29]='veintinueve'; $num[30]='treinta'; $num[40]='cuarenta'; $num[50]='cincuenta'; $num[60]='sesenta'; $num[70]='setenta'; $num[80]='ochenta'; $num[90]='noventa'; $num[100]='cien'; if ($n<=100) { return $num[$n]; } else if($n<1000) { $c=(int)($n/100); return("$cent[$c] ".letras($n%100)); } else if ($n<1000000) { $c=(int)($n/1000); $p=letras($c); return("$p mil " .letras($n%1000)); } else { $c=(int)($n/1000000); $p=letras($c); $q=($p=='un')?'millón':'millones'; return("$p $q " .letras($n%1000000)); } } function letras2($monto){ $cant=explode('.',$monto); $v1=($cant[0]==0)?'cero':letras($cant[0]); $v2='0.'.$cant[1]; $v2=substr('0'.round($v2*100,0),-2); return $v1.' con '.$v2.'/100'; }
Pues es sencillo: se sacan todos los IDs de la tabla y se inicializa una variable a 0 (el ID mÃnimo) y se va mirando si está en la matriz de los IDs de la tabla. Si está en la matriz, probar con el siguiente ($i++), pero si no está, hemos encontrado un ID reutilizable (o nuevo, si se ha llegado al lÃmite de la matriz).
Principalmente sirve para no tener que meter un ID nuevo en una tabla, si ya se han liberado IDs (borrado registros) anteriormente. Asà además el tamaño del campo ID no hace falta que sea muy grande si se eliminan y se añaden muchos registros.
// Doy por supuesto que ya se ha conectado a una base de datos // $tabla es el nombre de la tabla en donde hay que buscar un ID libre function buscar_id_libre($tabla){ global $db; // Sacar todos los IDs de la tabla $res = mysql_query("SELECT id FROM $tabla"); if($res){ while(false !== ($reg = mysql_fetch_assoc($res))) $ids[] = intval($reg['id']); }else{ $ids = array(0); } // Buscar un ID que no este en la matriz (o en la tabla) $i = 0; while(in_array($i, $ids)){ $i++; } return $i; }
Con estas dos lÃneas se puede formatear una fecha en castellano (y en otro idioma instalado):
Se puede conseguir ayuda en la web de PHP (http://es.php.net/strftime)
// Establecer la constante global LC_TIME a español // NOTA: Esto se establece globalmente para PHP, si éste está // cargado como Módulo en vez de CGI. Esto es, desde que se establece // hasta que se cierra PHP, no hasta que termina el script. setlocale(LC_TIME, 'sp'); // Es un poco diferente a la función Date() pero los argumentos son los mismos echo strftime('%A, %d de %B de %Y'); // Escribe: martes, 19 de junio de 2007
Si se quiere convertir, por ejemplo á por á y todas las demás, con esta simple función ya vale. Su funcionamiento:
1. Convierte TODOS los caracteres especiales a entidades.
2. Como los caracteres <, & y > no nos interesa que queden codificados, se vuelven a descodificar (sólo estos).
function caracteres_html($texto){ $texto = htmlentities($texto, ENT_NOQUOTES, 'UTF-8'); // Convertir caracteres especiales a entidades $texto = htmlspecialchars_decode($texto, ENT_NOQUOTES); // Dejar <, & y > como estaban return $texto; }
Si no se dispone de PHP 5 o posterior, se necesita también agregar el siguente código:
if ( !function_exists('htmlspecialchars_decode') ) { function htmlspecialchars_decode($text) { return strtr($text, array_flip(get_html_translation_table(HTML_SPECIALCHARS))); } }
A disfrutarlo!
No se uds. pero antes hacer combos que se cargaran donde uno dependia de otro era algo engorroso, claro que habia varios metodos, se podia usar iframes o recargar la pagina, aunque sinceramente ninguno de esos me parece muy bueno, hace poco necesite hacer algo asi para una web app, asi que le digo como lo hice, no se si sera lo mejor pero talvez a alguien le sirva.
Por si acaso esto esta hecho con PHP y MySQL
Primero tenemos nuestro formulario
Esas dos son clases donde la primera permite manejar la Base de datos, esa clase la postee hace un tiempo aqui.( http://www.recortex.com/recorte/177 )
Todo lo que viene a continuacion esta dentro de un solo archivo formulario.php
<?php include("./cls/clsManejaBD.php"); include("./cls/clsUbicacion.php"); ?>
<form action="./actions/registrar_evento.php" method="post" id="frmRegistraEvento"> <fieldset><label>Departamento</label> <?php /*instancio la clase y llamo a un metodo de la misma que va a generar la lista de departamentos*/ $u=new Ubicacion(); $u->Generar_Combo_Departamentos(); ?> </fieldset> <fieldset><label>Provincia</label><div id="cmbProvincia">Provincia</div></fieldset> <fieldset><label>Distrito</label><div id="cmbDistrito">Distrito</div></fieldset> <fieldset><label>Fecha</label><input type="text" name="txtFecha" value="dd/mm/aaaa" size="10" maxlength="10"/></fieldset> <fieldset><label>Tema</label><input type="text" name="txtTema" value="tema tratado"/></fieldset> <fieldset><label>Publico</label><input type="text" name="txtPublico" value="publico atendido"/></fieldset> <fieldset><label>Lugar</label><input type="text" name="txtLugares" value="lugar"/></fieldset> <fieldset><label>Cantidad</label><input type="text" name="txtCantidad" value="0"/></fieldset> <fieldset><label>N° de Informe</label><input type="text" name="txtInforme" value="N° de Informe" /></fieldset> <fieldset><label>Fecha de Informe</label><input type="text" name="txtFecha_Informe" value="dd/mm/aaaa" size="10" maxlength="10"/></fieldset> <fieldset><input type="button" name="aceptar" value="aceptar"/> <input type="button" name="borrar" value="borrar"/></fieldset> </form>
Cuando se vea esta pagina el navegador reemplazara donde aparece nuestro codigo php por esto
<select id="departamento" onchange="cambio(id,2);"> <option> Amazonas</option> <option> Ancash </option> <option> Arequipa </option> ... </select>
ahora viene la parte de javascript, yo tengo una funcion denominada cambio() dentro de la cual valido el destino y que pagina cargar, lo que sigue pueden ponerlo en la misma pagina o en un archivo js aparte
function cambio(id, dest) { var index=document.getElementById(id).selectedIndex; var url; var detino; /*de acuerdo al combo que cambie carga el dato del siguiente combo combo "departamento" carga "provincias" y "provincias" carga "distritos" */ if(dest==2) { url="cargar_provincias.php?idDep=" + (index+1); /*a la variable se le suma 1 ya que el indice del combo empieza en 0*/ destino='cmbProvincia'; } if(dest==3) { url="cargar_distritos.php?idProv=" + (index+1) + "&idDep=" + (document.getElementById('departamento').selectedIndex + 1); destino='cmbDistrito'; } cargarDatos(url, "action", destino);//esta es una funcion que llama al ajax }
Bueno aunque yo tengo separado en archivos diferentes en este caso vamos a decir que tanto la funcion de arriba como la funcion para ajax se encuentra en el mismo archivo
function cargarDatos(pagina, dir, target) { var page = false; var target; var url; url="./" + dir + "/" + pagina; if (window.XMLHttpRequest) { // Si es Mozilla, Safari etc page = new XMLHttpRequest (); } else if (window.ActiveXObject) { // pero si es IE try { page = new ActiveXObject ("Msxml2.XMLHTTP"); } catch (e) { // en caso que sea una versión antigua try { page = new ActiveXObject ("Microsoft.XMLHTTP"); } catch (e) { } } } else { return false;} page.onreadystatechange = function () { // función de respuesta if (page.readyState != 4) { document.getElementById (target).innerHTML= '<div id="loader"><img src="./img/ajax-loaderC.gif" > Cargando datos...</div>'; }else{ //window.setTimeout("cargarpagina(page);",2000); //pretendemos demorar la respuesta unos segundos cargarpagina(page, target); } } page.open ('GET', url, true); // asignamos los métodos open y send page.send (null); } function cargarpagina(page, target) { if (page.readyState == 4 && (page.status == 200 || window.location.href.indexOf ("http") == - 1)) document.getElementById (target).innerHTML = page.responseText; }
por ultimo debemos tener nuestros archivos php, yo los tengo en una carpeta llamada “action”
aqui le muestro el que carga los distritos para que se den una idea
<?php include("../cls/clsManejaBD.php"); include("../cls/clsUbicacion.php"); $id_departamento=$_GET['idDep']; $id_Provincia=$_GET['idProv']; $u=new Ubicacion(); $u->Generar_Combo_Distritos($id_departamento,$id_Provincia); ?>
por ultimo no se uds. pero a veces me ha pasado a mi que en tutoriales como estos no ponen el codigo completo php y uno se pierde, asi que aqui les pongo el codigo de la clase Ubicacion.
getSQL($query); return $rs; } function Generar_Combo_Departamentos() { $rs=$this->ListarDepartamentos(); if (mysql_num_rows($rs)>0) { echo "<select id='departamento' onchange='cambio(id,2);'>"; while($data=mysql_fetch_array($rs,MYSQL_NUM)) { echo "<option> $data[1] </option>"; } echo "</select>"; } else { echo "no existen datos para mostrar"; } mysql_free_result($rs); } function ListarProvincias($fk_departamento) { $dbm=new ManejaBD; $query="SELECT idProvincia, nombre FROM Provincia where fk_Departamento=$fk_departamento"; $rs=$dbm->getSQL($query); if($rs) { return $rs; } } function Generar_Combo_Provincias($idDepartamento) { $rs=$this->ListarProvincias($idDepartamento); if (mysql_num_rows($rs)>0) { echo "<select id='provincia' onchange='cambio(id,3);'>"; while($data=mysql_fetch_array($rs,MYSQL_NUM)) { echo "<option> $data[1] </option>"; } echo "</select>"; } else { echo "no existen datos para mostrar"; } mysql_free_result($rs); } function ListarDistritos($fk_departamento, $fk_provincia) { $dbm=new ManejaBD; $query="SELECT DISTINCT idDistrito, nombre FROM Distrito where fk_Departamento=$fk_departamento and fk_Provincia=$fk_provincia"; $rs=$dbm->getSQL($query); if($rs) { return $rs; } } function Generar_Combo_Distritos($idDepartamento, $idProvincia) { $rs=$this->ListarDistritos($idDepartamento, $idProvincia); if (mysql_num_rows($rs)>0) { echo "<select id='distrito'>"; while($data=mysql_fetch_array($rs,MYSQL_NUM)) { echo "<option> $data[1] </option>"; } echo "</select>"; } else { echo "no existen datos para mostrar"; } mysql_free_result($rs); } function Ubicacion_Evento($idEvento) { $dbm=new ManejaBD; $query="SELECT direccion FROM Ubicacion where fk_Evento=$idEvento"; $rs=$dbm->getSQL($query); if($rs) { return $rs; } } }
A pedido de un usuario ahi esta cargar_distritos.php
include("../cls/clsManejaBD.php"); include("../cls/clsUbicacion.php"); $id_departamento=$_GET['idDep']; $id_Provincia=$_GET['idProv']; $u=new Ubicacion(); $u->Generar_Combo_Distritos($id_departamento,$id_Provincia);
aunque un poco largo espero sea entendible _
Esta es una clase que permite de manera dinamica crear tu galeria de imagenes, funciona sobre todo para casos donde no tienes una BD donde apoyarte para la creacion de tus albums de imagenes, creo que aun le voy a poner mas cosas, aqui en este sitio encontre una funcion para crear thumbsnails, que quisiera acoplar a esta clase.
/******************* CLASE GALERIA METODOS mostrarGaleria($id,$max); lista todas las imagenes que aparecen en el directorio seleccionado, este directorio viene especificado en la variable $id. El argumento $max define cuantas fotos como maximo son mostradas. crarMiniGalerias($ini);el argumento $ini define desde donde empieza a mostrar, funciona para hacer la paginacion ***************/ class Galeria { function mostrarGaleria($id,$max){ $ext = array("jpg", "png", "jpeg", "gif");//@LISTA DE EXTENSIONES ACEPTABLES $c=0;//@CONTADOR DEL NUMERO DE ARCHIVOS ENCONTRADOS SEGUN EL FILTRO; $datos=array(); $a=3; //@$a=5;//@ESPECIFICA EL NUMERO DE ARCHIVOS QUE DEBE TENER CADA LISTA; $dir="./galerias/".$id; if(is_dir($dir)){ if ($gestor = opendir($dir)) { include ("./galerias/$id/datos.php"); echo "\t<div class='galeria'>\n"; echo "<p class='titulo'> $titulo </p>"; echo "\n\t<div>\n"; echo "\t\t<ul>\n"; if($max==0){ while (false !== ($archivo = readdir($gestor))) { if ($archivo != "." && $archivo != "..") { for($i=0;$i<sizeof($ext);$i++){ if(stristr($archivo, ".".$ext[$i])){ if ($c%$a==0 && $c!=0) { echo "\t</ul>\n"; echo "\t<ul>\n"; echo "<li class='fila'> <a href='$dir/$archivo' class='imagen' target='_blank'> <img src='$dir/$archivo' alt='$archivo'/> </a></li>\n"; } else { echo "<li class='fila'> <a href='$dir/$archivo' class='imagen' target='_blank'> <img src='$dir/$archivo' alt='$archivo' /> </a></li>\n"; } $c++; } } } } } else{ while(!false==($archivo=readdir($gestor)) and $c<$max){ if ($archivo != "." && $archivo != "..") { for($i=0;$i<sizeof($ext);$i++){ if(stristr($archivo, ".".$ext[$i])){ if ($c%$a==0 && $c!=0) { echo "\t</ul>\n"; echo "<ul>\n"; echo "<li class='image'> <a href='$dir/$archivo' class='imagen' target='_blank'> <img src='$dir/$archivo' alt='$archivo' /> </a> </li>\n"; } else { echo "<li class='image'> <a href='$dir/$archivo' class='imagen' target='_blank'> <img src='$dir/$archivo' alt='$archivo' /> </a> </li>\n"; } $c++; } } } } } echo "\t</ul>\n"; echo "<div class='descripcion'> $descripcion </div>\n\t"; if($max!=0){ echo"\n\t<a href='galeria.php?gid=$id' class='oDir'> ver [+] </a>"; } echo "\n\t</div>\n"; echo "</div>\n"; closedir($gestor); } } } function creaMiniGalerias($ini) { echo "<div id='miniGalerias'>"; if($ini!=1) { $ini=$ini*2+1; } $max=$ini+3; for($i=$ini;$i<=$max;$i++) { $id='g'.$i; $this->mostrarGaleria($id,3); } echo "</div>"; $dir="./galerias/"; if ($gestor = opendir($dir)) { $g=0; echo "<div id='menuGal'>"; while (false !== ($archivo = readdir($gestor))) { if ($archivo != "." && $archivo != "..") { if($g%4==0) { $c++; echo " <a href='galerias.php?n=$c'> [$c] </a> "; } $g++; } } echo "</div>"; } } function numGalerias() { $dir="./galerias"; if ($gestor = opendir($dir)) { $g=0; while (false !== ($archivo = readdir($gestor))) { if ($archivo != "." && $archivo != "..") { $g++; } } } return $g; } function creaMiniGaleriasPortada() { $n=$this->numGalerias(); echo "<div>"; for($i=$n-2;$i<=$n;$i++) { $id="g".$i; //echo $id; $this->mostrarGaleria($id,2); } echo "</div>"; } }
Una clase sencilla para poder manejar la conexion a una BD MySQL asi como la ejecucion de Querys, uhmmm espero a alguien le sirva y si tiene agregados a la misma, bienvenidos !!!!
//clase Conxeion class ManejaBD { function Configurar($tipo="local") { if($tipo=="local") { $parameters=array("localhost","root","mipwd","mibase"); }else { $parameters=array("http://www.mihost.com","miusuario","micontraseña","mibase"); } return $parameters; } function ejecutarSQL($sql,$tipo="local") { $p=array(); $p=$this->Configurar($tipo); $host=$p[0]; $usr=$p[1]; $pwd=$p[2]; $db=$p[3]; $cn=mysql_connect($host,$usr,$pwd) or die(mysql_error()); mysql_select_db($db); $rs=mysql_query($sql) or die(mysql_error()); } function getSQL($sql,$tipo="local") { $p=array(); $p=$this->Configurar($tipo); $host=$p[0]; $usr=$p[1]; $pwd=$p[2]; $db=$p[3]; $cn=mysql_connect($host,$usr,$pwd) or die(mysql_error()); mysql_select_db($db); $rs=mysql_query($sql) or die(mysql_error()); return $rs; } };
En algunos casos hay personas que gustan de utilizar las tildes inclusive en las webs y en sus posts, asi que hice esta funcion para no tener que formatear manual mente los caracteres como las tildes y “ñ”, no es la gran cosa pero talvez a alguien le ayude asi como es sencillo agregarle mas caracteres.
function caracteresEspeciales($texto) { $nTexto=str_replace('á',"á",$texto); $nTexto=str_replace('é',"é",$texto); $nTexto=str_replace('Ã',"í",$texto); $nTexto=str_replace('ó',"ó",$texto); $nTexto=str_replace('ú',"ú",$texto); $nTexto=str_replace('Ã?',"Á",$texto); $nTexto=str_replace('É',"É",$texto); $nTexto=str_replace('Ã?',"Í",$texto); $nTexto=str_replace('Ó',"Ó",$texto); $nTexto=str_replace('Ú',"Ú",$texto); $nTexto=str_replace('ñ',"ñ",$texto); $nTexto=str_replace('Ñ',"Ñ",$texto); return $nTexto; }