Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas

lunes, 4 de enero de 2016

Obtener el último ID registro insertado SQL PHP

Vamos a obtener el último ID insertado en una tabla, el ID será un campo auto-increment.

Te indicamos 2 formas paraacceder a ese dato:

  • La primera es mediante @@identity, esto debe ser utilizado a continuación de realizar la inserción en la tabla que posteriormente que queréis saber su último ID:
     $rs = mysql_query("SELECT @@identity AS id");
     $fila = mysql_fetch_row($rs);
     echo $fila[0];


  • La segunda forma es obteniendo la máxima ID de la tabla con la función MAX, esta vez no hace falta que se haya insertado antes nada en la tabla a la que queremos saber la ID última.
     $rs = mysql_query("SELECT MAX(id_tabla) AS id FROM tabla");
     $fila = mysql_fetch_row($rs);
     echo $fila[0];


sábado, 2 de enero de 2016

Migrar/cambiar mySQL a SQL Server (SqlSrv) con PHP

Te indicamos los requisitos y pasos que hemos seguido para cambiar en PHP las llamadas a una base de datos mySQL a otra identica en SQL Server.

Podéis ver los requisitos desde este enlace:

https://msdn.microsoft.com/es-es/library/cc296170.aspx

Los pasos son los siguientes:
  • Instalar PHP, en nuestro caso la versión 5.5.30, importante que sea x86, según hemos leído el sqlSrv solo va actualmente con la versión x86, aunque tengas una versión deWindows de 64 bits.
         Aquí lo podéis descargar: http://windows.php.net/download#php-5.5

         Y desde este enlace podéis tener información de como instalarlo en IIS:
         https://technet.microsoft.com/es-es/library/hh994592.aspx

  • Instalar Microsoft Native Client : http://php.net/manual/es/sqlsrv.requirements.php
  • Instalar Microsoft ODBC Driver 11: https://www.microsoft.com/en-us/download/details.aspx?id=36434
  • Descargar los ficheros del sqlSrv Version 3.1: https://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx
  • Se te habrán descargado unos ficheros con diversas versiones del sqSrv para las diferentes versiones de PHP, en nuestro caso la versión será la 5.5.
          En este caso hay 4 ficheros para la versión 5.5:
              - php_sqlsrv_55.dll
              - php_pdo_sqlsrv_55.dll 
              - php_sqlsrv_55_nts.dll
              - php_pdo_sqlsrv_55_nts.dll 


          Escogemos los 2 que estan en negrita, porque viendo el parámetro Thread Safety que hay en el
          phpInfo sale como Disabled, si no cogeríamos los otros ficheros.

          Con estos ficheros lo que hacemos es ponerlos en la carpeta e extensiones de php, en nuestro
          caso c:\php\ext, la ubicación de esta carpeta la podéis sacar del fichero php.ini, buscando
          extension_dir.

          Finalmente en el fichero php.ini hay que agregar las extensiones, de esta forma:
              extension=php_sqlsrv_55_nts.dll
              extension=php_pdo_sqlsrv_55_nts.dll
  • Instalar Microsoft Visual c++ 2012 Redistribuible x86 si es necesario, en nuestro caso lo necesitabamos, porque nos daba un error sobre el fichero MSVCR110.dll, al ejecutar el fichero php.exe.
  • Reiniciar Windows
Estos son los pasos que seguimos nosotros para poder utilizar una base de datos en SQL Server desde PHP.


martes, 29 de diciembre de 2015

Solucionar: Ereg y Eregi obsoletas (Deprecated) en PHP

Para las versiones actuales de PHP estas funciones estan obsoletas, por lo tanto cuando cambies la versión de PHP y tenéis una web con estas funciones estas dejarán de funcionar.

La solución pasa por sustituirlas por otras que actualmente si que va, en este caso podéis cambiarlas de esta forma:

Si tenemos estos ejemplos:

ereg($expresion, $cadena);
eregi($expresion, $cadena);


Las podemos sustituir por la funcion preg_match:

preg_match('/'.$expresion.'/', $cadena);

jueves, 24 de diciembre de 2015

Limpiar una cadena de caracteres de caracteres especiales en PHP


Función para quitar ciertos caracteres especiales, de forma que pasándole a la función una cadena de caracteres devolverá esta misma cadena sin estos caracteres especiales.

function LimpiarDeCaracteresEspeciales($texto)
{
    $texto = preg_replace("/[äáàâã]/", "a", $texto);
    $texto = preg_replace("/[ÄÁÀÂÃ]/", "A", $texto);
    $texto = preg_replace("/[ÏÍÌÎ]/", "I", $texto);
    $texto = preg_replace("/[ïíìî]/", "i", $texto);
    $texto = preg_replace("/[ëéèê]/", "e", $texto);
    $texto = preg_replace("/[ËÉÈÊ]/", "E", $texto);
    $texto = preg_replace("/[öóòôõ]/", "o", $texto);
    $texto = preg_replace("/[ÖÓÒÔÕ]/", "O", $texto);
    $texto = preg_replace("/[üúùû]/", "u", $texto);
    $texto = preg_replace("/[ÜÚÙÛ]/", "U", $texto);
    $texto = preg_replace("/[ç]/", "c", $texto);
    $texto = preg_replace("/[Ç]/", "C", $texto);
    $texto = preg_replace("/[ñ]/", "n", $texto);
    $texto = preg_replace("/[Ñ]/", "N", $texto);

    return $texto;
}


miércoles, 16 de septiembre de 2009

Funcion Shuffle en php

Este método que usamos hace poco para mostrar imágenes aleatoriamente en nuestra web, obviamente no se usa sólamente para eso, ahora vamos a ver si sintaxis y qué es lo que hace exactamente.

Sintaxis:
bool shuffle ( array &$array )

Parámetro:
array -->Ya sea vector sencillo, matriz o multidimensional.

Ejemplo:
<?php
$numaleat = range(1, 20);
shuffle($numaleat);
foreach ($numaleat as $numero) {
echo "$numero ";
}
?>
Aunque en el enlace superior (mostrar imágenes aleatoriamente) es un ejemplo un poco más práctico.

NOTA 1:Esta función asigna nuevas claves a los elementos de la matriz. Se eliminarán las claves existentes que puedan haber sido asignados, en lugar de reordenación de las claves.

NOTA 2: A partir de PHP 4.2.0, no es necesario inicializar el generador de números aleatorios con srand() ó mt_srand(), ya que esto se hace ahora automáticamente.

lunes, 14 de septiembre de 2009

Imágenes aleatorias en un div con php

Ahora vamos a poner un ejemplo sencillo, en el que en una parte de nuestra página queramos mostrar una serie de imágenes, pero de un listado, de las que cada vez que se cargue la página sean distintas.
Aqui pongo un ejemplo del codigo en la pagina y luego lo explico un poco:

<div id="imgaleat">
<!--creamos un vector con las imagenes -->

imagenes telas de carbon" border="0" width="140" height="111" /> imagenes telas de carbon" border="0" width="141" height="111" /> imagenes telas de carbon" border="0" width="142" height="111" /> imagenes telas de carbon" border="0" width="143" height="111" />

