Ver Mensaje Individual
  #10 (permalink)  
Antiguo 11/01/2008, 15:14
Avatar de lacho
lacho
 
Fecha de Ingreso: enero-2008
Mensajes: 26
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: arreglo de objetos(imagenes) para subir a un servidor

hola de nuevo foro, segui trabajando un poco en la idea que ya tenia, y pues he logrado que funcione a medias quiza, pues bien lo que me decian exactamente pasa, si cierro el popup se pierde la informacion, pero pues por alli momentaneamente obligare al usuario a que la mantenga abierta mientras guarda el articulo y pues he quedado con esto(pongo los scripts en el orden en que se ejecutan):

script loadimg.php: este script es que que recibe el formulario con las imagenes que quiero enviar,la ventana que contiente este no se debe cerrar para poder tener los datos de la sesion:

Código PHP:
include("archivo.inc.php");

   
//Preguntamos si nuetro arreglo 'archivos' fue definido
 
if (isset ($_FILES["archivos"])) {
      
    
    foreach (
$_FILES['archivos'] as $k => $l
    {
        foreach (
$l as $i => $v) {
            if (!
array_key_exists($i$_SESSION['img'])) 
                
$_SESSION['img'][$i] = array();
            
$_SESSION['img'][$i][$k] = $v;
            
$_SESSION['img'][$i]['comentario']=$_POST['descripcion'][$i];
            
            }
    }
    
   
        
  }   
?> 
sin cerrar el popup anterior nos vamos a tengo los campos para guardar el articulo en si, como la primera imagen del primer post, ya que tenemos toda la informacion en los campos damos guardar y entonces debe invocar al siguiente script:

Código PHP:
include("seguridad.php");
include(
"clase_articulo.php");


session_start();

$codart=articulo::generarcodigo();
$art=new articulo($codart,$_POST['tituloart'],$_POST['subtema'],$_SESSION['usuario_actual']['usuario'],$_POST['fecha'],$_POST['contenido'],$_POST['estado']);
$resultado=$art->guardar();


$tipo="articulo";

$art->subirimagenes($art->cargarimagenes($_SESSION['img']));
if (!
$resultado)
{
header("Location: http://localhost/error.php?msj=".$tipo);
}
else 
{
header("Location: http://localhost/exito.php?msj=".$tipo);} 
las clases las pongo aqui, bueno solo los metodos que se usan en el script anterior:

Código PHP:
<?

class Archivo {
    var 
$Nombre;
    var 
$Comentario;
    var 
$Tipo;
    var 
$Temporal;
    var 
$Ruta;
    var 
$tamanio;
    
    
    function 
Archivo($archivoEnviado) {
        
$this->Nombre=$archivoEnviado['name'];
        
$this->Comentario=$archivoEnviado['comentario'];
        
$this->Tipo=$archivoEnviado['type'];
        
$this->Temporal=$archivoEnviado['tmp_name'];        
        
$this->tamanio=$archivoEnviado['size'];
    }
    
    
    
    public function 
darcomentario()
    {
        return 
$this->Comentario;
    }
    
    public function 
dartipo()
    {
        return 
$this->Tipo;
    }
    
    public function 
dartamanio()
    {
        return 
$this->tamanio;
    }
    
        
    public function 
darnombre()
    {
        return 
$this->Nombre;
    }
    
    function 
esValido() {
        
        if (
strpos($this->Tipo,"jpeg") || strpos($this->Tipo,"png") || strpos($this->Tipo,"gif") || strpos($this->Tipo,"bmp"))
            return 
true;
        else 
            return 
false;
    }
    
    function 
Subir($ruta) {
        
$this->Ruta=$ruta;
        
        if (
move_uploaded_file($this->Temporal,$this->Ruta."/".$this->Nombre))
            return 
true;
        else
            return 
false;
    }
    
    function 
Borrar() {
        if (@
unlink($this->Ruta."/".$this->Nombre))
            return 
true;
        else
            return 
false;
    }
}

?>
ahora donde uso esta clase en si para hacerme segun yo mi arreglo de imagenes y subirlas a mi servidor por medio de la clase articulo:

Código PHP:
include("conexion.php");
include(
"archivo.inc.php");


class 
articulo
{
    
    private 
$submenu;    
    private 
$autor;
    private 
$fecha;
    private 
$contenido;
    private 
$imagenes;
    private 
$estado;
    private 
$codArticulo;
    private 
$tituloArt;
    

    
    public function 
__construct($codArticulo,$tituloArt,$submenu,$autor,$fecha,$contendio,$estado)
    {
        
$this->codArticulo=$codArticulo;
        
$this->submenu=$submenu;
        
$this->autor=$autor;
        
$this->fecha=$fecha;
        
$this->contenido=$contendio;
        
$this->estado=$estado;
        
$this->tituloArt=$tituloArt;
        
$this->imagenes=array();
    }
    

    public function 
cargarimagenes($arreglo)
    {
            
               foreach (
$arreglo as $file
               {    
                
$this->imagenes[]=new Archivo($file);
                       }
           return 
$this->imagenes;
    }
    
    public function 
subirimagenes($arrimagenes)
    {
        
        
$ruta="art_imagenes";
        foreach (
$arrimagenes as $imagen) {
            
$imagen->Subir($ruta);
            
$dir=$ruta."/".$imagen->darnombre();
            
Conectarse();    
            
$sql="insert into imagen(rutaimagen,descripcion,fecha,codArt) values('$dir','".$imagen->darcomentario()."','$this->fecha','$this->codArticulo')";
            
$resultado=mysql_query($sql);
            
        }
             
            return 
$resultado;
            
              }


ahora la pregunta o lo que no me funciona bien es el metodo subir de la clase archivo ya que si llama al metodo pero no ejecuta move_uploaded_file, alguien me podria dar una ayudadita para saber que esta mal y poder subir la imagen????, ya que lo demas funciona bien, claro teniendo en cuenta que la ventana del popup no se cierra mientras se guarda el articulo.

gracias de antemano.

Nota: se que me recomendaban subirlo las imagenes temporalmente, pero la cuestion es que igual tengo que insertar en la base de datos donde esta la imagen. Y tambien lo tengo alli en proyecto paralelo de hacerlo de la otra manera.