Daniel Segovia

Blog personal

Archive for junio, 2011

Enviar una consulta a MySQL

Hacer un comentario

Para enviar un consulta a MySQL usaremos la función mysql_query
mysql_query acepta 2 parámetros, el primero es una cadena de texto con la consulta en lenguaje SQL y la consulta no debe terminar en punto y coma (;) ya que la función no acepta múltiples consultas
El segundo parámetro es el identificador de la conexión (igual que con mysql_select_db), si éste no se especifica usará el último abierto, sí no hay conexión alguna abierta ejecutará mysql_connect sin parámetros y sí la conexión no es exitosa devolverá un error del tipo E_WARNING.

Cuando la consulta ejecutada es correcta y no hay ningún problema de conexión la función devolverá un identificador, caso contrario devolverá un false

<?php
$identificador = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db('nombre_base', $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  nombre_base " . mysql_error());
}
 
//Consulta invalida
$resultado = mysql_query('SELECT * FROM');
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
?>

Aquí un ejemplo con una consulta SQL correcta

<?php
$identificador = mysql_connect('localhost', 'usuario', 'contrasena');
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db('nombre_base', $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  nombre_base " . mysql_error());
}
 
//Consulta invalida
$resultado = mysql_query('SELECT * FROM usuarios');
if (!$resultado) {
    die('Query invalido: ' . mysql_error());
}
?>

Written by Daniel Segovia

junio 14th, 2011 at 6:12 pm

Seleccionar base de datos

Un comentario

Podemos seleccionar una base de datos dentro del servidor MySQL con la función mysql_select_db
mysql_select_db establecerá la base de datos activa que estará asociada al identificador (mysql_connect). Si no se especifica un identificador para asociar la base de datos usará el último abierto.
Si la selección fue exitosa toda llamada posterior con mysql_query utilizará la base activa.

<?php
$host = "localhost";
$usuario = "miuser";
$contrasena = "micontrasena";
$base_de_datos = "base_nombre";
 
$identificador = mysql_connect($host, $usuario, $contrasena);
if (!$identificador) {
    die('No se pudo conectar : ' . mysql_error());
}
 
$db_seleccionada = mysql_select_db($base_de_datos, $identificador);
if (!$db_seleccionada) {
    die ("Imposible usar  $base_de_datos " . mysql_error());
}
?>

Written by Daniel Segovia

junio 13th, 2011 at 1:15 pm

Conectarse a MySQL

Hacer un comentario

Para conectarse a la base de datos MySQL necesitamos la información necesaria.
Donde esta la base de datos y las credenciales para acceder.
Ésta información es la que nos pide la función mysql_connect de PHP para abrir una conexión a la base de datos.

En caso de conectarse con éxito nos devolverá un identificar de enlace, caso contrario un false

<?php
$link =  mysql_connect('localhost', 'mysql_user', 'mysql_password'); //Abro la conexión
if (!$link) { //Pregunto si se pudo conectar correctamente
    die('No pudo conectarse: ' . mysql_error()); //Mato el script y muestro el mensaje de error de MySQL
}
mysql_close($link); // Cierro la conexión
?>

El primer parámetro es la dirección donde se encuentra el MySQL server, el segundo el usuario y el tercero la contraseña.
Existen 2 parámetros adicionales para mysql_connect

Cuarto parámetro new_link: Cuando se crea una conexión con mysql_connect la función devuelve un identificador, si se llama a mysql_connect con los mismos parámetros no realiza una nueva conexión, directamente devuelve el identificador. El cuarto parámetro modifica éste comportamiento, lo que hará es devolver un nuevo identificador.

El quinto parámetro es una constante que permite cambiar determinados aspectos de la conexión. Lea más en constantes de MySQL

Nota: En el primer parámetro puede encontrar direcciones similares a las siguientes
 
mysql_connect('localhost', 'user', 'pass');
mysql_connect('localhost:5050', 'user', 'pass'); //host:puerto
mysql_connect('example.com', 'user', 'pass');  //url
mysql_connect('example.com:4050', 'user', 'pass'); //url:host
mysql_connect(':/tmp/mysql', 'user', 'pass'); //omite localhost
mysql_connect('localhost:/tmp/mysql.sock', 'user', 'pass'); //omite localhost

Written by Daniel Segovia

junio 9th, 2011 at 1:36 pm

PHP y MySQL

Hacer un comentario

PHP y MySQL debe ser la combinación más usada en Internet.
PHP soporta conexión a MySQL desde la su base.
Aquí veremos como conectarnos a la base de datos, como ejecutar querys (insert, select, update y delete) y también como traer información para poder mostrarla.
Las funciones nativas que usaremos son:

mysql_connect
mysql_select_db
mysql_query
mysql_fetch_assoc
mysql_fetch_array

Written by Daniel Segovia

junio 9th, 2011 at 12:55 pm

Exportar desde PHP a un archivo Excel

Hacer un comentario

Cambiando los headers que se envían se puede crear un archivo y este quedará listo para que el usuario lo descargue.
Con la función header de PHP lo cambiaremos.

<?php
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=autos.xls");
header("Pragma: no-cache");
header("Expires: 0");
?>
<table border="1">
        <tr>
            <th>Marca</th>
            <th>Modelo</th>
            <th>A&ntilde;o</th>
            <th>KM</th>
        </tr>
        <tr>
            <td>Fiat</td>
            <td>Palio</td>
            <td>2005</td>
            <td>130.000</td>
        </tr>
        <tr>
            <td>Fiat</td>
            <td>Uno</td>
            <td>1998</td>
            <td>250.000</td>
        </tr>
        <tr>
            <td>Ford</td>
            <td>Fiesta</td>
            <td>1997</td>
            <td>366.000</td>
        </tr>
        <tr>
            <td>Chevrolet</td>
            <td>Corsa</td>
            <td>2008</td>
            <td>56.000</td>
        </tr>
        <tr>
            <td>Fiat</td>
            <td>Punto</td>
            <td>2006</td>
            <td>94.000</td>
        </tr>
</table>

Lo importante en este script son los headers que hemos modificado.
El armado de la tabla puede provenir de donde querramos, ya sea de un array o una base de datos por ejemplo.

Written by Daniel Segovia

junio 8th, 2011 at 1:28 pm

Posted in General

Acortar ID

Hacer un comentario

Muchas veces necesitamos tener un ID más corto por temas de espacio.
Un ejemplo simple es con todos los short URL que hay para twitter

Estás 2 funciones transforman un ID en la mínima expresión posible

El array $chr nos dará todas las combinaciones posibles que queramos usar

<?php
 
$chr = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
$newId = array();
 
$id = "1260048";
 
shortId($id, $newId);
$normalId =  normalId($newId);
 
echo "newId: $newId";
echo "<br>";
echo "normalId $normalId";
 
 
function shortId($id, &$values){
    global $chr;
    $totalchr = count($chr);
 
    if($id <= $totalchr){
        array_push($values, $chr[$id-1]);
        $values = implode(array_reverse($values));
        return true;
    }
 
    $resto = $id % $totalchr;
    $newId = ($id - $resto) / $totalchr;
 
    if($newId > $totalchr){
        array_push($values, $chr[$resto - 1]);
        shortId($newId, $values);
    }else{
        array_push($values, $chr[$resto - 1]);
        array_push($values, $chr[$newId - 1]);
        $values = implode(array_reverse($values));
    }
 
}
 
function normalId($id){
    global $chr;
    $totalchr = count($chr);
 
    if(strlen($id) == 1){
        return (array_search($id[0], $chr) + 1);
    }
 
    $value = 1;
 
    $value = (array_search($id[0], $chr) + 1) * $totalchr;
    $value += array_search($id[$i + 1], $chr) + 1;
 
    for($i=1; $i<strlen($id); $i++){
        if(!isset($id[$i + 1])){
            break;
        }
        $value *=  $totalchr;
        $value += array_search($id[$i + 1], $chr) + 1;
    }
 
    return $value;
 
}
 
?>

Written by Daniel Segovia

junio 3rd, 2011 at 5:46 pm

Posted in General