¿Nuevo usuario?
Puedes registrarte aquí
 
       
Menú principal
 
 Navegación
Buscar
dpForo
dpFAQ
dpManuales
dpDescargas
dpThemes
Noticias por Temas
Recomiéndanos
Enlaces
Créditos
dzStaffStatus
Miembros:  Administradores
No Conectado  el_cuervo  
No Conectado  Dixso  
Miembros:  Colaboradores
No Conectado  AnyKiller  
No Conectado  nestormateo  
No Conectado  docser  
Miembros:  Moderadores
No Conectado  cardiru  
No Conectado  javiermisol  
Miembros:  Traductores
No Conectado  gnrx  
Miembros:  Miembros:
Ultimo:  Nuevos Hoy: 2
Ultimo:  Nuevos Ayer: 11
Ultimo:  Total: 71466
Ultimo:  Ultimo:
yesusvs
Miembros:  Conectados
Miembros:  Miembros: 2
Invitados:  Invitados: 50
Total:  Total: 52
Miembros:  Miembros Online
Conectado  jorfer2  
Conectado  edipus  
Sponsor
dp-Tools
 Generador de Menús
 Pop-Up Maker
 Generador de Bloques
 Generador de Módulos
Enlázanos


Texto del enlace:


Otros Banners:



Theme creado por
dev-postnuke.com

 Foro dev-postnuke.com
  Desarrollo dev-postnuke :: Bloques, módulos, addons ...
  _delete() no funciona

Bienvenido invitado

Moderado por: el_cuervo, Dixso, AnyKiller, cardiru, javiermisol, MrGer << Tema anterior   Tema siguiente >>
Imprimir tema
Autor Tema: _delete() no funciona
ofim92
Enviado: 20/08/2006 a las 21:08
Novato
Novato


Karma: 0 (0 Votos)

Registrado: 16/08/06
Mensajes: 5

Estado: Desconectado
Ultima visita: 23/08/06
Hola,
Empiezo a dedicarle un poco de tiempo al postnuke y me he decidido a entender la estructura de los módulos. He empezado a hacer uno propio para encontrarme con los problemas y por supuesto que, con mi habilidad, los encuentro enseguida.
He creado los diocumentos de pndocs OK
He creado el pnversion OK
He creado el pninit con su mimodulo_init() OK
He creado mimodulo_delete() y KO en todos los asaltos.
Me he entretenido en mirar que es lo que pasa y he llegado a la conclusión que la variable no recoge el nombre de la tabla. Si en lugar de poner la variable pongo el nombre de la tabla, la borra, pero si utilizo la variable (que no toma ningun valor) no funciona. El error que me da es el 1064.
el codigo es:
$dbconn =& pnDBGetConn(true);
$pntable =& pnDBGetTables();
$tabla = $pntable['mitabla'];
$sql="DROP TABLE $tabla";
if($dbconn->ErrorNo() != 0){
pnSessionSetVar('errormsg',$dbconn->ErrorNo());
return false;
}
return true;
}
Gracias por adelantado
ofim92 Enviar MP


jpeeri
Enviado: 21/08/2006 a las 01:08
Posteador de Oro
Posteador de Oro

avatar

Karma: 6 (115 Votos)

Registrado: 15/05/04
Mensajes: 1809

Estado: Desconectado
Ultima visita: 20/01/08
Prueba esto:
Código
  1. $dbconn  =& pnDBGetConn(true);
  2. $pntable =& pnDBGetTables();
  3. $mitablatable  = & $pntable['mitabla'];
  4. $dict = &NewDataDictionary($dbconn);
  5. $sqlarray = $dict->DropTableSQL($mitablatable);
  6. if ($dict->ExecuteSQLArray($sqlarray) != 2) {
  7.      pnSessionSetVar('errormsg', _MIMODULO_DROPTABLE1FAILED);
  8.      return false;
  9. }
  10. return true;
  11. }


Esto es mas nuclealizado y es mejor. Si no te funciona dime el código que de verdad usas.

Un Saludo wink




<
jpeeri Enviar MP WwW
gerkynet
Enviado: 21/08/2006 a las 02:08
Posteador de Oro
Posteador de Oro

avatar

Karma: 7 (77 Votos)

Registrado: 11/02/06
Mensajes: 1490

Estado: Desconectado
Ultima visita: 18/11/06
Prueba con $table=$pntable[mitabla];


gerkynet Enviar MP WwW
jpeeri
Enviado: 21/08/2006 a las 02:08
Posteador de Oro
Posteador de Oro

avatar

Karma: 6 (115 Votos)

Registrado: 15/05/04
Mensajes: 1809

Estado: Desconectado
Ultima visita: 20/01/08
No, el problema es que no pone el & delante de $pntable y ese es el problema.

Un Saludo wink




<
jpeeri Enviar MP WwW
ofim92
Enviado: 21/08/2006 a las 09:08
Novato
Novato


Karma: 0 (0 Votos)

Registrado: 16/08/06
Mensajes: 5

Estado: Desconectado
Ultima visita: 23/08/06
Hola,
Gracias por las respuestas.
He probado las tres cosas que me decis y el resultado ha sido el mismo. Incluso he cogido el código literal del módulo example y pasa lo mismo.
Por un momento creique pudire ser cosa de los permisos, pero actuo como administrador y supongo que los permisos son totales, pero si en lugar de la linea 78:
Código
  1. $sqlarray = $dict->DropTableSQL($Exampletable);


Coloco:
Código
  1. $sqlarray = $dict->DropTableSQL('iw_nuke_iesdc_prensa');
funciona. Creo que el problema le viene de no assignar ningun valor a la variable, pero no sé porqué.

El código de todo el pninit.php es:
Código
  1. function iesdc_prensa_init()
  2. {
  3.     // Get datbase setup - note that both pnDBGetConn() and pnDBGetTables()
  4.     // return arrays but we handle them differently.  For pnDBGetConn()
  5.     // we currently just want the first item, which is the official
  6.     // database handle.  For pnDBGetTables() we want to keep the entire
  7.     // tables array together for easy reference later on
  8.     $dbconn  =& pnDBGetConn(true);
  9.     $pntable =& pnDBGetTables();
  10.  
  11.     // It's good practice to name the table and column definitions you
  12.     // are getting - $table and $column don't cut it in more complex
  13.     // modules
  14.     $prensatable  = &$pntable['iesdc_prensa'];
  15.     $prensacolumn = &$pntable['iesdc_prensa_column'];
  16.  
  17.         // tabla creada?
  18.     $sql = "SELECT COUNT(1) FROM $prensatable";
  19.     $dbconn->Execute($sql);
  20.    
  21.     if ($dbconn->ErrorNo() != 0) {
  22.         //No existe->la creamos
  23.         $sql = "CREATE TABLE `iw_nuke_iesdc_prensa` (
  24.                                                             `codi` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  25.                                                             `prensa` VARCHAR( 80 ) NOT NULL ,
  26.                                                             `url_prensa` VARCHAR( 250 ) NOT NULL ,
  27.                                                             `imagen` VARCHAR( 50 ) NOT NULL)";
  28.         $dbconn->Execute($sql);
  29.  
  30.         if ($dbconn->ErrorNo() != 0) {
  31.         pnSessionSetVar('errormsg', _DBCREATETABLEERROR);
  32.         return false;
  33.         }
  34.     }
  35.  
  36.     // Initialisation successful
  37.     return true;
  38. }
  39.  
  40.  
  41. /**
  42. * upgrade the prensa module from an old version
  43. *
  44. * This function can be called multiple times
  45. * This function MUST exist in the pninit file for a module
  46. *
  47. * @author       Jim McDonald
  48. * @return       bool       true on success, false otherwise
  49. */
  50. function iesdc_prensa_upgrade($oldversion)
  51. {
  52.  
  53.     // Update successful
  54.     return true;
  55. }
  56.  
  57.  
  58. /**
  59. * delete the prensa module
  60. *
  61. * This function is only ever called once during the lifetime of a particular
  62. * module instance
  63. * This function MUST exist in the pninit file for a module
  64. *
  65. * @author       Jim McDonald
  66. * @return       bool       true on success, false otherwise
  67. */
  68. function iesdc_prensa_delete()
  69. {
  70.     // Get datbase setup - note that both pnDBGetConn() and pnDBGetTables()
  71.     // return arrays but we handle them differently.  For pnDBGetConn()
  72.     // we currently just want the first item, which is the official
  73.     // database handle.  For pnDBGetTables() we want to keep the entire
  74.     // tables array together for easy reference later on
  75.     $dbconn  =& pnDBGetConn(true);
  76.     $pntable =& pnDBGetTables();
  77.  
  78.     $Exampletable  = &$pntable['iesdc_prensa'];
  79.  
  80.     // New Object DataDictionary
  81.     $dict = &NewDataDictionary($dbconn);
  82.  
  83.     $sqlarray = $dict->DropTableSQL($Exampletable);
  84.  
  85.     // Check for an error with the database code, and if so set an
  86.     // appropriate error message and return
  87.     if ($dict->ExecuteSQLArray($sqlarray) != 2) {
  88.         pnSessionSetVar('errormsg', _EXAMPLEDROPTABLEFAILED);
  89.         // Report failed deletion attempt
  90.         return false;
  91.     }
  92.  
  93.     // Delete any module variables
  94.     pnModDelVar('iesdc_prensa');
  95.  
  96.     // Deletion successful
  97.     return true;
  98.  
  99. }


GRACIAS
ofim92 Enviar MP
ofim92
Enviado: 21/08/2006 a las 09:08
Novato
Novato


Karma: 0 (0 Votos)

Registrado: 16/08/06
Mensajes: 5

Estado: Desconectado
Ultima visita: 23/08/06
Hola,
Gracias de nuevo
Recuerdo que soy NOVATO(, pero mucho)
Estoy empezando y de la mitad de las cosas no me acabo de enterar, per ganas le pongo. Bueno vamos al grano.
El problema no está en el código, sino en una línea del pnversion que no os habia enseñado. En lugar de $modversion['securityschema'] habia escrito $modversion['admin'], (no pregunteis, no esto tampoco sé porqué)
Muchas gracias por la rapidez de las respuestas.
PD: Por cierto ya puestos a pedir, existe algun manual de referencia de postnuke o similar para facilitar la tarea de aprenderlo o siguo el refran "lo que vale, cuesta"
Gracias
ofim92 Enviar MP
jpeeri
Enviado: 21/08/2006 a las 10:08
Posteador de Oro
Posteador de Oro

avatar

Karma: 6 (115 Votos)

Registrado: 15/05/04
Mensajes: 1809

Estado: Desconectado
Ultima visita: 20/01/08
De aprender a crear módulos? No existe ninguno salvo el módulo Example donde en hispa-pn estamos traduciendolo al castellano peor no quiero hacer mucha publicidad.

Un Saludo wink




<
jpeeri Enviar MP WwW




Powered by pnForum Version 2.6

Inicio  |  dpFaq  |  dpManuales  |  dpDescargas  |  dpThemes  |  Contacta

Web site powered by PostNuke MySQL PHP Postnuke Spain PHP RSSPixel Add to Technorati Favorites

Todos los logos y marcas registradas en este sitio son propiedad de sus respectivos dueños. Los comentarios son propiedad de sus autores, el resto es de este sitio Web (c) 2003, que fue creado con PostNuke, un sistema portal Web escrito en PHP. PostNuke es Software Libre liberado bajo la licencia GNU/GPL.

Dev-CMS.com :: Amplía tus horizontes.

HOSPEDAJE Y DOMINIOS -- Tu Hosting
Alojamiento Web --- Registro de Dominios