Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Subir imagen

Estas en el tema de Subir imagen en el foro de PHP en Foros del Web. Necesito ayuda y es que no consigo subir una imagen en el formulario, sé que se necesita la función move_uploaded_file, ¿no? Código PHP: <?php  $titulo  ...
  #1 (permalink)  
Antiguo 23/02/2016, 11:58
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Subir imagen

Necesito ayuda y es que no consigo subir una imagen en el formulario, sé que se necesita la función move_uploaded_file, ¿no?

Código PHP:
<?php 
$titulo 
'';
$texto '';
$imagen '';
$layout '';
$clasificacion '';
if(
$_POST) {
    
$titulo $_POST['titulo'];
    
$texto $_POST['texto'];
    
$imagen $_POST['imagen'];
    
$layout $_POST['layout'];
    
$clasificacion $_POST['clasificacion'];
    if (
$titulo == "" or $texto == "" or $imagen == "" or $layout == "" or $clasificacion == "") { 
        
$mensajesprintf("Hay algún campo vacío");
    }
    else {
        include 
'config.php';
        
$sql sprintf("INSERT INTO articulos VALUES ('', '', '', '$titulo', '$texto', '$imagen', '$layout', '$clasificacion')");
        
$res mysql_query($sql);
        if (!
$res) die('Invalid query: ' mysql_error());
        
$mensaje sprintf("Articulo registrado correctamente");
    }
?>
 
 
<html>
<body>

    <form method="post" action="registroarticulo.php">
        <label>titulo: </label><input type="text" name="titulo" value="<?php echo $titulo ?>"><br>
        <label>texto: </label><input type="text" name="texto" value="<?php echo $texto ?>"><br>
        <label>imagen: </label><input type="file" name="imagen" value="<?php echo $imagen ?>"><br>
        <label>layout: </label><input type="text" name="layout" value="<?php echo $layout ?>"><br>
        <label>clasificacion: </label><input type="text" name="clasificacion" value="<?php echo $clasificacion ?>"><br>
        <div class="submit">
            <input type="submit" value="Registrar">
        </div>
    </form>
 
</body>
</html>

Según tengo entendido, si ejecuto el formulario que he puesto y añado una imagen, no se sube realmente ya que se almacena en un directorio temporal, ¿no es así? Y se supone que con move_uploaded_file se especifica un directorio de subida, pero no me sale.
  #2 (permalink)  
Antiguo 23/02/2016, 12:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Subir imagen

Cita:
sé que se necesita la función move_uploaded_file, ¿no?
Sí, pero no es lo único, también te hace falta el enctype, además los archivos se leen con $_FILES y no con $_POST, etc.

Consulta el siguiente manual: http://php.net/manual/es/features.file-upload.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/02/2016, 16:58
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Subir imagen

Cita:
Iniciado por pateketrueke Ver Mensaje
Sí, pero no es lo único, también te hace falta el enctype, además los archivos se leen con $_FILES y no con $_POST, etc.

Consulta el siguiente manual: [url]http://php.net/manual/es/features.file-upload.php[/url]
Gracias, ya lo solucioné de la siguiente forma y me funciona tal y como quería:
archivo1:
Código:
<html>
<body>

    <form method="post" action="registroarticulo2.php" enctype="multipart/form-data">
        <label>titulo: </label><input type="text" name="titulo"><br>
        <label>texto: </label><input type="text" name="texto"><br>
        <label>imagen: </label><input type="file" name="imagen"><br>
        <label>layout: </label><input type="text" name="layout"><br>
        <label>clasificacion: </label><input type="text" name="clasificacion"><br>
        <div class="submit">
            <input type="submit" value="Registrar">
        </div>
    </form>
 
</body>
</html>
archivo2:
Código PHP:
<?php
$titulo 
'';
$texto '';
$imagen '';
$layout '';
$clasificacion '';
if(
$_POST) {
    
$titulo $_POST['titulo'];
    
$texto $_POST['texto'];
    
$imagen $_FILES['imagen'];
    
$layout $_POST['layout'];
    
$clasificacion $_POST['clasificacion'];
    if (
$titulo == "" or $texto == "" or $imagen == "" or $layout == "" or $clasificacion == "") { 
        
$mensajesprintf("Hay algún campo vacío");
    }
    else {
        include 
'config.php';
        
$sql sprintf("INSERT INTO articulos VALUES ('', '', '', '$titulo', '$texto', '', '$layout', '$clasificacion')");
        
$res mysql_query($sql);
        if (!
$res) die('Invalid query: ' mysql_error());
        
$mensaje sprintf("Articulo registrado correctamente");
    }

        
$nombre_tmp $_FILES["imagen"]["tmp_name"];
        
$nombre $_FILES["imagen"]["name"];
        
move_uploaded_file($nombre_tmp"imagenes/$nombre");
    

?>
-----------------------------------------------------------------
Pero ahora me ha surgido otra duda que me gustaría resolver.

Resulta que no me saca la hora del actual sistema, se supone que si tengo la tabla de la base de datos así, en concreto la columna marcada en amarillo, me tendría que sacar la hora actual del sistema, ¿no?:


Pero cada vez que creo un artículo me saca todo ceros:


¿Qué tengo mal y cómo solucionarlo?
  #4 (permalink)  
Antiguo 23/02/2016, 17:04
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Subir imagen

En tu sql tienes esto
Código PHP:
Ver original
  1. $sql = sprintf("INSERT INTO articulos VALUES ('', '', '', '$titulo', '$texto', '', '$layout', '$clasificacion')");

Indicandole que a "artDatCre" le de el valor ''. Lo cual CURRENT_TIMESTAMP no entiende, y por eso te pone ese valor, se entiende?

Intenta así
Código PHP:
Ver original
  1. $sql = sprintf("INSERT INTO articulos (artTit, artTxt, artLayout, artClas) VALUES ( '$titulo', '$texto', '$layout', '$clasificacion')");
  #5 (permalink)  
Antiguo 23/02/2016, 17:10
 
Fecha de Ingreso: febrero-2016
Mensajes: 9
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Subir imagen

Cita:
Iniciado por rodocoyote15 Ver Mensaje
En tu sql tienes esto
Código PHP:
Ver original
  1. $sql = sprintf("INSERT INTO articulos VALUES ('', '', '', '$titulo', '$texto', '', '$layout', '$clasificacion')");

Indicandole que a "artDatCre" le de el valor ''. Lo cual CURRENT_TIMESTAMP no entiende, y por eso te pone ese valor, se entiende?

Intenta así
Código PHP:
Ver original
  1. $sql = sprintf("INSERT INTO articulos (artTit, artTxt, artLayout, artClas) VALUES ( '$titulo', '$texto', '$layout', '$clasificacion')");
Perfecto! Me ha funcionado, muchas gracias.

Etiquetas: formulario, html, mysql, registro, sql
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 11:23.