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.