Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Cómo visualizar una imagen subida por un usuario

Estas en el tema de Cómo visualizar una imagen subida por un usuario en el foro de PHP en Foros del Web. Hola, buenas. Sigo trabajando con un proyecto para un sistema de registros; el problema que ahora tengo es, al momento de que el usuario sube ...
  #1 (permalink)  
Antiguo 09/11/2016, 00:43
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Cómo visualizar una imagen subida por un usuario

Hola, buenas. Sigo trabajando con un proyecto para un sistema de registros; el problema que ahora tengo es, al momento de que el usuario sube la imagen de su comprobante ésta no se muestra en su perfil. Lo explicaré mejor con imágenes:

1) Aquí es donde ingresarán su folio y su código:
http://semana.mat.uson.mx/registro/unison/index.php
Código:
Código:
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Refresh" content="10;url=./">
    </head>
    <body>
        <?php
            $target_dir = "archivos/";
            $uploadOk = 1;
            $imageFileType = pathinfo($_FILES["fileToUpload"]["name"],PATHINFO_EXTENSION);

            // Check if image file is a actual image or fake image
            if(isset($_POST["submit"])) {
                $folio=$_POST["folio"];
                include 'conexion.php';
                $tabla=$mysqli->query("select folio from asistente where folio='".$folio."'");

                if ($tabla->num_rows > 0) {            
                    $target_file = $target_dir.$folio.".".$imageFileType;
                    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
                    if($check !== false) {
                        //echo "File is an image - " . $check["mime"] . ".";
                        $uploadOk = 1;
                    } else {
                        echo "<br>Lo sentimos, el archivo enviado no es una imagen.<br>
                            Favor de crear comprobante en una imagen y enviarlo despu&eacute;s.<br>";
                        $uploadOk = 0;
                    }

                    // Check if file already exists
                    if (file_exists(basename(substr($target_file,0,-4)))) {
                        echo "<br>Lo sentimos, el archivo ya ha sido enviado.<br>";
                        $uploadOk = 0;
                    }
                    // Check file size

                    if ($_FILES["fileToUpload"]["size"] > 2097152) {
                        header("Location: index.php?error=2");
                        //echo "Sorry, your file is too large.";
                    }
                    // Allow certain file formats
                    /*if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
                    && $imageFileType != "gif" ) {
                        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
                        $uploadOk = 0;
                    }*/
                    // Check if $uploadOk is set to 0 by an error
                    if ($uploadOk == 0) {
                        echo "<br>Tu archivo NO ha sido almacenado. Favor de intentar 
                            despu&eacute;s. <br>";
                    // if everything is ok, try to upload file
                    } else {
                        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
                            //echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
                            //echo basename($target_file)."<br>";
                            //echo basename(substr($target_file,0,-4).".*");
                            $target_file=$mysqli->real_escape_string($target_file);
                            $tabla=$mysqli->query("update asistente set rutaImg='".$target_file."' where folio='".$folio."'"); 
                            echo "<br>Gracias por enviar tu comprobante <br>";

                        } else {
                            echo "<br>Lo sentimos, ocurrio un error al guardar el archivo<br>";
                        }
                    }
                }
            }
            echo "<br>El sitio te lleva a la p&aacute;gina principal en 10 segundos.
                <br>Si no te redirige, puedes <a href=\"./\">hacer click aqu&iacute;</a>";
        ?>
    </body>
</html>
2) Haciendo eso, la imagen se debería mostrar en su perfil pero no se muestra, lo raro es que en lugar de aparecer la imagen que se acaba de subir lo que se almacena el correo con el que se registró, eso no entiendo por qué sucede:

Código:
  <!--Inicio SECCION: Pago de inscripcion -->
        <div id="pupopRegistro">
            <div id="contPupop">
                <div style="margin:auto; text-align:center; margin-top:5%;">
                    <form action="verificarPago.php" method="post">
                        <input id="registroId" class="idOculto" type="hidden" value="" name="id">
                        <table style="margin:auto;">
                            <tr>
                                <td>Nombre: </td>
                                <td><span id="name"></span></td>
                            </tr>
                            <tr>
                                <td>Apellido Paterno: </td>
                                <td><span id="Apellido_paterno"></span></td>
                            </tr>
                            <tr>
                                <td>Apellido Materno: </td>
                                <td><span id="Apellido_Materno"></span></td>
                            </tr>
                            <tr>
                                <td>Institucion: </td>
                                <td><span id="Institucion"></span></td>
                            </tr>
                        </table><br>
                        <input type="radio" name="verificacion" value="1" checked="checked">Comprobante V&aacute;lido<br>
                        <input type="radio" name="verificacion" value="2">Comprobante No V&aacute;lido<br> <br>
                        <input class="fechaOculto" type="hidden" value="" name="fecha">
                        <input type="button" class="btn btn-primary" id="cancel" value="Cancelar">
                        <input class="fechaOculto" type="hidden" value="" name="fecha">
                        <input type="submit" class="btn btn-primary" id="enviar" value="Aceptar">
                    </form>
                    <img id="img" src="" style="width:100%;"/>  <br>________________Imagen De la Credencial____________________<br>
                    <img id="img2" src="" style="width:100%;"/>
                </div>
            </div>
        </div>
        <!--Fin SECCION: Pago de inscripcion -->
Esta parte del código no fue mi responsabilidad por eso estoy teniendo problemas, alguien que me pueda ayudar?, gracias de antemano !!
  #2 (permalink)  
Antiguo 09/11/2016, 02:56
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Cómo visualizar una imagen subida por un usuario

Hola Jose_A,

Sin analizar a fondo tu código, tiene toda la pinta de que se te está sobreescribiendo algún campo... por eso te muestra el e-mail en lugar de la imagen.

Puede que me equivoque, pero es lo primero que revisaría yo.
  #3 (permalink)  
Antiguo 09/11/2016, 03:57
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Cómo visualizar una imagen subida por un usuario

Pues en el código que enseñas a simple vista no parece que este el problema.

Deberías
A) Revisar si en la base de datos se almacena o no el nombre de la imagen correctamente
B) Revisar revisar la consulta que trae la imagen de la base de datos
C) Revisar como se genera el div que muestra la imagen
__________________
Unset($vida['malRollo']);
  #4 (permalink)  
Antiguo 09/11/2016, 10:08
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Respuesta: Cómo visualizar una imagen subida por un usuario

Bueno, en la base de datos lo tengo como rutaImagenPago, pero en el código mi compañero lo dejó diferente, sinceramente hizo cambios que no debieron hacerse.


Ese es el error no?

Edito:

Olvidé ponerlo en la imagen anterior, en la base de datos la imagen si se almacena, aquí la prueba:


Pero, sigue sin aparecer en su perfil:


Me sigue enviando el correo, sigo sin entender por qué...

Última edición por Jose_A; 09/11/2016 a las 14:32 Razón: faltó un dato
  #5 (permalink)  
Antiguo 09/11/2016, 16:01
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Cómo visualizar una imagen subida por un usuario

En el código que muestras la imagen en html tiene la ruta vacía

Código HTML:
Ver original
  1. <img id="img" src="" style="width:100%;"/>

Por lo que debe de haber alguna función en js que establezca la ruta de la imagen y también seguramente en php, debe de hacerse una consulta a la base de datos para obtener el nombre de la imagen, que luego se imprimirá o será devuelta al navegador de alguna forma en una de esas partes debe de estar el fallo.

Por lo que muestras pues descartar que el problema este en el código que pasaste, ya que en principio la imagen se sube y guarda de forma correcta . El problema debe estar en como estas recuperando esos datos.
__________________
Unset($vida['malRollo']);
  #6 (permalink)  
Antiguo 09/11/2016, 17:16
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Respuesta: Cómo visualizar una imagen subida por un usuario

Sí, esa opción ya me la había dado un compañero, me comentó que podía ser ese el error pero no lo encontré. Mira:

Crees que el problema pueda estar aquí?

Código:
 $(".trUsuarios").click(function(){
                $( "#pupopRegistro" ).fadeIn( "fast", "linear" );
                var objeto = $(this).children('td');
                //console.log (objeto.children('input')[0].value);
                console.log (objeto[0].outerText);
                console.log (objeto[1].outerText);
                console.log (objeto[2].outerText);
                console.log (objeto[3].outerText);
                //$("#idOculto").val(objeto[0].outerText);
                $("#name").text(objeto[0].outerText);
                $("#registroId").val($(this).attr('id').split("-")[1]);
                $("#Apellido_paterno").text(objeto[1].outerText);
                $("#Apellido_Materno").text(objeto[2].outerText);
                $("#Institucion").text(objeto[3].outerText);
                $("#img").attr('src',objeto.children('input')[0].value);
                $("#img2").attr('src',objeto.children('input')[1].value);
                //console.log ($(this).children('td'));
            });

Cabe mencionar, hay una segunda imagen que es de la credencial universitaria la cual se muestra sin problemas (img2) la que no se muestra es (img). Saludos.
  #7 (permalink)  
Antiguo 10/11/2016, 08:28
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Cómo visualizar una imagen subida por un usuario

Estás pasando mal la imagen, has intentado darle click a la imagen y si te ha entrado? en el SRC del IMG que muestras es un correo electrónico, en la ventana te esta cargando la imagen pero la ruta de la imagen no es correcta.
  #8 (permalink)  
Antiguo 10/11/2016, 08:31
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Cómo visualizar una imagen subida por un usuario

En lo que estas pasando veo que pasas a través de un array, has intentado cambiar eso? debe ser que otro input es el que te esta pasando el correo al src
  #9 (permalink)  
Antiguo 10/11/2016, 09:40
Avatar de Jose_A  
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años
Puntos: 0
Respuesta: Cómo visualizar una imagen subida por un usuario

Puede ser pero ya revisé los códigos y no encuentro cual es el error, no lo veo. Por ejemplo, este otro código recibe la imagen de la credencial, el proceso es prácticamente el mismo a la otra pero esta si funciona:
Código:
<?php
$target_dir = "estudiantes/";
$uploadOk = 1;
$imageFileType = pathinfo($_FILES["rutaIMGcred"]["name"],PATHINFO_EXTENSION);

// Check if image file is a actual image or fake image

    $target_file = $target_dir.$folio.".".$imageFileType;
    $check = getimagesize($_FILES["rutaIMGcred"]["tmp_name"]);
    if($check !== false) {
        //echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }

// Check if file already exists
if (file_exists(basename(substr($target_file,0,-4)))) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size

if ($_FILES["rutaIMGcred"]["size"] > 2097152) {
    header("Location: index.php?error=2");
    echo "Sorry, your file is too large.";
    exit();
}
// Allow certain file formats
/*if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}*/
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
    exit();
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["rutaIMGcred"]["tmp_name"], $target_file)) {
        //echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
        //echo basename($target_file)."<br>";
        //echo basename(substr($target_file,0,-4).".*");
        $target_file=$mysqli->real_escape_string($target_file);
        //$tabla=$mysqli->query("update asistente set rutaImg='".$target_file."' where folio='".$folio."'"); 
    } else {
        echo "Lo sentimos, ocurrio un error al guardar el archivo";
    }
    }



?>

Edito:

Ya se resolvió, como dijo el compañero arriba, había una función en js que establecía la ruta de la imagen y también en php, pero se mandaba desde otro archivo que no había visto.
Gracias por responder a todos !!

Última edición por Jose_A; 10/11/2016 a las 11:38

Etiquetas: html, mysql, registro, subida, tabla, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:17.