php - Blog Juegosocio

Posts sobre la categoría php

videos youtube tinymc

Por mameyugo el 31.Dec.2011 facebook_16 twitter_16 delicious_16

si usamos tinymce y pretendemos insertar el nuevo codigo para los videos de youtube pulsando en el boton de codigo fuente, nos encontraremos con que no permite la etiqueta embed, con lo que intentaremos repetidas veces insertar el codigo, siempre con identico resultado elimina la etiqueta embed del código de youtube.

existe una solucion bastante sencilla, añadirle a la inicializacion de tinymce una nueva linea de etiquetas permitidas con sus respectivos atributos.

extended_valid_elements : "object[width|height|classid|codebase],"
+ "param[name|value],embed[src|type|width|height|flashvars|wmode]"

ejemplo:

Tags: php, javascript, Categorías: PHP, programacion, Comentarios: 0, Lecturas: 91

creando un api en php: paso 2

Por mameyugo el 19.Jan.2010 facebook_16 twitter_16 delicious_16

la elecccion del protocolo, es una de las primeras decisiones que hay que tomar en la creaccion de un web service, existen varios metodos:

- SOAP: es un protocolo para el intercambio de informacion entre ordenadores (independientemente del sistema, y del lenguaje), puede usar distintos protocolos, pero aqui el que nos interesa es HTTP, utiliza XML como encapsulamiento de datos, lo normal seria tener un xml de definicion de servicio( que es un xml que describe los metodos que se puedesn usar y los parametros a pasar). Es considerablemente lento, ya que aparte del tamaño de la llamada esta requiere una gran cantidad de flujo de informacion. La manera normal de usarlo seria, el cliente pide el xml de definicion, el servidor lo sirve, el cliente lo procesa y crea una llamada de acuerdo a esta definicion, el servidor recibe esta llamada y devuelve la respuesta al la llamada.

La manera normal de usarlo seria (ejemplo de wikipedia):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetails xmlns="http://warehouse.example.com/ws">
       <productId>827635</productId>
     </getProductDetails>
   </soap:Body>
</soap:Envelope>

Esta peticion devolveria los datos del producto con ese identificador.

Desde PHP 5 soap tiene soporte nativo, lo que lo hace muy facil de usar para crear nuestra propia API o consumir servicios web de otra pagina, en otro post explicare una manera facil de hacerlo.

- REST: al igual que SOAP es un protocolo para el intercambio de informacion entre ordenadores, pero solo puede usarse con el protocolo HTTP, que por otro lado es el que nos interesa. No tiene restricciones en cuanto a encapsulamiento de datos, podemos enviarlos y recibirlos de la manera que queramos JSON, XML, HTML, CSV... y utiliza los metodos propios de HTML, los comunmente conocidos y que manejan nuestros navegadores: GET y POST, y los menos conocidos pero igualmente utiles PUT y DELETE. Es un protocolo muchisimo mas rapido que SOAP, ya que realmente SOAP es un REST con un monton de restricciones, de formato, de envio, de encapsulamiento...

La manera normal de usarlo seria:

- POST -> http://www.ejemplo.com/mensaje/nuevo (el metodo nos indica la accion a realizar, INSERTAR un nuevo dato y la url nos indicaria el que, un nuevo mensaje, los parametros que se envian con la peticion, nos dan los datos a insertar, titulo=nuevo titulo&mensaje=hola mundo)

- PUT -> http://www.ejemplo.com/mensaje/5 (el metodo nos indica la accion a realizar, MODIFICAR y la url el que, el mensaje 5, los parametros que se envian con la peticion, nos dan los datos a modificar, titulo=nuevo titulo 2&mensaje=adios mundo)

- GET -> http://www.ejemplo.com/mensaje/8 (el metodo nos indica la accion a realizar, MOSTRAR y la url el que, el mensaje 8)

- DELETE -> http://www.ejemplo.com/mensaje/13/comentario/2 (el metodo nos indica la accion a realizar, BORRAR y la url el que, el comentario 2 del mensaje 13)

 PHP no tiene una libreria especifica para el manejo de peticiones REST, dado que no tendria sentido, ya que REST esta basado en el mismo protocolo que la web, por lo tanto no se puede distinguir a priori entre peticiones al web service y peticiones normales de web.

 

Tags: php, api, webservice, Categorías: PHP, programacion, Comentarios: 1, Lecturas: 1171

creando un api en php: paso 1

Por mameyugo el 19.Jan.2010 facebook_16 twitter_16 delicious_16

crear un api en php, en principio es facil, no deja de ser peticiones y respuestas, un cliente api, te envia una peticion en un formato, y tu servidor de api tiene que responderle de manera adecuada.

cliente: dameUltimosProductos

servidor:

<ultimosProductos>

<producto>12</producto>

<producto>11</producto>

<producto>10</producto>

</ultimosProductos>

no existe mucha documentacion al respecto, pero lo que si es seguro es que necesitas una herramienta para realizar las primeras pruevas, pues la herramienta podria ser este addon para firefox: addons.mozilla.org/en-US/firefox/addon/2691

 

Tags: api, webservice, addon, Categorías: PHP, programacion, Comentarios: 0, Lecturas: 1010

eclipse: agregar soporte a php a cualquier proyecto

Por mameyugo el 10.Nov.2009 facebook_16 twitter_16 delicious_16

cuando creas un nuevo proyecto con eclipse, en mi caso el caso es un nuevo proyecto Mercurial, si no creas el proyecto especificamente con soporte php, no se lo puedes agregar mas tarde, al menos en modo grafico.

