elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema con funcion dentro de BBCode.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con funcion dentro de BBCode.  (Leído 2,095 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Problema con funcion dentro de BBCode.
« en: 7 Diciembre 2009, 21:39 pm »

Hola:

Tengo implementado en mi sistema una etiqueta BBCode personal, la cual llamo asi: [PLAY_MP3]ID[/PLAY_MP3], en donde el ID es un identificador en mi base de datos dentro de la tabla de archivos, en donde la idea es consultar dicho ID para posteriormente sacar la direccion completa donde se encuentra el archivo.mp3. Asi mismo, en el BBCode establezco un reproductor para que el archivo.mp3 pueda ser escuchado.

El Problema es que al llamar a la funcion mp3_file( $id ). esta no me regresa el archivo MP3 :(, sino que, solamente me retorna un 0 :(... Ya le estuve buscando y no entiendo porque :(.... Les dejo codigo:

BBcode Funcion
Esta funcion invoca el tag de [PLAY_MP3]ID[/PLAY_MP3] y a su vez llama a la funcion mp3_file( $id ).
Código
  1. <?php
  2. function msg2msgtags( $mensaje )
  3. {
  4.   $cad_buscar= array(
  5.   '/\[play_mp3\](.*?)\[\/play_mp3\]/is'
  6.   );
  7.  
  8. $cad_remplazo= array(
  9. '<object id="audioplayer_1" data="admin/addons/player.swf" style="outline-color: -moz-use-text-color; outline-style: none; outline-width: medium; visibility: visible;" name="audioplayer_1" type="application/x-shockwave-flash" height="24" width="450">
  10. <param value="#FFFFFF" name="bgcolor">
  11. <param value="transparent" name="wmode">
  12. <param value="false" name="menu">
  13. <param value="animation=yes&encode=no&initialvolume=60&remaining=yes&noinfo=yes&buffer=5&checkpolicy=no&rtl=no&bg=bbbbbb&text=333333&leftbg=CCCCCC&lefticon=333333&volslider=666666&voltrack=FFFFFF&rightbg=B4B4B4&rightbghover=999999&righticon=333333&righticonhover=FFFFFF&track=FFFFFF&loader=3c78a7&border=CCCCCC&tracker=DDDDDD&skip=666666&soundFile=href="http://www.podtrac.com/pts/redirect.mp3/http://podcast.sie-group.net/upload/noticias/'. mp3_file('$1'). '&playerID=audioplayer_1" name="flashvars">
  14. </object>
  15. <script type="text/&#8237;&#8236;&#8237;&#8236;&#8237;&#8236;&#8237;&#8236;javascript">AudioPlayer.embed("audioplayer_1", {soundFile:"http://www.podtrac.com/pts/redirect.mp3/http://podcast.sie-group.net/upload/noticias/'. mp3_file( '$1' ). '"});</script>'
  16.                );
  17.  
  18. $mensaje= htmlentities($mensaje, ENT_QUOTES);
  19. $mensaje= preg_replace( $cad_buscar, $cad_remplazo, $mensaje );
  20. $mensaje= html_entity_decode($mensaje, ENT_QUOTES);
  21.  
  22. return $mensaje;
  23. }
  24. ?>

Funcion mp3_file()
Esta funcion recive un ID el cual toma y consulta en la base de datos de ARCHIVOS para obtener el campo de ARCHIVOS_NOMBRE, que tiene el nombre del mp3 a reproducir (retornar).
Código
  1. function mp3_file( $id )
  2. {
  3. $mp3= consultar_datos_general("ARCHIVOS", "ID='". $id. "'", "archivos_nombre");
  4. // echo '['. $id. ']';  # la habilito para ver si efectivamente existe un id (o se envia), y pues SI
  5. return $mp3;
  6. }

Funcion consultar_datos_general()
Basicamente es una funcion simple y sencilla para minimizar escribir el codigo mysql_query repetidamente :S...
Código
  1. //funcion para consultar datos especificos en la BDD de CUALQUIERA
  2. function consultar_datos_general( $bdt, $bdt_where, $var )
  3. {
  4. $cons= consultar_con( $bdt, $bdt_where ); //funcion que invoca consulta (mysql_query()).
  5. $data= mysql_num_rows($cons);
  6. if( $data )
  7. {
  8. $tmp= mysql_fetch_array($cons);
  9. unset($data);
  10. limpiar($cons);  //funcion que ejecuta mysql_free_result()
  11. return $tmp[strtoupper($var)];
  12. }
  13. unset($data);
  14. limpiar($cons); //funcion que ejecuta mysql_free_result()
  15. return 0;
  16. }


« Última modificación: 7 Diciembre 2009, 21:57 pm por Diabliyo » En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Problema con funcion dentro de BBCode.
« Respuesta #1 en: 8 Diciembre 2009, 02:27 am »

Mmmmm en vista que nadie contesta y al parecer no tienen mucha idea :(...

La unica solucion (momentanea) que tengo es que, como solamente puedo obtener el ID (ya que lo proporciono dentro del tag BBCode), asi que, pues simplemente cuando voy a insertar nueva cancion a mi programa, creo un enlace simbolico (con php) que apunta al archivo MP3, de modo que cuando el usuario proporciona el ID, simplemente le antepongo .mp3 y ya !...

Pero es un poco complicada, porque al momento de borrar la cancion, tendria que tambien borrar el link simbolico, esto lo veo ineficiente, ya que la idea es que el codigo se aplique para subir cualquier tipo de archivo, y si lo dejo asi, se crearia un link simbolico por cada archivo subido :S...

bye


En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Problema con funcion dentro de BBCode.
« Respuesta #2 en: 10 Diciembre 2009, 18:55 pm »

La funcion consultar_datos_general() SIEMPRE devuelve 0, por el 'return 0;'.

Y en la funcion mp3_file() haces:

Código
  1. $mp3= consultar_datos_general("ARCHIVOS", "ID='". $id. "'", "archivos_nombre");//Esto seria igual a $mp3 = 0 por lo que ya dije en mi primera oracion...
  2. return $mp3;                                                                   //Asi que esto basicamente es un 'return 0;'

Asi que todo funciona como deberia, creo que deberias cambiar las funciones o el enfoque de las mismas.. :silbar:

SAludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Problema con funcion dentro de BBCode.
« Respuesta #3 en: 10 Diciembre 2009, 22:22 pm »

La funcion consultar_datos_general() SIEMPRE devuelve 0, por el 'return 0;'.

Y en la funcion mp3_file() haces:

Código
  1. $mp3= consultar_datos_general("ARCHIVOS", "ID='". $id. "'", "archivos_nombre");//Esto seria igual a $mp3 = 0 por lo que ya dije en mi primera oracion...
  2. return $mp3;                                                                   //Asi que esto basicamente es un 'return 0;'

Asi que todo funciona como deberia, creo que deberias cambiar las funciones o el enfoque de las mismas.. :silbar:

SAludos

Pues estas mal amigo, no has entendido la funcion consultar_datos_general(), esta funcion solo y unicamente retorna 0 cuando el valor a consultar NO existe. Cuando el valor si existe retorna el valor que le diste en el 3er argumento.

Observa bien !!.... Por eso esta la condicion if( $data ).... Te explico mas facil:

Yo invoque esto mp3= consultar_datos_general("ARCHIVOS", "ID='". $id. "'", "archivos_nombre");.

Quiere decir que, como primer arguento envio la TABLA donde se realizara la consulta, como segundo argumento seria donde mysql realizaria un where... En esta parte se realiza la consulta y si existen datos, procedo a retornar la celda del tercer_argumento, que seria: return $tmp[strtoupper($var)];....

El problema aun continua y sigue :(....  Sigo sin entender proque al llamarse a mp3_file() me retorna un 0 :(, yo lo que quiero que me retorne es el nombre del archivo, que seria: archivo_cancion.mp3.... Ya verifique si en realidad la funcion recivia el ID correcto, y SI, si es correcto ...

Sigo con la duda y el problema....

« Última modificación: 10 Diciembre 2009, 22:26 pm por Diabliyo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Evaluar Una Funcion dentro de otra funcion Python
Scripting
cristiantorres 1 10,405 Último mensaje 14 Abril 2012, 06:20 am
por cristiantorres
malloc dentro de una funcion
Programación C/C++
erest0r 2 2,101 Último mensaje 18 Diciembre 2013, 19:05 pm
por erest0r
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines