Foros del Web » Programando para Internet » PHP »

problemas con PHP y ADODB

Estas en el tema de problemas con PHP y ADODB en el foro de PHP en Foros del Web. Hola a todos, Necesito ayuda plis, el problema es que estoy migrando un codigo de ASP a PHP y para php estamos usando ADODB para ...
  #1 (permalink)  
Antiguo 03/10/2012, 14:28
 
Fecha de Ingreso: septiembre-2011
Ubicación: Santiago
Mensajes: 8
Antigüedad: 13 años, 1 mes
Puntos: 0
problemas con PHP y ADODB

Hola a todos,

Necesito ayuda plis, el problema es que estoy migrando un codigo de ASP a PHP y para php estamos usando ADODB para crear la coneccion con la base de datos oracle, pero el problema es que las funciones me estan dando problemas, como el MoveNext() por ejemplo, no las reconoce y no se que es lo que pasa..

Les dejo los codigos para que me puedan ayudar plis...

ASP:
Código ASP:
Ver original
  1. <%
  2. Response.ContentType="text/xml"
  3. Response.Write("<?xml version='1.0' encoding='iso-8859-1'?>")
  4. %>
  5. <%
  6. ' SC4Consulta_datos_negocio.asp
  7. ' Generador de XML para las refacturaciones listadas por la consulta de Clientes Opcion Otros Negocios
  8.  
  9. AbreConn()
  10.  
  11. Set RS      = Server.CreateObject("ADODB.Recordset")
  12. NroSuministro   = 2648727' request("suministro")
  13.  
  14. SQL = " SELECT   cor_documento correlativo, "
  15. SQL = SQL &  "              nro_documento nro_documento,"
  16. SQL = SQL &  "          tip_documento tipo_documento,"
  17. SQL = SQL &  "          TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision,"
  18. SQL = SQL &  "          TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento,"
  19. SQL = SQL &  "          tot_documento total, "
  20. SQL = SQL &  "              usuario_aprobador aprobador,"
  21. SQL = SQL &  "              fec_documento fec"
  22. SQL = SQL &  "     FROM nucssb0030 nuc30"
  23. SQL = SQL &  "    WHERE cod_empresa = "&SysEmpresa&" AND nro_suministro = "&NroSuministro&" AND tip_documento = 'ON'"
  24. SQL = SQL &  " UNION"
  25. SQL = SQL &  " SELECT   cor_documento correlativo, "
  26. SQL = SQL &  "              nro_documento nro_documento,"
  27. SQL = SQL &  "          tip_documento tipo_documento,"
  28. SQL = SQL &  "          TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision,"
  29. SQL = SQL &  "          TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento,"
  30. SQL = SQL &  "          tot_documento total, "
  31. SQL = SQL &  "              usuario_aprobador aprobador,"
  32. SQL = SQL &  "              fec_documento fec"
  33. SQL = SQL &  "     FROM hisssb0004"
  34. SQL = SQL &  "    WHERE cod_empresa = "&SysEmpresa&" AND nro_suministro = "&NroSuministro&" AND tip_documento = 'ON'"
  35. SQL = SQL &  " ORDER BY fec DESC"
  36. SET RS      = DBTO.EXECUTE(SQL)
  37.  
  38. Escribe("<registro>")
  39. DO WHILE NOT RS.EOF
  40.     Escribe ("<linea>")
  41.     for i = 0 to RS.fields.Count - 1
  42.         Escribe ("<"&lcase(rs.fields(i).name)&">" & RS(i) & "</"&lcase(rs.fields(i).name)&">")
  43.     next
  44.     Escribe ("</linea>")
  45.     RS.MOVENEXT
  46. LOOP
  47. Escribe("</registro>")
  48. CierraConn()
  49. %>


PHP:
Código PHP:
Ver original
  1. <?php
  2. include ("conn.php");   # INCLUIR CLASE DE CONEXION
  3.  
  4. @header('Content-type: text/xml');
  5. echo("<?xml version='1.0' encoding='iso-8859-1'?>");
  6.  
  7. # DEFINICION DE VARIABLES
  8.  
  9. $i              = "";
  10. $RS             = "";
  11. $fld            = "";
  12. $num_columns    = "";
  13. $NroSuministro  = $_POST['suministro'];
  14. #$consul=       ="";
  15. $SysEmpresa     = 1;  
  16.  
  17.  
  18.  
  19. $SQL = "";
  20. $SQL = $SQL . "SELECT cor_documento correlativo, ";
  21. $SQL = $SQL . "nro_documento nro_documento, ";
  22. $SQL = $SQL . "tip_documento tipo_documento, ";
  23. $SQL = $SQL . "TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision, ";
  24. $SQL = $SQL . "TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento, ";
  25. $SQL = $SQL . "tot_documento total, ";
  26. $SQL = $SQL . "usuario_aprobador aprobador, ";
  27. $SQL = $SQL . "fec_documento fec ";
  28. $SQL = $SQL . "FROM nucssb0030 nuc30";
  29. $SQL = $SQL . "WHERE cod_empresa = ".$SysEmpresa. " " ;
  30. $SQL = $SQL . "AND nro_suministro = ".$NroSuministro." ";
  31. $SQL = $SQL . "AND tip_documento = 'ON' ";
  32. $SQL = $SQL . "UNION ";
  33. $SQL = $SQL . "SELECT   cor_documento correlativo, ";
  34. $SQL = $SQL . "nro_documento nro_documento, ";
  35. $SQL = $SQL . "tip_documento tipo_documento, ";
  36. $SQL = $SQL . "TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision, ";
  37. $SQL = $SQL . "TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento, ";
  38. $SQL = $SQL . "tot_documento total, ";
  39. $SQL = $SQL . "usuario_aprobador aprobador, ";
  40. $SQL = $SQL . "fec_documento fec ";
  41. $SQL = $SQL . "FROM hisssb0004 ";
  42. $SQL = $SQL . "WHERE cod_empresa = ".$SysEmpresa." ";
  43. $SQL = $SQL . "AND nro_suministro = ".$NroSuministro." ";
  44. $SQL = $SQL . "AND tip_documento = 'ON' ";
  45. $SQL = $SQL . "ORDER BY fec DESC ";
  46. #$SQL = $SQL . "SELECT * FROM CCC";
  47. #$SQL = $SQL . "SELECT nombre, direccion FROM CCC";
  48.  
  49. # EJECUTA LA CONSULTA
  50.  
  51. $RS = $DB->Execute($SQL);
  52.  
  53.  
  54. #CUENTA CUANTOS REGISTROS TE TRAJO LA CONSULTA Y LOS GUARDA EN UNA VARIABLE
  55.  
  56. $num_columns = $RS->RecordCount(); /* contamos el total de registros de resultado */
  57.  
  58. echo ("SE OBTUVIERON ".$num_columns . "CAMPOS<br>");  #MUESTRA LA CANTIDAD DE REGISTROS EN UN MENSAJE
  59.  
  60. # CARGA LOS DATOS EN UN BUCLE
  61.  
  62. for ($i=0; $i < $num_columns; $i++) {
  63.   $fld[$i] = $RS->Fields($i);
  64.   echo("MENSAJE"." ".$fld[$i]."OK");
  65. }
  66.  
  67. # ESCRIBE EN EL DOCUMENTO XML
  68.  
  69. echo("<registro>");
  70.  
  71. #RECORRE EL BUCLE
  72.  
  73. while (!$RS->EOF)
  74. {
  75.     echo "<tr>";
  76.   for ($i=0; $i < $num_columns; $i++)
  77. {
  78.   echo "<td>" . $fld[$i]->value . "</td>"; #ESCRIBE EL VALOR DEL REGISTRO EN LA COLUMNA Y FILA CORRESPONDIENTE
  79.  }
  80.   echo "</tr>";
  81. #PASA AL SIGUIENTE REGISTRO
  82.  
  83.  $RS->MoveNext();
  84. }
  85.  
  86.  
  87. #SE CIERRA LA CONEXION
  88.  
  89. $conn->close();
  90.  
  91. #SE LIMPIAN LAS VARIABLES
  92.  
  93. $RS = null;
  94. $conn = null;
  95.  
  96. ?>

Cualquier informacion me la piden :D

Saludos
  #2 (permalink)  
Antiguo 03/10/2012, 16:25
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: problemas con PHP y ADODB

Hola no manches hace siglos que no veia codigo asp 3 , que cosa tan horripilante la verdad si me dio hasta ñañaras , te dejo aqui algo de pseudocodigo que podria funcionarte , es cosa de debugearlo , te dejo tambien el manual en español de adodb, basicamente ahi viene todo

http://www.lacorona.com.mx/fortiz/ad...htm#fieldcount

aunque es una buena practica en php no es necesario inicializar variables , por que se pueden inicializar al vuelo , ni tampoco destruirlas por que al terminar de interpretar desaparecen , ojo el codigo no esta probado es pa darte una idea del uso de adodb y de algunas cosillas que hace php , pero debugearlo y saber mas de php se te queda de tarea


Código PHP:
<?php 
include ("conn.php"); * # INCLUIR CLASE DE CONEXION 
*
@
header('Content-type: text/xml');
echo(
"<?xml version='1.0' encoding='iso-8859-1'?>");
*
# DEFINICION DE VARIABLES , valdria la pena nomas el post pero checando seguridad
*
$i* * * * * * * = "";
$RS * * * * * * = "";
$fld* * * * * * = "";
$num_columns* * = "";
$NroSuministro *= $_POST['suministro'];
#$consul= * * * ="";
$SysEmpresa * * = 1; *
*
*
*

$SQL ="SELECT cor_documento correlativo,  
nro_documento nro_documento,  
tip_documento tipo_documento,  
 TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision,  
 TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento,  
 tot_documento total,  
 usuario_aprobador aprobador,  
 fec_documento fec  
 FROM nucssb0030 nuc30 
WHERE cod_empresa = $SysEmpresa
AND nro_suministro = $NroSuministro 
 AND tip_documento = 'ON'  
 UNION  
 SELECT * cor_documento correlativo,  
 nro_documento nro_documento,  
 tip_documento tipo_documento,  
 TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision,  
 TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento,  
 tot_documento total,  
 usuario_aprobador aprobador,  
 fec_documento fec  
 FROM hisssb0004  
 WHERE cod_empresa = $SysEmpresa.  
 AND nro_suministro = $NroSuministro
 AND tip_documento = 'ON'  
 ORDER BY fec DESC "


*
# EJECUTA LA CONSULTA
*
$RS $DB->Execute($SQL);
*
*
#CUENTA CUANTOS REGISTROS TE TRAJO LA CONSULTA Y LOS GUARDA EN UNA VARIABLE
*
$num_rows $RS->RecordCount(); /* contamos el total de registros de resultado */ 
$num_cols $RS->FieldCount();/*numero de columnas */
*
echo (
"SE OBTUVIERON ".$num_rows"CAMPOS<br>"); *#MUESTRA LA CANTIDAD DE REGISTROS EN UN MENSAJE 
*

# ESCRIBE EN EL DOCUMENTO XML
*
echo 
"<registro>";
*


while (!
$RS->EOF) {
    
    echo 
"<tr>"
    for (
$i=0$i $num_cols$i++) {
        echo 
"<td>" $RS-> fields[$i]. "</td>";
    }
    echo 
"</tr>"
    
$RS->MoveNext();
}



*
#SE CIERRA LA CONEXION 
*
$conn->close();
*

*
?>
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #3 (permalink)  
Antiguo 04/10/2012, 14:13
 
Fecha de Ingreso: septiembre-2011
Ubicación: Santiago
Mensajes: 8
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: problemas con PHP y ADODB

Cita:
Iniciado por mogurbon Ver Mensaje
Hola no manches hace siglos que no veia codigo asp 3 , que cosa tan horripilante la verdad si me dio hasta ñañaras , te dejo aqui algo de pseudocodigo que podria funcionarte , es cosa de debugearlo , te dejo tambien el manual en español de adodb, basicamente ahi viene todo

[url]http://www.lacorona.com.mx/fortiz/adodb/docs-adodb-es.htm#fieldcount[/url]