Primero creamos un vector vacio, le insertamos el nombre de las imagenes (que tienen que estar en la carpeta "imagenes" donde tenemos nuestros archivos de la página en este ejemplo), luego las barajamos para que tengan posiciones aleatorias cada vez que se cargue la página del servidor y luego mostramos las 4 primeras por ejemplo (aunque podriamos haber puesto cualquier posicion, sin repetir, puesto que cada vez será distinta).
Es importante mirar bien donde las guardamos (las imagenes) para poner bien la ruta (el parámetro "src" de la etiqueta "img" del html.

sábado, 12 de septiembre de 2009

Redondear un numero decimal con PHP

En ocasiones realizamos multiplicaciones por ejemplo y el resultado detrás de la coma es elevado y se sale de la posición de nuestra web deseado para el número, para que esto no pase y o simplemente para que se vean un número determinado de decimales utilizamos la siguiente función en PHP:

function redondeado ($numero, $decimales) {
$factor = pow(10, $decimales);
return (round($numero*$factor)/$factor); }


De esta forma pasándole el numero y el número de decimales la función te lo devolverá con el número de decimales deseados.

Saber la última vez que has actualizado tu pagina web

Muchas veces al ver tu página web subida al servidor contratado no sabes cual fue la última actualización que hiciste o la última vez que subiste la web.

Poniendo esto sabrás cuando fue la última vez:

<? echo("Última modificación: ".date("d/m/Y",filemtime($PATH_TRANSLATED))); ?>

De esta forma no tendremos que preocuparse de ir a donde está el archivo en cuestión para ver la última fecha que lo subiste.

Saber si tengo en mi servidor PHP

Crea un archivo con extensión .php e introduzca esto en el fichero:

<HTML>
<BODY>
<?phpinfo();?>
</BODY>
</HTML>


Al ejecutar este archivo desde tu servidor saldrán las características y la versión de su PHP, si no es así es que no dispone de PHP.

Para instalar un servidor local con PHP, MySQL y APACHE pinchar Aquí

jueves, 23 de julio de 2009

Obtener la fecha y hora actual local.

Para obtener la hora con SQL para insertar o modificar filas con fecha sería así:

insert into (id,fecha) values(1,getdate())

La fecha y hora local con PHP se obtiene mediante la llamada a la funcion localtime(...):
Su signatura seria la siguiente:

array localtime([int muestra_de_tiempo[,bool asociativo]])

Ejemplo:

<?php
$fecha = localtime(time(),1);
$anyo = $fecha['tm_year']+1900;
$mes = $fecha['tm_mon']+1900;
$dia = $fecha['tm_mday']+1900;
print "<p> Hoy es el $dia/$mes/$anyo.</p>"
?>


Explicación parámetros:

El primer parámetro que se le pasa es el timestamp, una representación de una fecha/hora en concreto.
La función devolverá como un vector normal, indexado numéricamente si el segundo argumento está a '0' o no está.
Si el 2º argumento está a '1', el vector devuelto será asociativo, los nombres de las claves serían los siguientes:
  • tm_sec -> segundos
  • tm_min -> minutos
  • tm_hour -> horas
  • tm_mday -> día del mes
  • tm_mon -> mes del año (Enero sería el '0')
  • tm_year -> Años que hace desde que fué 1900
  • tm_wday -> Día de la semana
  • tm_yday -> Día del año

miércoles, 22 de julio de 2009

Refrescar o actualizar la pagina web en un cierto tiempo

Primeramente saber que este Post es para que se actualice o haga lo que desee una sola vez cada X segundos, si lo que desees es que cada cierto tiempo realice una función ver:

http://dudasweb.blogspot.com/2009/07/refrescar-o-actualizar-la-pagina-web.html

Para HTML deberemos poner dentro del <head> esto:

<meta http-equiv="refresh" content="30">

En este caso se actulizará cada 30 segundos.

Si fuera en PHP habría que poner al principio de la pagina web esto:

<?php header("Refresh: 30; URL='pagina.php'"); ?>

También se puede realizar los cambios que desees mediante javascript, con la función setTimeOut:

<script>
function prueba(direccion,segundos){
setTimeout("location.href='"+direccion+"'",segundos*1000);
}
</script>
<body onload="cambio('http://dudasweb.blogspot.com',3)";>

Validar una fecha

En php (a partir del 3) tenemos una función que nos facilita mucho esa acción común:
int checkdate( int month, int day, int year) \linebreak

Si la fecha es valida devuelve un valor verdadero, o un valor falso ('0') en caso contrario.
Comprueba la validez de la fecha formada por los argumentos. Se considerará que la fecha es valida si cumple lo siguiente:
  • el año está entre 0 y 32767, ambos incluidos.
  • el mes está entre 1 y 12, ambos inclusives.
  • el día está en el rango permitido para el mes dado (los años bisiestos si están tenidos en consideración).

martes, 21 de julio de 2009

Función array() para arrays asociativos.

Ya vimos cómo se crean vectores unidimensionales y arrays multidimensionales, ahora vamos a ver cómo "rellenarlos".
Se puede llenar la información de un vector de varias formas, pero una de las más (o la que más) difízil de comprender es usar el comando array() para vectores asociativos. Aqui pongo dos fragmentos de código para inicializar un vector unidimensional de distinta manera pero con el mismo resultado (contenido).

# Primer ejemplo:
$v1["alicante"] = "hercules";
$v1["sevilla"] = "betis";
$v1["huelva"] = "recreativo";
$v1[7] = "depor";

# Segundo ejemplo:
$v1 = array(
"alicante" => "hercules",
"sevilla" => "betis",
"huelva" => recreativo",
7 => "depor"
);

Otra manera un poco más compleja de uso del comando array(), podría ser por ejemplo anidarla para arrays multidimensionales.

<?
$v2 = array(
"mote" => array(
"iniesta" => "dulce",
"xavi" => "bogart",
"puyol" => "tiburon"
),
"equipo" => array(
"CR7o9oLoQueSea" => "RMD",
"Etoo" => "Asaber",
"Filipe" => "Depor"
),
"ciudad" => array(
"Depor" => "Coruña",
"Celta" => "Vigo",
)
);
echo $v2["mote"]["iniesta"]; #devolverá dulce
?>

lunes, 20 de julio de 2009

Arrays (vectores) multidimensionales en php.

Se tratan bastante parecido a los vectores unidimensionales , para cada dimensión del array se añaden otros corchetes.

$v2[0][0] = "patata";
$v2[0][1] = "patatín";
$v2[1][0] = "dulce";
$v2[1][1] = "dulzón";
$v3[2][3][1] = "tridimensional";

En algunas versiones de PHP no es posible referirse directamente dentro de cadenas, de todas maneras, el operador de concatenación de cadenas se puede usar para solucionar eso.

$v2[2][6]="barcelona";
echo "Esto no funciona: $v2[2][6]";

echo "Esto si :".$v2[2][6];
echo "a partir de php4, esto tambien: {$v2[2][6]}";

Arrays (vectores) unidimensionales en php.

En php se soporta tanto arrays por índices (indexados) o actuar como tablas hash ( arrays asociativos), es más, se pueden usar simultáneamente sin problemas.

Se pueden crear usando las funciones list() o array(), o asignar el valor explicitamente de cada elemento.

$v1[0] = "patata";
$v1[1] = "patatín";
$v2["sabor"] = "dulce";

Se le puede añadir valores a un vector, sin especificar ninguna posición, el valor se añadirá al final del array.

$v1[] = "patata";//v1[0]
$v1[] = "patatín";//v1[1]
$v1[] = "dulce";//v1[2]

Para contar el numero de elementos de un vector se usa la función count() y para recorrelo se pueden usar las funciones next(), prev(), each().

El manejo de arrays multidimensionales es bastante parecido.

viernes, 17 de julio de 2009

Resumen básico manejo de Cadenas de caracteres con PHP

Primero, las cadenas de caracteres se pueden separar de dos maneras diferentes, delimitandola con " " (comillas dobles) ó ' ' (comillas simples). En el 1er caso las variables que estén dentro de la cadena se expandirán con su valor y en el 2do no.
En el 1er caso para especificar carácteres especiales se puede usar las barra invertida ("\") antes de éste.
Para las comillas simples los únicos caracteres de escape posibles son la doble barra invertida ("\\") y la barra comilla simple ("\'").
Otra forma de delimitar caracteres para sintaxis de documento incrustado es usando ("<<<") al comienzo del texto, poniendo un identificador después de él y al final del texto junto al (";") para delimitarlo, ahora veremos algún ejemplo.
<?php
/* ejemplo de cadenas */
$cadena = "cadena con comillas doble";
$salto = "cadena con un salto de linea.\n";

/* esta cadena será Número : 33 */
$entero = 33;
$expandida = "<p>Número : $entero</p>";

/* esta cadena será Número : $entero */
$entero = 33;
$expandida = '<p>Número : $entero</p>';

/* tercer caracter de la cadena */
$tercero = "tercer caracter";
$tercer = $tercero[2];

/* y último??? */
$last = $tercero[strlen($tercero-1)];
?>

Concatenar cadenas:
Anotar que en PHP las cadenas se concatenan con el punto ("."), no con el operador + (con en otro varios lenguajes de programación comunes).
Veamos 2 ejemplos de concatenación de cadenas:

<?php
/* ejemplo de cadenas */
$cadena = "cadena con comillas doble";
$cadena = $cadena." y ahora concatenada tambien";

$cadena .= "otra manera de concatenar";

$otra = "tambien se puede con otra variable" .$cadena;
?>

miércoles, 15 de julio de 2009

Eliminar espacios al principio o al final de una cadena.Trim()

Si tenemos algún formulario en el que queramos estar seguros de que no hay espacios ni al principio ni al final de una cadena, se usa la funcion Trim().
Voy a poner un ejemplo en C# y otro en VB.net , en el caso de que se introdujera un nombre y un número en un formulario.

C#:
this.txtNombre.Text.Trim();
this.txtNumero.Text.Trim();


VB.net:
Me.txtNombre.Text.Trim()
Me.txtNumero.Text.Trim()


La función Trim() existe en muchísimos lenguajes, como PHP por ejemplo, y su uso es prácticamente el mismo.

lunes, 13 de julio de 2009

Mostrar imágenes aleatorias (con ejemplo de Joomla tambien).

Vamos a ver cómo sería el código para que que cada vez que se muestre nuestra página se vean distintas imágenes.
Existen varias maneras, pero yo voy a poner esta, que es la que he podido adaptar fázilmente para hacer lo mismo con Joomla 1.5.x.
Lo más cómodo para realizar, y para mantener la maquetización es que las imágenes mantengan las mismas propiedades.
1º Se crea un array con el nombre de las imágenes:

<?php
//Array de imagenes
$imagenes = array();
//items del array
$imagenes[]='imagen1.jpg'
$imagenes[]='imagen2.jpg'
$imagenes[]='imagen3.jpg'
//desordenar el vector
shuffle($imagenes);
?>

2ºSe inserta la imagen tal cual la pondríamos en el código, sustituyendo el nombre de la imagen que va al final de la ruta origen por mostrar un elemento del vector de imágenes.

<p>
<img src="ruta/ala/imagen/<?php echo $imagenes[0];?> border="0" alt="descripcion_de_la_imagen" width="ancho" height="alto">
</p>


Para Joomla 1.5.x sería exactamente igual, sólo que a la hora de poner la ruta sería algo así:

<p>
<img src="templates/<?php echo $this->template;?>/images/<?php echo $imagenes[0];?> border="0" alt="descripcion_de_la_imagen" width="ancho" height="alto">
</p>

jueves, 9 de julio de 2009

Saber u obtener la IP del que entra en mi web con PHP

Primeramente pongo el código y luego lo explico.

<?
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != "")
{
$IP_REAL = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; // Muestra la IP real del usuario, es decir, la Pública
$IP_PROXY = $HTTP_SERVER_VARS["REMOTE_ADDR"]; // Muestra la IP de un posible Proxy
}
else
{
$IP_REAL = $HTTP_SERVER_VARS["REMOTE_ADDR"]; // En caso de que no exista un Proxy solo mostrara la IP Publica del visitante
}
?>


Primeramente veremos si viene de un proxy, si es asi. buscaremos la ip mediante $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; porque si viene de un proxy, desde $HTTP_SERVER_VARS["REMOTE_ADDR"]; que de donde se saca normalmente la IP tendrá la ip del proxy y eso no es lo que queremos., finalmente si no viene de un proxy simplemente será estará en $HTTP_SERVER_VARS["REMOTE_ADDR"];

La IP en el código se guarda en $IP_REAL

martes, 7 de julio de 2009

Evitar sql injection con PHP

Normalmente los servidores ya lo evitan pero para asegurarnos aun mejor podemos utilizar una función ya agregada a PHP que lo que hace es comentar las comillas (') cambiandolas por (\') de esta forma evitaras que accedan, borren o modifiquen tu base de datos.

Un ejemplo sería este:
$cadena=" ' or true ";
$cadena=addslashes($cadena);
Lo comvertirá a: " \' or true "

Otra forma de hacerlo es remplazar (') por (\') con replace de PHP
$cadena = str_replace("'", "\'", $cadena);