Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2017, 11:32
vegas
 
Fecha de Ingreso: mayo-2003
Mensajes: 194
Antigüedad: 21 años, 6 meses
Puntos: 4
no funciona uploader de imagenes

hola amigos de foros del web:

tengo un problema con el uploader de imagenes. si pongo el codigo en un archivo creado solo para el uoloader funciona bien.

si pongo un include en una pagina diferente donde quiero que aparezca el uploader funciona bien si no esta dentro de ninguna celda.

pero si pongo el uploader dentro de una celda con un include deja de funcionar.


el poner el include dentro de la pagina donde quiero el uploader es por que tampoco pude hacerlo funcionar si pongo el codigo en la pagina donde quiero que este el uploader.

funcionamiento:
cuando subo una imagen coge la ruta del archivo y la guarda en la base de datos para poder llamarla luego.

este es el codigo de la pagina donde solo tengo el uploader:

Código PHP:
<?php


$link
=mysqli_connect('localhost','bd','psw','tabla') or die(mysqli_error());


?>



    
    <table align="center">
    <tr>
    <td>
    <form action="form_aviso_tecnico_planificado.php" method="POST" enctype="multipart/form-data">
        <label for="imagen"></label>
        
        <input type="file" name="imagen" id="imagen"/>
        <input type="submit" name="subir" value="Subir"/>
        
        
    </form>
    </td>
    </tr>
    </table>
    <?php



//compruebo que me estan enviando una imagen para guardarla
if (isset($_FILES["imagen"]))
{

    
//comprobamos si ha ocurrido un error.
    
if ($_FILES["imagen"]["error"] > 0)
    {
        echo 
"ha ocurrido un error";
    } 
    
    else 
    {
        
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
        //y que el tamano del archivo no exceda los 100kb
        
$permitidos = array("image/jpg""image/jpeg""image/gif""image/png");
        
$limite_kb 900;
    
        if (
in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb 1024)
        {
            
//esta es la ruta donde copiaremos la imagen
            //recuerden que deben crear un directorio con este mismo nombre
            //en el mismo lugar donde se encuentra el archivo subir.php
            
$ruta "imagenes/" $_FILES['imagen']['name'];
            
            
//comprobamos si este archivo existe para no volverlo a copiar.
            //pero si quieren pueden obviar esto si no es necesario.
            //o pueden darle otro nombre para que no sobreescriba el actual.
            
if (!file_exists($ruta))
            {
                
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
                //usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
                //almacenara true o false
                
$resultado = @move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);
                
                if (
$resultado)
                {
                    echo 
"el archivo ha sido movido exitosamente";
                    
                    
$insert="INSERT INTO imagenes (ruta)
                    VALUES('$ruta')"
;
                    
$result=mysqli_query($link,$insert);
                } 
                else 
                {
                    echo 
"ocurrio un error al mover el archivo.";
                }
            } 
            else 
            {
                echo 
$_FILES['imagen']['name'] . ", este archivo existe";
            }
        } 
        else 
        {
            echo 
"archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
        }
        
        
    }
}







?>

y este parte del codigo donde quiero ponerlo y donde no funciona.

asi es con un include:

Código PHP:
<td valign="middle"><font color="WHITE"><b>Subir Foto</b></font></td>
    
      <td align="center" bgcolor="#FFFFFF"><? include("../imagen.php"); ?>    </td>  
      <td valign="middle"></td>
      <td valign="middle"></td>
      <td valign="middle"><font color="WHITE"><b></td>

y asi con el codigo completo en la pagina:

Código PHP:
<tr>
     <td valign="middle"><font color="WHITE"><b>Subir Foto</b></font></td>
    
      <td align="center" bgcolor="#FFFFFF"><? 


$link
=mysqli_connect('localhost','bd','psw','tabla') or die(mysqli_error());


?>



    
    <table align="center">
    <tr>
    <td>
    <form action="form_aviso_tecnico_planificado.php" method="POST" enctype="multipart/form-data">
        <label for="imagen"></label>
        
        <input type="file" name="imagen" id="imagen"/>
        <input type="submit" name="subir" value="Subir"/>
        
        
    </form>
    </td>
    </tr>
    </table>
    <?php



//compruebo que me estan enviando una imagen para guardarla
if (isset($_FILES["imagen"]))
{

    
//comprobamos si ha ocurrido un error.
    
if ($_FILES["imagen"]["error"] > 0)
    {
        echo 
"ha ocurrido un error";
    } 
    
    else 
    {
        
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
        //y que el tamano del archivo no exceda los 100kb
        
$permitidos = array("image/jpg""image/jpeg""image/gif""image/png");
        
$limite_kb 900;
    
        if (
in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb 1024)
        {
            
//esta es la ruta donde copiaremos la imagen
            //recuerden que deben crear un directorio con este mismo nombre
            //en el mismo lugar donde se encuentra el archivo subir.php
            
$ruta "imagenes/" $_FILES['imagen']['name'];
            
            
//comprobamos si este archivo existe para no volverlo a copiar.
            //pero si quieren pueden obviar esto si no es necesario.
            //o pueden darle otro nombre para que no sobreescriba el actual.
            
if (!file_exists($ruta))
            {
                
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
                //usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
                //almacenara true o false
                
$resultado = @move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);
                
                if (
$resultado)
                {
                    echo 
"el archivo ha sido movido exitosamente";
                    
                    
$insert="INSERT INTO imagenes (ruta)
                    VALUES('$ruta')"
;
                    
$result=mysqli_query($link,$insert);
                } 
                else 
                {
                    echo 
"ocurrio un error al mover el archivo.";
                }
            } 
            else 
            {
                echo 
$_FILES['imagen']['name'] . ", este archivo existe";
            }
        } 
        else 
        {
            echo 
"archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
        }
        
        
    }
}

?>

os agradeceria una ayuda ya que no consigo ponerlo en funcionamiento y me he roto la cabeza haciendo pruebas con el include, con el codigo en la pagina etc...

otra cosa es que cuando he puesto el include dentro de la pagaina donde no funciona, pero que si funciona si el include esta fuera de las tablas, entonces la pagina se recarga y me desaparecen los datos de la pagina. eso creo que lo podria solucionar quitando el boton enviar del formulario de la pagina y dejando solo el boton de guardar que ya lleva esa pagina. o tambien volviendo a recoger las variables cuando se recargue la pagina por haber enviado las fotos.