aunque es una buena practica en php no es necesario inicializar variables , por que se pueden inicializar al vuelo , ni tampoco destruirlas por que al terminar de interpretar desaparecen , ojo el codigo no esta probado es pa darte una idea del uso de adodb y de algunas cosillas que hace php , pero debugearlo y saber mas de php se te queda de tarea


Código PHP:
<?php 
include ("conn.php"); * # INCLUIR CLASE DE CONEXION 
*
@
header('Content-type: text/xml');
echo(
"<?xml version='1.0' encoding='iso-8859-1'?>");
*
# DEFINICION DE VARIABLES , valdria la pena nomas el post pero checando seguridad
*
$i* * * * * * * = "";
$RS * * * * * * = "";
$fld* * * * * * = "";
$num_columns* * = "";
$NroSuministro *= $_POST['suministro'];
#$consul= * * * ="";
$SysEmpresa * * = 1; *
*
*
*

$SQL ="SELECT cor_documento correlativo,  
nro_documento nro_documento,  
tip_documento tipo_documento,  
 TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision,  
 TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento,  
 tot_documento total,  
 usuario_aprobador aprobador,  
 fec_documento fec  
 FROM nucssb0030 nuc30 
WHERE cod_empresa = $SysEmpresa
AND nro_suministro = $NroSuministro 
 AND tip_documento = 'ON'  
 UNION  
 SELECT * cor_documento correlativo,  
 nro_documento nro_documento,  
 tip_documento tipo_documento,  
 TO_CHAR (fec_documento, 'dd/mm/yyyy') fecha_emision,  
 TO_CHAR (fec_vencimiento, 'dd/mm/yyyy') fecha_vencimiento,  
 tot_documento total,  
 usuario_aprobador aprobador,  
 fec_documento fec  
 FROM hisssb0004  
 WHERE cod_empresa = $SysEmpresa.  
 AND nro_suministro = $NroSuministro
 AND tip_documento = 'ON'  
 ORDER BY fec DESC "


*
# EJECUTA LA CONSULTA
*
$RS $DB->Execute($SQL);
*
*
#CUENTA CUANTOS REGISTROS TE TRAJO LA CONSULTA Y LOS GUARDA EN UNA VARIABLE
*
$num_rows $RS->RecordCount(); /* contamos el total de registros de resultado */ 
$num_cols $RS->FieldCount();/*numero de columnas */
*
echo (
"SE OBTUVIERON ".$num_rows"CAMPOS<br>"); *#MUESTRA LA CANTIDAD DE REGISTROS EN UN MENSAJE 
*

# ESCRIBE EN EL DOCUMENTO XML
*
echo 
"<registro>";
*


while (!
$RS->EOF) {
    
    echo 
"<tr>"
    for (
$i=0$i $num_cols$i++) {
        echo 
"<td>" $RS-> fields[$i]. "</td>";
    }
    echo 
"</tr>"
    
$RS->MoveNext();
}



*
#SE CIERRA LA CONEXION 
*
$conn->close();
*

*
?>
Muchas gracias por tomarte el tiempo y ayudarme :)

Ahora voy a probar el codigo aver si funciona pq me esta dando mas problemas de lo que esperaba, cualquier novedad volvere a postear, gracias
  #4 (permalink)  
Antiguo 05/10/2012, 12:34
 
Fecha de Ingreso: septiembre-2011
Ubicación: Santiago
Mensajes: 8
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: problemas con PHP y ADODB

Ahora me arroja otro problema, les comento..

Cuando ejecuto el codigo y realizo una consulta mas simple en el $SQL

EJ: (SELECT nombre, direccion FROM CCC)

El codigo recorre y me trae los valores sin arrojar error, pero cuando lo ejecuto con las consultas como estan en el codigo me envia error

Fatal error: Call to a member function RecordCount() on a non-object in D:\desarrollos\SU\desktop\serverPHP\SC4Consulta_su ministro.php on line 147

Y asi con cada funcion del ADOdb, como lo son ->FieldCount() y ->MoveNext() y ->Close()

A que se debe esto????

Saludos

Etiquetas: adodb, asp
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 22:16.