existe solucion al problema, entra en la carpeta en la que has creado el proyecto y busca el archivo oculto proyect, en Linux ( .proyect), editalo:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>stocks</name>
        <comment>
                Cloned from default ([protocolo]://[tu_ruta]/)
        </comment>
        <projects></projects>
        <buildSpec></buildSpec>
        <natures></natures>
</projectDescription>

y cambialo por:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>stocks</name>
        <comment>
                Cloned from default (
[protocolo]://[tu_ruta]/)
        </comment>
        <projects></projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.php.core.PhpIncrementalProjectBuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.php.core.ValidationManagerWrapper</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.php.core.PHPNature</nature>
        </natures>
</projectDescription>

despues crea un nuevo proyecto php y copia los archivos que tendra tu proyecto en la carpeta oculta .settings, a la carpeta .settings de tu proyecto.

Cierra eclipse, y vuelve a abrirlo, tendras un proyecto mercurial con soporte php.

Tags: Categorías: PHP, programacion, Comentarios: 1, Lecturas: 1951

Mysql: LIKE con campos integer

Por mameyugo el 27.Oct.2009 facebook_16 twitter_16 delicious_16

acabamos de probarlo, simplemente increible, no es nada del otro mundo, pero..

resulta que se puede hacer un like en mysql de un campo integer

la query:

SELECT * FROM tabla WHERE id LIKE '3%'

devuelve todos los resultados cuyo identificador de campo empiece por 3.

Tags: mysql, Categorías: PHP, Comentarios: 2, Lecturas: 1181

almacenar imagenes en mysql

Por mameyugo el 07.Aug.2009 facebook_16 twitter_16 delicious_16

como almacenar imagenes en una base de datos, es una pregunta que me hizo el amigo nico hace unos dias, y respondo en forma de post, si, es posible, y depende la situacion puede ser ventajoso (desde luego, no desde el punto de vista del rendimiento).
realmente el proceso es bien sencillo, abrimos el archivo almacenandolo en una variable, que contiene datos indescifrables (puedes probar a abrir una imagen con un editor de textos), a continuacion cambiamos la codificacion de esta variable a

Tags: gd, mysql, Categorías: PHP, programacion, Comentarios: 1, Lecturas: 822

rotar imagenes con php

Por mameyugo el 02.Jun.2009 facebook_16 twitter_16 delicious_16

existe una maravillosa función en php que nos ayuda en esta tarea, es imagerotate()
resource imagerotate ( resource $image , float $angle , int $bgd_color [, int $ignore_transparent= 0 ] )
pero existe un gran problema, esta función sólo está disponible si PHP está compilado con la versión incrustada de la librería GD, que no es muy habitual. para solucionarlo podemos rompernos la cabeza, y girar a mano las imágenes, pero para que vamos a hacer tonterias. la solución (o una de ellas), es

Tags: php, gd, Categorías: PHP, programacion, Comentarios: 5, Lecturas: 836

error eclipse org.eclipse.emf.ecore.util.EcoreEMap$DelegateEObjectContainmentEList

Por mameyugo el 06.Mar.2009 facebook_16 twitter_16 delicious_16

cada vez que abria eclipse, ERROR!!!!, curiosamente solo en linux.

org.eclipse.emf.ecore.util.EcoreEMap$DelegateEObjectContainmentEList

Que???

miras el error log..., y te quedas igual, entonces, vamos al oraculo (Google), y preguntamos:

org.eclipse.emf.ecore.util.EcoreEMap$DelegateEObjectContainmentEList ?????

y por supuesto nos da la solucion

Tags: php, Categorías: PHP, Comentarios: 0, Lecturas: 363

if en consultas mysql

Por mameyugo el 11.Nov.2008 facebook_16 twitter_16 delicious_16

cuanto tiempo ahorrariamos( tiempo de proceso, y de programacion), si la informacion ya nos llegara procesada de mysql (o cualquier sistema gestor de bases de datos, pero mysql mola mas). la respuesta es, MUCHISIMO!!

bien, pues una buena manera de hacer esto es utilizar el sistema gestor de base de datos como algo mas que un simple cajon en donde meter cosas y despues reclamarlas.

como hacemos esto:

supongamos que queremos agrupar en una tabla a todas aquellas personas cuya edad este comprendida entre los 0 y los 18, y otro grupo para el resto de las personas.

partimos de una tabla con el nombre, la edad, el sexo y la estatura.

Tags: mysql, Categorías: PHP, programacion, Comentarios: 2, Lecturas: 1133

agrupacion de registros por campo en mysql GROUP_CONCAT

Por mameyugo el 08.Nov.2008 facebook_16 twitter_16 delicious_16

El titulo del post quizas no sea muy descriptivo, pero el problema es peliagudo, en un blog queremos saber como se podria hacer para escojer de los ultimos post aquellos en los que se haya comentado, escojer los 5 ultimos, y de cada uno de estos 5 ultimos, sacar los ids y los nombres de los ultimos 3 comentadores. ahi es nada.

La estructura de las tablas es la siguiente:

posts
id
titulo

comentarios
id
post_id
autor
texto

Por supuesto esto tiene una solucion facil, haces una seleccion de los ultimos comentarios y escojes los 5 ultimos que esten asociados a posts con un distinto en la consulta:

SELECT titulo, id 
	FROM posts p,
	(SELECT DISTINCT (post_id)
	FROM comentarios
	ORDER BY id DESC
	LIMIT 5) c
WHERE p.id = c.post_id
 

De donde sacas los ids de los ultimos posts y sus titulos, despues de esto con cada uno de los ids puedes sacar los nombres de los ultimos comentadores de cada post, introducimos en un bucle esta consulta:

SELECT id, autor
FROM comentarios
WHERE post_id = "( id del post actual )"
ORDER BY id DESC

con lo que ya tenemos todos los datos, pero hemos necesitado 6 consultas, y para remediarlo ...

Tags: mysql, Categorías: PHP, Comentarios: 0, Lecturas: 581