Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por seccion31
Bueno he buscado ese componente y no aparece en delphi 7
¿Te refieres a NMHTTP? En Delphi 7 dispones de las componentes Indy. Vienen incluidas pero también puedes bajar la última versión de la página de Indy Project.

// Saludos
Responder Con Cita
  #2  
Antiguo 25-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 24
marto Va por buen camino
Cita:
Empezado por roman
¿Te refieres a NMHTTP? En Delphi 7 dispones de las componentes Indy. Vienen incluidas pero también puedes bajar la última versión de la página de Indy Project.

// Saludos
Te gané
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 25-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por marto
Te gané
Bueno, es que me retrasé un poquillo buscando el enlace a la página de Indy
Responder Con Cita
  #4  
Antiguo 25-08-2004
seccion31 seccion31 is offline
Registrado
 
Registrado: abr 2004
Posts: 7
Poder: 0
seccion31 Va por buen camino
ok, gracias


de momento ya soy capaz de recuperar "una" pagina:

esto lo voy poniendo, porque luego enviare un ejemplo completo de como hacerlo ¿vale? (asi los que esten en mi caso no tendremos que ir muy lejos)

(objeto Indy IDHttp)

s:=IDHTTP1.Get('http://www.saracosta.com/logos.htm');

(casi nada) : D

cuando trato de recuperar una que no existe:

http:/1.1 404

(osea la pagina no existe) ¿no hay otra forma de detectar que no existe?

voy ahora a intentar subir dinamicamente un PHP y que lo ejecute. (eso sera para nota)

luego os cuento.

(si el moderador cree que no debo seguir asi este hilo que avise ¿eh?)
Responder Con Cita
  #5  
Antiguo 25-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 24
marto Va por buen camino
Wop!

Cita:
Empezado por seccion31
(si el moderador cree que no debo seguir asi este hilo que avise ¿eh?)
¡¡¡¡Norl!!!!! ¡¡¡ojalá todos puesiesemos las soluciones de lo que no entendemos aquí!!!

Solo una cosa, intenta poner el código delphi entre tags [delphi] y el php, [php], sino, a la que la cosa se complique no va a haber quién lo siga
__________________
E pur si muove
Responder Con Cita
  #6  
Antiguo 25-08-2004
seccion31 seccion31 is offline
Registrado
 
Registrado: abr 2004
Posts: 7
Poder: 0
seccion31 Va por buen camino
La siguiente funcion me devuelve:

http/1.0 405 method not allowed


Mi duda es, ¿debo registrarme de alguna forma? (como con un servidor ftp dando mi username y password)

¿debo generar las cabeceras http en el documento?

Aqui va la funcion que empleo

Código Delphi [-]
var
  s:string;
  o:TstringList;
begin
    o:=TstringList.create;
    o.loadFromFile('C:\phpsamle\prueba.php');
    s:=IDHTTP1.Post('http://www.saracosta.com',o);
    showmessage(s);
    o.free;
end;


(prueba.php esta OK, y devuelve una simple cadena 'hola')

Código PHP:
 
<?php
echo 'hola'
?>

Última edición por marto fecha: 26-08-2004 a las 09:08:26.
Responder Con Cita
  #7  
Antiguo 26-08-2004
AMO AMO is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mexico D.F.
Posts: 19
Poder: 0
AMO Va por buen camino
Saludos

Van los codigos

Primero el ejemplo del script de PHP: Este archivo tiene el nombre de ejemplo.php
Código PHP:
<?php
include("config.inc.php");
        
header('Content-type:application/x-msexcel'); 

$db mssql_connect ($hostname$username$password) or die ("ERROR: cannot connect to msql server");
mssql_select_db($dbname,$db) or die ("ERROR: cannot access database");

$query=$sql;
$query_result_handle mssql_query ($query) or die ("ERROR: query '$query'");
$num_of_rows mssql_num_rows ($query_result_handle) or die ("ERROR: no data returned from query '$query'");

$jmssql_num_fields($query_result_handle);

$k=0;

for (
$count 1$row mssql_fetch_row ($query_result_handle); ++$count)
{
$S="";
for (
$k=0$k $j; ++$k)
{
  
$S $S $row[$k] . "&";
}

 
$S=$S.chr(13);

 echo 
$S;
}

mssql_close ($db);

?>
Primero:
El include simplemente es un archivo donde tengo definido las variables $hostname, $username, $password.
Segundo:
El codigo sql proviene de un parametro al llamar al archivo (ejem: ejemplo.php?sql=etc...)
Tercero
El header se quedo del codigo original que creaba un formato tipo excel!
lo deje porque asi el navegador interpreta el bajar un archivo y no presenta el resultado en pantalla.
Por ultimo:
La coneccion se realiza a un SQL server pero cambiando las sentencias MSSQL_ por MYSQL_ funciona para mySQL (probado)




Pasamos a Delphi

En una forma se inserta un Tedit, un TClientdataset y el componente NMHTTP1 se coloca la propiedad outputfilemode a true (con esto lo que provenga de internet se salvara en archivos)

Se pone el nombre de archivo que se desee en las propiedades Body y Header
por ejemplo para el campo Body seria: C:\a.txt

en el tedit se escribiria la sentencia SQL

Insertamos un boton y en el evento onclick colocariamos lo siguiente:

NMHTTP1.Get('localhost\ejemplo.php?sql='+edit1.text);

En el evento NMHTTP1Success quedaria algo asi:

...
Código Delphi [-]
 if FileExists('c:\a.txt') then
 begin
    AssignFile(F, 'c:\a.txt');   { File selected in dialog box }
    reset(F);
  while not eof(f) do
  begin
    inc(i);
    Readln(F, S);
    Clientdataset1.insert;

    for j:=0 to nn do
    begin
    s1:=copy(s,1,pos('&',s)-1);
         delete(s,1,pos('&',s));
    Clientdataset1.fields[j+1].value:=s1;
    end;
....

Al terminar de leer el ascii se tiene lleno el Clientdataset

En resumen: Se escribe una sentencia sql y al presionar el boton se envia la peticion al script php, este procesa y envia un archivo de regreso con el resultado de la sentencia, este archivo es salvado en disco (c:\a.txt ). Y al indicarnos el componente que se ha terminado de bajar (NMHTTP1Success) se consulta si existe el archivo y se procesa como se desee.

Es claro que en estos codigos faltan detalles, como el obtener los nombres de los campos que integran el resultado, los tipos de datos etc.. Pero creo que es una buena pista para exponer la idea del trabajo.

Considero el archivo PHP muy pequeño y util, el resto del trabajo se realiza del lado cliente

Otra alternativa es colocar la respuesta del script a un formato excel, con lo cual ya podemos manejar nativamente este formato.


No he podido colocarles el codigo que actualmente uso, dado que esta muy enfocado a la administracion de mis BD y no resultaria sencillo el explicarlo. Tampoco pude pulir esto mas sorry... He tenido un mundo de trabajo, pero no he querido parecer egoista y tardarme mas en presentarles este codigo, espero les sirva y si tienen dudas con toda confianza.

Saludos















EDITA MARTO: Añadidos tag's [delphi] y [php]

Última edición por marto fecha: 26-08-2004 a las 09:11:24.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:05:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi