Foros del Web » Programando para Internet » PHP »

Ejecutar una función desde BD

Estas en el tema de Ejecutar una función desde BD en el foro de PHP en Foros del Web. Hola amigos, tengo esta función que inserta un video YouTube a mi página web: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original function YouTube ( $videocode ) ...
  #1 (permalink)  
Antiguo 18/02/2010, 20:54
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 3
Ejecutar una función desde BD

Hola amigos, tengo esta función que inserta un video YouTube a mi página web:

Código PHP:
Ver original
  1. function YouTube($videocode)
  2. {
  3.     echo '<div><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/',$videocode,'"></param>
  4.     <embed src="http://www.youtube.com/v/',$videocode,'" type="application/x-shockwave-flash" width="425" height="350"></embed>
  5.     </object></div>';
  6. }

Como ven es algo muy sencillo, ahora, en mi web hay un formulario para insertar contendido de texto (un RTE) y que se guarda en la BD, ahora, si en ese formulario hago esto:

Cita:
Hola, aqui tenemos el siguiente video exclusivo de juanita la peladora, que lo disfruten:

YouTube("JjiY7RRdEC4")
La misma se guarda en html en la BD, pero cuando quiero presentarlo no me muestra el video sino la linea "YouTube("JjiY7RRdEC4")", no se mi llegaron a entender, ¿hay alguna manera de hacerlo?.

Saludos.
  #2 (permalink)  
Antiguo 18/02/2010, 21:01
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Ejecutar una función desde BD

Tenes 2 caminos

1) No guardes tus strings en la base como "YouTube('blablabla')", simplemente guarda el 'blablabla' y cuando lo traes haces asi:

Código PHP:
<?php
# conexion y demas

$sql "SELECT campoConblablabla FROM tabla;";
$q mysql_query($sql,$link);
$res mysql_fetch_row($q);

# Ejecutas la funcion
YouTube($res[0]);

?>
2) El otro camino es con eval(), que muy recomendado no es... Creo que seria asi

Código PHP:
# Supuestamente $res[0] contiene al string "YouTube('blablabla')"
eval($res[0]); 
No estoy seguro si te funcionara asi, de ultima fijate bien el funcionamiento aca
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 18/02/2010, 21:13
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Ejecutar una función desde BD

Hola jackson, ninguno de los dos me funciona, el primero no puedo ejecutarlo así porque el resultado es el sguiente:

Cita:
YouTube("Hola, aqui tenemos el siguiente video exclusivo de juanita la peladora, que lo disfruten: JjiY7RRdEC4")
Y no es una dirección válida del YouTube.

EL segundo me da error.

Estaba pensando crear un pequeño parseador, que busque dentro del contenido el valor entre dos etiquetas como [ youtube ] algo[ /youtube ] y reemplazar las etiquetas por el code HTML que carga el video. Es una idea pues.

Fleon xD
  #4 (permalink)  
Antiguo 18/02/2010, 21:17
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Ejecutar una función desde BD

Lo que podes hacer insertar con un poco mas de viveza lso datos en tu db, por ejemplo (notese la barra):

Código:
Hola, aqui tenemos el siguiente video exclusivo de juanita la peladora, que lo disfruten: / JjiY7RRdEC4
Podes usar un caracter mas raro, asi no te arriesgas a errores.
Entonces despues:

Código PHP:
<?php
# conexion y demas

$sql "SELECT campoConblablabla FROM tabla;";
$q mysql_query($sql,$link);
$res mysql_fetch_row($q);
$res explode('/'$res[0]);

# Ejecutas la funcion
YouTube($res[1]);

?>
__________________
HV Studio
Diseño y desarrollo web
  #5 (permalink)  
Antiguo 18/02/2010, 21:32
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Ejecutar una función desde BD

Gracias, pues no funcionó :(
  #6 (permalink)  
Antiguo 18/02/2010, 21:36
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Ejecutar una función desde BD

Porque no funciono? Te tira un error? No te funciona el codigo que te puse yo? Solo era una idea, estaba pensado para que lo adaptes a tu codigo...
__________________
HV Studio
Diseño y desarrollo web
  #7 (permalink)  
Antiguo 19/02/2010, 07:43
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Ejecutar una función desde BD

Cita:
Iniciado por jackson666 Ver Mensaje
Porque no funciono? Te tira un error? No te funciona el codigo que te puse yo? Solo era una idea, estaba pensado para que lo adaptes a tu codigo...
No me da error, probé varias adaptaciones, en una no me muestra ningún contenido pero me mustra un frame en blanco que le corresponde al video y me coloca la direccion asi "http://www.youtube.com/v/Array" y en otra no me muestra ningún video ni ningún contenido de texto.

Fleon xD
  #8 (permalink)  
Antiguo 19/02/2010, 08:14
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Ejecutar una función desde BD

Y ponele el resultado de explode dentro de otra variable!
Código PHP:
$res mysql_fetch_row($q);
$you explode('/'$res[0]);
echo 
$you[1]; 
__________________
HV Studio
Diseño y desarrollo web
  #9 (permalink)  
Antiguo 19/02/2010, 08:31
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Ejecutar una función desde BD

Cita:
Iniciado por jackson666 Ver Mensaje
Y ponele el resultado de explode dentro de otra variable!
Código PHP:
$res mysql_fetch_row($q);
$you explode('/'$res[0]);
echo 
$you[1]; 
Eso fue lo primero que probé lo que causa es me elimina todo el contenido de texto y me muestra un frame en blanco que le corresponde al video. Creo que como lo he estado planteando el tema y me he dado cuenta que lo estoy haciendo mal, creo que debo enfrentarlo con el uso de BBCodes
  #10 (permalink)  
Antiguo 19/02/2010, 08:49
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Ejecutar una función desde BD

Pero pusiste el separador como te dije antes, cuando insertas en la base?
hace un simple

Código PHP:
Ver original
  1. echo $you[1];

A ver que te tira!

NOTA:

Yo nunca itere los resultados del ejemplo que puse, por fiaca nomas pero si vos traes mas de 1 dato, deberias!
__________________
HV Studio
Diseño y desarrollo web
  #11 (permalink)  
Antiguo 19/02/2010, 11:21
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Ejecutar una función desde BD

Hola, decidí hacerlo con BBCode y me funciona muy bien, como dije anteriormente estaba planteando la estructura mal, ahora lo re-planteé y la cosa anda de pelos, dejo el code de mi funcion de BBCode iré aumentando luego, sólo dejo la idea, es muy sencillo:

Código PHP:
Ver original
  1. function BBCode($contenido)
  2. {
  3. $bbc = array(
  4.         "/\[youtube\](.*?)\[\/youtube\]/is",
  5.         "/\[i\](.*?)\[\/i\]/is"
  6.         );
  7.  
  8. $html = array(
  9.         "<object width=\"425\" height=\"344\"><param name=\"movie\" value=\"http://www.youtube.com/v/$1\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.youtube.com/v/$1\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"344\"></embed></object>",
  10.         "<i>$1</i>"
  11.         );
  12.  
  13. // parseamos los BBCode a HTML
  14. $contenido = preg_replace($bbc, $html, $contenido);
  15. $contenido = nl2br($contenido);
  16. return $contenido;
  17. }

Saludos y gracias por tu tiempo Jackson.

Etiquetas: bd, ejecutar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:35.