Archivo de la categoría: PHP

Crear tabla en PHP a partir de query MySQL

Para  mi último trabajo tenía que mostrar los resultados de una query de MySQL en una tabla, dinámicamente, de tres columnas. Aquí os dejo el código que usé para ello:

global $db;
$clasificaciones = $db->query('SELECT tematica AS a FROM pa.clasificaciones c ORDER BY RAND() LIMIT 12');
$n=0;
$columnas=3;
echo '<table width="100%" border="0">';
while($c = $db->fetchRow($clasificaciones))
{
	if ($n == 0) echo '<tr>';
	echo '<td>'.$c['a'].'</td>'; 
	$n++;
	if ($n == $columnas)
	{
		$n=0;
		echo '</tr>';
	}
}
echo '</table>';

Como podéis ver, creamos dos variables $n y $columnas. Inicializando la primera a 0 le decimos donde empieza la primera columna y en $columnas el número de ellas que queremos, en este caso tres. Cuando $n sea igual que el valor de $columnas se cerrará el tr abierto anteriormente.

Espero que os sea útil.

Fechas estilo Twitter

Os voy a dejar dos pequeños snippets para conseguir mostrar las fechas de vuestros proyectos/blogs como Twitter. Generalmente las fechas se muestran con formato “dd/mm/yyyy” (dias, mes, año) pero con estos códigos conseguiréis mostrarlos como “hace 1 día”.

El primer código es para WordPress y para ello usaremos la función human_time_diff. Este código es para la fecha de las entradas:

<?php echo human_time_diff(get_the_time('U'), current_time('timestamp')); ?>

Y este para los comentarios:

<?php echo human_time_diff(get_comment_time('U'), current_time('timestamp')); ?>

Ahora pasemos al código para PHP puro, que supongo que también vale para WordPress y puede ser modificado para mostrar los segundos, minutos, horas, meses y/o años que pasaron desde que se escribió una noticia.

Lo primero es el código de la función, que guardaremos en un archivo functions.php (por ejemplo):

function  timeAgo($timestamp, $granularity=2, $format='Y-m-d H:i:s'){
        $difference = time() - $timestamp;
        if($difference < 0) return '0 seconds ago';
        elseif($difference < 864000){
                $periods = array('week' => 604800,'day' => 86400,'hr' => 3600,'min' => 60,'sec' => 1);
                $output = '';
                foreach($periods as $key => $value){
                        if($difference >= $value){
                                $time = round($difference / $value);
                                $difference %= $value;
                                $output .= ($output ? ' ' : '').$time.' ';
                                $output .= (($time > 1 && $key == 'day') ? $key.'s' : $key);
                                $granularity--;
                        }
                        if($granularity == 0) break;
                }
                return ($output ? $output : '0 seconds').' ago';
        }
        else return date($format, $timestamp);
}

De este código podremos modificar $granularity para la precisión con la que muestre el tiempo que pasó y $format para el formato en que se pasa la fecha. Ahora solo faltará hacer la llamada a la función

$time = timeAgo($dateRef); 

Via| PHPsnippets

Registro y login de usuarios con PHP y MySQL (I)

Hace unos años ya desde que hice Geranioshop para el FP de D.A.I. que cursaba y desde aquella quise haceros un tutorial para crear un sistema de registro y login de usuarios. Ahora tengo más conocimientos gracias a squast.me (de hecho estos tutoriales seguirán las pautas que seguí en la creación de este sistema para este proyecto e intentaré mostraros también como implementar Facebook y Twitter Connect). Deciros que siempre hay formas más fáciles y/o mejores para hacer las cosas, y estos tutoriales pueden tener errores.

En este primer capítulo nos centraremos en preparar la base de datos y crear la tabla necesaria para el registro de los usuarios y en los próximos nos pondremos con el código en PHP, formularios, conexiones a la BD, etc.

Para empezar supongo que tenéis conocimientos de MySQL, phpmyadmin, etc para crear las tablas necesarias en la base de datos. Nos ponemos manos a la obra y creamos una BD de nombre usuarios:

CREATE DATABASE IF NOT EXISTS usuarios;
USE usuarios;

Tras tener la base de datos creada, ahora le toca a la tabla para almacenar los datos de los usuarios, de nombre users (podéis llamarle como queráis, usuarios…) con estos campos para empezar:

'iduser' int(5) not null auto_increment,
'nom' varchar(45) not null,
'ape' varchar(45) not null,
'nick' varchar(20) not null,
'email' varchar(40) not null,
'pswd' varchar(32) not null,
'pswd2' varchar(32) not null

Los campos principales son iduser, nick, email y pswd y con los que verificaremos si el usuario ya existe, si la contraseña es correcta (con el campo pswd2) o si el email está siendo usado. A parte de estos campos, podéis usar los que queráis como año de nacimiento, sexo, ciudad, etc. Tras el salto os dejo el archivo por si lo queréis descargar e importar directamente a vuestra base de datos.

Sigue leyendo

Buscar carácter o cadena de texto en URL con PHP

Para squast.me, el proyecto del cual ya os hablé, necesitaba buscar una cadena de texto predefinida en una URL. Integré Facebook para que el usuario se pudiese registrar y/o logear mediante su cuenta en dicha red social. Lo que tenía que mirar era si el usuario era nuevo o tenía ya una cuenta creada con el formulario de registro “normal”. Si era un usuario con una cuenta ya creada, lo que tenía que mirar era la posibilidad de vincularlos, en vez de crear dos cuentas para un mismo usuario.

Para ello lo primero que miro es si la URL que tiene el usuario en Facebook está personalizada, es decir, miro que sea del tipo facebook.com/usuario o, por el contrario, facebook.com/profile.php?id=464687.

Aquí es donde entra en juego la función strrpos. Esta función encuentra la posición de la última aparición de un carácter en una cadena. Es decir, nos señala si existe el carácter o cadena de texto que elijamos en otra cadena.

<?php   
$cadena="Hola a todos";   
$buscar="todos";     
if (strrpos($cadena, $buscar))
{
    echo "Está incluida la $buscar en la $cadena";   
}else{  
    echo "No está incluida la $buscar en la $cadena";  
}
?> 

Una cosa importante es que esta función distingue entre mayúsculas y minúsculas, por lo tanto tendréis que tener cuidado a la hora de poner lo que queréis buscar dentro de la cadena.