Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2012
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
php meter/sacar/update imagen binario de base de datos mysql/firebird

hola..

tengo una duda

para sacar de la base de datos archivos binarios. imagenes documentos etc....

en delphi uso la unit de aqui
pero en php como se hace si la base de datos es mysql / firebird????
Código Delphi [-]
unit EmpresaClass;

interface

uses
  Forms, Windows, ActiveX, shlobj, ShellAPI, SysUtils, Registry, IniFiles, Dialogs, classes,  DB, MemDS, DBAccess, IBC, Graphics, jpeg, pngimage, ExtCtrls;

type
  TEmpresaClass = class(TObject)
  private
///=================================
    Transaction1: TIBCTransaction;
    Transaction2: TIBCTransaction;
    Transaction3: TIBCTransaction;
    Transaction4: TIBCTransaction;
    Transaction5: TIBCTransaction;
    Transaction6: TIBCTransaction;
    Transaction7: TIBCTransaction;
    Transaction8: TIBCTransaction;
    Transaction9: TIBCTransaction;
    Transaction10: TIBCTransaction;
    Transaction11: TIBCTransaction;
///=================================
  public
    Conectado : Boolean;
    Conexion: TIBCConnection;
///=================================
    Query1: TIBCQuery;
    Query2: TIBCQuery;
    Query3: TIBCQuery;
    Query4: TIBCQuery;
    Query5: TIBCQuery;
    Query6: TIBCQuery;
    Query7: TIBCQuery;
    Query8: TIBCQuery;
    Query9: TIBCQuery;
    Query10: TIBCQuery;
    Query11: TIBCQuery;
///=================================
  ID         : integer;
  RFC        : string;
  NOMBRE     : string;
  CALLE      : string;
  NUMEXT     : string;
  NUMINT     : string;
  COLONIA    : string;
  CP         : string;
  ESTADO     : string;
  MUNICIPIO  : string;
  PAIS       : string;
  LEYENDA1   : string;
  LEYENDA2   : string;
  LOGO                  : TField;

  imgLogo: TImage;

    procedure Datos;

    procedure Registra(logo:string);
    procedure Actualiza(logo:string);
    constructor Create(Servidor:string; Puerto :string; BDPath:string; BDNombre :string; Usuario :string; Pass:string; Codificacion : string); overload;
    destructor Destroy; override;
  end;

//var
//  EnterpriseB: TEnterpriseClass;

implementation

//uses
//  Unit1;


constructor TEmpresaClass.Create(Servidor:string; Puerto :string; BDPath:string; BDNombre :string; Usuario :string; Pass:string; Codificacion : string);
begin

  {$REGION 'CREACION'}
  inherited Create;

    Conectado := False;

  Conexion := TIBCConnection.Create(nil);
  Conexion.Params.Clear;
  Conexion.LoginPrompt := False;
  Conexion.Connected := False;
  Conexion.Database :=  Servidor + '/' + Puerto + ':' + IncludeTrailingPathDelimiter(BDPath) + BDNombre;
  Conexion.Params.Values['user_name'] := Usuario;
  Conexion.Params.Values['password'] := Pass;
  Conexion.Params.Values['lc_ctype'] := Codificacion;

  Conexion.SQLDialect := 3;

  Conexion.ClientLibrary := 'fbclient.dll';
  // muy importante para usar unicode poner esto a true
  Conexion.Options.UseUnicode := true;
Conexion.Connect;
 if Conexion.Connected  then
 begin
   Conectado := True;
 end
 else
 begin
   Conectado := False;
 end;


  Transaction1 := TIBCTransaction.Create(nil);
  Transaction1.DefaultConnection := Conexion;
  Transaction1.Params.Clear;
  Transaction1.Params.Add('read_committed');
  Transaction1.Params.Add('rec_version');
  Transaction1.Params.Add('nowait');

  Transaction2 := TIBCTransaction.Create(nil);
  Transaction2.DefaultConnection := Conexion;
  Transaction2.Params.Clear;
  Transaction2.Params.Add('read_committed');
  Transaction2.Params.Add('rec_version');
  Transaction2.Params.Add('nowait');

  Transaction3 := TIBCTransaction.Create(nil);
  Transaction3.DefaultConnection := Conexion;
  Transaction3.Params.Clear;
  Transaction3.Params.Add('read_committed');
  Transaction3.Params.Add('rec_version');
  Transaction3.Params.Add('nowait');

  Transaction4 := TIBCTransaction.Create(nil);
  Transaction4.DefaultConnection := Conexion;
  Transaction4.Params.Clear;
  Transaction4.Params.Add('read_committed');
  Transaction4.Params.Add('rec_version');
  Transaction4.Params.Add('nowait');

  Transaction5 := TIBCTransaction.Create(nil);
  Transaction5.DefaultConnection := Conexion;
  Transaction5.Params.Clear;
  Transaction5.Params.Add('read_committed');
  Transaction5.Params.Add('rec_version');
  Transaction5.Params.Add('nowait');

  Transaction6 := TIBCTransaction.Create(nil);
  Transaction6.DefaultConnection := Conexion;
  Transaction6.Params.Clear;
  Transaction6.Params.Add('read_committed');
  Transaction6.Params.Add('rec_version');
  Transaction6.Params.Add('nowait');

  Transaction7 := TIBCTransaction.Create(nil);
  Transaction7.DefaultConnection := Conexion;
  Transaction7.Params.Clear;
  Transaction7.Params.Add('read_committed');
  Transaction7.Params.Add('rec_version');
  Transaction7.Params.Add('nowait');

  Transaction8 := TIBCTransaction.Create(nil);
  Transaction8.DefaultConnection := Conexion;
  Transaction8.Params.Clear;
  Transaction8.Params.Add('read_committed');
  Transaction8.Params.Add('rec_version');
  Transaction8.Params.Add('nowait');

  Transaction9 := TIBCTransaction.Create(nil);
  Transaction9.DefaultConnection := Conexion;
  Transaction9.Params.Clear;
  Transaction9.Params.Add('read_committed');
  Transaction9.Params.Add('rec_version');
  Transaction9.Params.Add('nowait');

  Transaction10 := TIBCTransaction.Create(nil);
  Transaction10.DefaultConnection := Conexion;
  Transaction10.Params.Clear;
  Transaction10.Params.Add('read_committed');
  Transaction10.Params.Add('rec_version');
  Transaction10.Params.Add('nowait');

  Transaction11 := TIBCTransaction.Create(nil);
  Transaction11.DefaultConnection := Conexion;
  Transaction11.Params.Clear;
  Transaction11.Params.Add('read_committed');
  Transaction11.Params.Add('rec_version');
  Transaction11.Params.Add('nowait');
///=================================
  Query1 := TIBCQuery.Create(nil);
  Query1.Transaction := Transaction1;
  Query1.Connection := Conexion;
  Query1.FetchAll := True;

  Query2 := TIBCQuery.Create(nil);
  Query2.Transaction := Transaction2;
  Query2.Connection := Conexion;
  Query2.FetchAll := True;

  Query3 := TIBCQuery.Create(nil);
  Query3.Transaction := Transaction3;
  Query3.Connection := Conexion;
  Query3.FetchAll := True;

  Query4 := TIBCQuery.Create(nil);
  Query4.Transaction := Transaction4;
  Query4.Connection := Conexion;
  Query4.FetchAll := True;

  Query5 := TIBCQuery.Create(nil);
  Query5.Transaction := Transaction5;
  Query5.Connection := Conexion;
  Query5.FetchAll := True;

  Query6 := TIBCQuery.Create(nil);
  Query6.Transaction := Transaction6;
  Query6.Connection := Conexion;
  Query6.FetchAll := True;

  Query7 := TIBCQuery.Create(nil);
  Query7.Transaction := Transaction7;
  Query7.Connection := Conexion;
  Query7.FetchAll := True;

  Query8 := TIBCQuery.Create(nil);
  Query8.Transaction := Transaction8;
  Query8.Connection := Conexion;
  Query8.FetchAll := True;

  Query9 := TIBCQuery.Create(nil);
  Query9.Transaction := Transaction9;
  Query9.Connection := Conexion;
  Query9.FetchAll := True;

  Query10 := TIBCQuery.Create(nil);
  Query10.Transaction := Transaction10;
  Query10.Connection := Conexion;
  Query10.FetchAll := True;

  Query11 := TIBCQuery.Create(nil);
  Query11.Transaction := Transaction11;
  Query11.Connection := Conexion;
  Query11.FetchAll := True;

end;

destructor TEmpresaClass.Destroy;
begin
  inherited Destroy;
  Conexion.Free;
///=================================
  Transaction1.Free;
  Transaction2.Free;
  Transaction3.Free;
  Transaction4.Free;
  Transaction5.Free;
  Transaction6.Free;
  Transaction7.Free;
  Transaction8.Free;
  Transaction9.Free;
  Transaction10.Free;
  Transaction11.Free;
///=================================
  Query1.Free;
  Query2.Free;
  Query3.Free;
  Query4.Free;
  Query5.Free;
  Query6.Free;
  Query7.Free;
  Query8.Free;
  Query9.Free;
  Query10.Free;
  Query11.Free;
///=================================

  imgLogo.Free;
end;


procedure TEmpresaClass.Datos;
var
  SQL: string;
  I: integer;

  MemoryStreamLogo: TMemoryStream;
  JpgLogo: TJpegImage;
  fldCampoLogo: TField;
  StreamLogo: TStream;

  // variables para cedula
  MemoryStreamCedula: TMemoryStream;
  JpgCedula: TJpegImage;
  fldCampoCedula: TField;
  StreamCedula: TStream;
begin
  SQL := 'SELECT ';
  SQL := SQL + ' ID, RFC, NOMBRE, CALLE, NUMEXT, ';
  SQL := SQL + ' NUMINT, COLONIA, CP, ESTADO, MUNICIPIO,  ';
  SQL := SQL + ' PAIS, LEYENDA1, LEYENDA2,LOGO ';
  SQL := SQL + ' FROM DATOSEMPRESA';
  SQL := SQL + ' WHERE ID = ''' +   IntToStr(1) + '''';

    imgLogo := TImage.create(nil);

    Query1.Close;
    Query1.SQL.Clear;

    Query1.SQL.Add(SQL);
    Query1.Execute;

    for I := 0 to Query1.RecordCount - 1 do
    begin
        ID         := Query1.Fields[0].AsInteger;
        RFC        := Query1.Fields[1].AsString;
        NOMBRE     := Query1.Fields[2].AsString;
        CALLE      := Query1.Fields[3].AsString;
        NUMEXT     := Query1.Fields[4].AsString;
        NUMINT     := Query1.Fields[5].AsString;
        COLONIA    := Query1.Fields[6].AsString;
        CP         := Query1.Fields[7].AsString;
        ESTADO     := Query1.Fields[8].AsString;
        MUNICIPIO  := Query1.Fields[9].AsString;
        PAIS       := Query1.Fields[10].AsString;
        LEYENDA1   := Query1.Fields[11].AsString;
        LEYENDA2   := Query1.Fields[12].AsString;

   //procesamos el campo para logos
      JpgLogo := nil;
      MemoryStreamLogo := nil;
      try
        MemoryStreamLogo := TMemoryStream.create;
        fldCampoLogo     := Query1.FieldByName('LOGO') as TBlobField;
        StreamLogo       := Query1.CreateBlobStream(fldCampoLogo, bmRead);

        MemoryStreamLogo.LoadFromStream(StreamLogo);

        JpgLogo := TJpegImage.create;
        JpgLogo.LoadFromStream(MemoryStreamLogo);
        imgLogo.Picture.Assign(JpgLogo);
      except
        imgLogo.Picture.Assign(nil);
        JpgLogo.Free;
      end;
      JpgLogo.Free;
      MemoryStreamLogo.Free;

      Query1.Next;
    end;


end;

procedure TEmpresaClass.Actualiza(logo:string);
begin
              Query1.Close;
              Query1.SQL.Clear;
              Query1.SQL.Add('UPDATE DATOSEMPRESA SET ');
              Query1.SQL.Add('RFC = '''                   + RFC+ ''',');
              Query1.SQL.Add('NOMBRE = '''                + NOMBRE + ''',');
              Query1.SQL.Add('CALLE = '''                 + CALLE + ''',');
              Query1.SQL.Add('NUMEXT = '''        + NUMEXT + ''',');
              Query1.SQL.Add('NUMINT = '''        + NUMINT + ''',');
              Query1.SQL.Add('COLONIA = '''               + COLONIA + ''',');
              Query1.SQL.Add('CP = '''                    + CP + ''',');
              Query1.SQL.Add('ESTADO = '''                + ESTADO + ''',');
              Query1.SQL.Add('MUNICIPIO = '''             + MUNICIPIO + ''',');
              Query1.SQL.Add('PAIS = '''                  + PAIS+ '''');
              Query1.SQL.Add('WHERE ID = ''' +  IntToStr(1) + '''');
              Query1.ExecSQL;

    if (FileExists(logo)) then
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('UPDATE DATOSEMPRESA SET LOGO = :blbLogo');
      Query1.SQL.Add('WHERE ID = ''' + IntToStr(1) + '''');
      Query1.ParamByName('blbLogo').LoadFromFile(logo, ftBlob);
      Query1.ExecSQL;
    end;
end;


procedure TEmpresaClass.Registra(logo:string);
begin
     Query1.Close;
     Query1.SQL.Clear;
     Query1.SQL.Add('INSERT INTO DATOSEMPRESA ');
     Query1.SQL.Add('(');
     Query1.SQL.Add(' RFC, NOMBRE, CALLE, NUMEXT, ');
     Query1.SQL.Add(' NUMINT, COLONIA, CP, ESTADO, MUNICIPIO,  ');
     Query1.SQL.Add(' PAIS, ACTIVADO, LOGO');
     Query1.SQL.Add(' )');
     Query1.SQL.Add('  VALUES');
     Query1.SQL.Add('( ');
     Query1.SQL.Add(' :RFC, :NOMBRE, :CALLE, :NUMEXT, ');
     Query1.SQL.Add(' :NUMINT, :COLONIA, :CP, :ESTADO, :MUNICIPIO,  ');
     Query1.SQL.Add(' :PAIS, :ACTIVADO, :LOGO');
     Query1.SQL.Add(' )');
     Query1.ParamByName('RFC').AsString           := RFC ;
     Query1.ParamByName('NOMBRE').AsString        := NOMBRE ;
     Query1.ParamByName('CALLE').AsString         := CALLE;
     Query1.ParamByName('NUMEXT').AsString        := NUMEXT;
     Query1.ParamByName('NUMINT').AsString        := NUMINT;
     Query1.ParamByName('COLONIA').AsString       := COLONIA;
     Query1.ParamByName('CP').AsString            := CP;
     Query1.ParamByName('ESTADO').AsString        := ESTADO;
     Query1.ParamByName('MUNICIPIO').AsString     := MUNICIPIO ; 
     Query1.ParamByName('PAIS').AsString          := PAIS;
     Query1.ParamByName('ACTIVADO').asinteger := 1;

         if FileExists(logo) then
    begin
      Query1.ParamByName('LOGO').LoadFromFile(logo, ftBlob);
    end;


     Query1.Execute;
end;

end.
Responder Con Cita
  #2  
Antiguo 26-06-2012
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
hola aca preguntando sobre lo mismo

si ya tengo el archivo en la base de datos mysql. ¿como lo saco?


lo que quiero es sacar el archivo de el campo blob


poner el archivo en una carpeta..

tengo la query pero y ahora como lo paso a al discoduro???

Código PHP:
<?php
$username 
"root";
$password "a2210";
$host "localhost";
$database "login";

mysql_connect($host$username$password) or die("Can not connect to database: ".mysql_error());

mysql_select_db($database) or die("Can not select the database: ".mysql_error());

//$id = $_GET['id'];
//
//if(!isset($id) || empty($id) || !is_int($id)){
//         die("Please select your image!");
//}else{

//$query = mysql_query("SELECT * FROM ARCHIVOS WHERE ID='".$id."'");
$query mysql_query("SELECT * FROM ARCHIVOS WHERE ID= '".'1'."'");
$row mysql_fetch_array($query);
$content $row['image'];

header('Content-type: image/jpg');
         echo 
$content;
//}

?>
Responder Con Cita
  #3  
Antiguo 26-06-2012
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
Puedes usar fwrite.

// Saludos
Responder Con Cita
  #4  
Antiguo 27-06-2012
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
roman . gracias por la pista.

encontre este codigo de aqui http://zetcode.com/databases/mysqlphptutorial/
Código PHP:
<?php

$host 
"localhost"
$user "root"
$pass "a2210"
$db "login";

$r mysql_connect($host$user$pass);

if (!
$r) {
    echo 
"Could not connect to server\n";
    
trigger_error(mysql_error(), E_USER_ERROR);
} else {
    echo 
"Connection established\n"
}

$r2 mysql_select_db($db);

if (!
$r2) {
    echo 
"Cannot select database\n";
    
trigger_error(mysql_error(), E_USER_ERROR); 
} else {
    echo 
"Database selected\n";
}

$query "SELECT Data FROM archivos WHERE Id=2";
    
$rs mysql_query($query);

if (!
$rs) {
    echo 
"Could not execute query: $query";
    
trigger_error(mysql_error(), E_USER_ERROR); 
} else {
    echo 
"Query: $query executed\n";


$row mysql_fetch_row($rs);

//$file = "woman2.jpg";
$file "woman2.doc";
$img fopen($file'wb');

if (!
$img) {
    echo 
"Cannot open file for writing\n";
    
trigger_error("Cannot open file for writing\n"E_USER_ERROR);


$r3 fwrite($img$row[0]);

if (!
$r3) {
    echo 
"Cannot write image to file\n";
    
trigger_error("Cannot write image to file\n"E_USER_ERROR);


fclose($img);

mysql_close();

?>
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
DB firebird meter y sacar texto e imagenes a campos blob , con delphi JXJ Firebird e Interbase 1 11-10-2010 11:52:34
Guardar una imagen a una base de datos en mySQL Elqui MySQL 5 18-12-2009 01:05:11
sacar filas y columnas desde base de datos (Profgrid) robertillo Varios 8 10-04-2007 03:36:01
problemas con consulta SQL meter a la base de datos memehua SQL 15 07-03-2007 15:06:22
de donde sacar Base de datos de provincias poblaciones y CP? Halfo Varios 1 23-07-2004 15:49:15


La franja horaria es GMT +2. Ahora son las 19:30:39.


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