Subir nombre de imagen a base de datos y la imagen a una carpeta .

Tengo que subir con un formulario textos y una imagen, el nombre de la imagen en la tabla mysql y la foto que se suba y guarde en una carpeta en mi sitio, tengo este ccodigo que trate de ajustar pero no he podido, se lo adjunto para que me ayuden, gracias.

html

<html>
<head>
<title>Usuarios</title>
</head>
<body>
<center><h1>Nuevo Usuario</h1></center>
<form name="nuevo_usuario" method="POST" action="guarda_usuario.php" >
<table width="50%">
<tr>
<td width="20"><b>Usuario</b></td>
<td width="30"><input type="text" name="usuario" size="25" /></td>
</tr>
<tr>
<td><b>Password</b></td>
<td><input type="password" name="password" size="25" /></td>
</tr>
<tr>
<td><b>Email</b></td>
<td><input type="text" name="email" size="25" /></td>
</tr>
<tr>
<td><b>Imagen</b></td>
<td><input type="file" name="img" id="img" size="25" /></td>
</tr>
<tr>
<td colspan="2"><center><input type="submit" name="eviar" value="Registrar" /></center></td>
</tr>
</table>
</form>
</body>
</html>

php

Guardar'usuario

¿

<?php
require('conexion.php');

$usuario=$_POST['usuario'];
$password=$_POST['password'];
$email=$_POST['email'];
$img=$_POST['img'];
$query="INSERT INTO usuarios (usuario, contrasenia, email,img) VALUES ('$usuario','$password','$email','$img')";
$resultado=$mysqli->query($query);
?>

<html>
<head>
<title>Guardar usuario</title>
</head>
<body>
<center>
<?php if($resultado>0){ ?>
<h1>Usuario Guardado</h1>
<?php }else{?>
<h1>Error al Guardar Usuario</h1>
<?php }?>
<p></p>
<a href="index.php">Regresar</a>
</center>
</body>
</html>

1 respuesta

Respuesta
1

En el fichero guarda_usuario.php la línea del query

$query="INSERT INTO usuarios (usuario, contrasenia, email,img) VALUES ($usuario,$password,$email,$img)"; //elimina las comillas simples
$resultado=$mysqli_query($conexion,$query);

$Conexion es la variable que le asignas al mysqli_connect dentro de conexión.php La tuya no se como es ya que no lo has escrito puede ser $con, $conn.

No veo el código que guarda la imagen en la carpeta. Si lo necesitas te lo enviare.

Hay que añadir a la forma enctype="multipart/form-data".

Gracias, no se cuales comillas si me lo puede indicar o modificar el código adjunto, el archivo de subir la imagen no la tengo si me lo da, de paso le digo que me di cuenta que necesito que suba DOS imágenes y que las guarde en una carpeta y la url en la DB, me podría ayudar, códigos siguientes,

<html>
    <head>
        <title>Usuarios</title>
    </head>
    <body>
        <center><h1>Nuevo Usuario</h1></center>
        <form name="nuevo_usuario" method="POST" enctype="multipart/form-data" action="guarda_usuario.php"  >
            <table width="50%">
                <tr>
                    <td width="20"><b>Usuario</b></td>
                    <td width="30"><input type="text" name="usuario" size="25" /></td>
                </tr>
                <tr>
                    <td><b>Password</b></td>
                    <td><input type="password" name="password" size="25" /></td>
                </tr>
                <tr>
                    <td><b>Email</b></td>
                    <td><input type="text" name="email" size="25" /></td>
                </tr>
                <tr>
                  <td><b>Imagen</b></td>
             <!--<td><input type="file" name="img" id="img" size="25" /></td>-->
                   <td><input type="file" name="img" size="25"  id="img" /></td>
              </tr>
                <tr>
                  <td><b>Imagen</b></td>
                  <!--<td><input type="file" name="img" id="img" size="25" /></td>-->
                  <td><input type="file" name="img2" size="25"  id="img2" /></td>
              </tr>
                <tr>
                    <td colspan="2"><center><input type="submit" name="eviar" value="Registrar" /></center></td>
                </tr>
            </table>
        </form>
    </body>
</html> 

guardar.php

¿

<?php 
    require('conexion.php');
    $usuario=$_POST['usuario'];
    $password=$_POST['password'];
    $email=$_POST['email'];
    $img=$_POST['img'];
    $img2=$_POST['img2'];
    $query="INSERT INTO usuarios (usuario, contrasenia, email,img) VALUES ('$usuario','$password','$email','$img','$img2')";
    $resultado=$mysqli->query($query);
?>
<html>
    <head>
        <title>Guardar usuario</title>
    </head>
    <body>
        <center> 
            <?php if($resultado>0){ ?>
                <h1>Usuario Guardado</h1>
                <?php }else{ ?>
                <h1>Error al Guardar Usuario</h1> 
            <?php    } ?> 
            <p></p>
            <a href="index.php">Regresar</a>
        </center>
    </body>
    </html> 

Conexión

¿

<?php
$mysqli=new mysqli("localhost","root","","datatable"); //servidor, usuario de base de datos, contraseña del usuario, nombre de base de datos
if(mysqli_connect_errno()){
echo 'Conexion Fallida : ', mysqli_connect_error();
exit();
}
?>

guarda_usuario.php

<?php
require('conexion.php');
$usuario=$_POST['usuario'];
$password=$_POST['password'];
$email=$_POST['email'];
$img=$_POST['img'];
$img2=$_POST['img2'];
/* Esto en caso que las 2 imágenes son diferentes.
Si has de guardar la misma imagen en dos tamaños se procesa 2 veces especificando tamaño*/

$uploadDir = 'uploadedimg/';      //tu directorio para imagenes

$fileName = $_FILES['img']['name'];
$tmpName = $_FILES['img']['tmp_name']);

$url = $uploadDir . $fileName;
$result = move_uploaded_file($tmpName, $url);
$fileName2 = $_FILES['img2']['name'];
$tmpName2 = $_FILES['img2']['tmp_name']);

$url2 = $uploadDir . $fileName2;
$result = move_uploaded_file($tmpName2, $url2);
$query="INSERT INTO usuarios (usuario, contrasenia, email,img) VALUES ($usuario,$password,$email,$img,$img2)"; //quitamos las comillas simples de las variables '$usuario' -> $usuario
$resultado=$mysqli->query($query);
?>
<html>
<head>
<title>Guardar usuario</title>
</head>
<body>
<center>
<?php if($resultado>0){ ?>
<h1>Usuario Guardado</h1>
<?php }else{?>
<h1>Error al Guardar Usuario</h1>
<?php }?>
<p></p>
<a href="index.php">Regresar</a>
</center>
</body>
</html>

Perdón pero ya arregle el código y no me guarda nada, se lo adjunto aver, me tira una error en guarda_usuario.ph en la línea 6 y la 7, no se que sera ayuda gracias.

<html>
    <head>
        <title>Usuarios</title>
    </head>
    <body>
        <center><h1>Nuevo Usuario</h1></center>
        <form name="nuevo_usuario" method="POST" enctype="multipart/form-data" action="guarda_usuario.php"  >
            <table width="50%">
                <tr>
                    <td width="20"><b>Usuario</b></td>
                    <td width="30"><input type="text" name="usuario" size="25" /></td>
                </tr>
                <tr>
                    <td><b>Password</b></td>
                    <td><input type="password" name="password" size="25" /></td>
                </tr>
                <tr>
                    <td><b>Email</b></td>
                    <td><input type="text" name="email" size="25" /></td>
                </tr>
                <tr>
                  <td><b>Imagen</b></td>
             <!--<td><input type="file" name="img" id="img" size="25" /></td>-->
                   <td><input type="file" name="img" size="25"  id="img" /></td>
              </tr>
                <tr>
                  <td><b>Imagen2</b></td>
             <!--<td><input type="file" name="img" id="img" size="25" /></td>-->
                   <td><input type="file" name="img2" size="25"  id="img2" /></td>
              </tr>
                <tr>
                    <td colspan="2"><center><input type="submit" name="eviar" value="Registrar" /></center></td>
                </tr>
            </table>
        </form>
    </body>
¿</html> 
<?php
require('conexion.php');
$usuario=$_POST['usuario'];
$password=$_POST['password'];
$email=$_POST['email'];
$img=$_POST['img'];
$img2=$_POST['img2'];
/* Esto en caso que las 2 imágenes son diferentes.
Si has de guardar la misma imagen en dos tamaños se procesa 2 veces especificando tamaño*/
$uploadDir = 'imagenes/';      //tu directorio para imagenes
$fileName = $_FILES['img']['name'];
$tmpName = $_FILES['img']['tmp_name'];
$url = $uploadDir . $fileName;
$result = move_uploaded_file($tmpName, $url);
$fileName2 = $_FILES['img2']['name'];
$tmpName2 = $_FILES['img2']['tmp_name'];
$url2 = $uploadDir . $fileName2;
$result = move_uploaded_file($tmpName2, $url2);
$query="INSERT INTO usuarios (usuario, password, email,img,img2) VALUES ($usuario,$password,$email,$img,$img2)"; //quitamos las comillas simples de las variables '$usuario' -> $usuario
$resultado=$mysqli->query($query);
?>
<html>
<head>
<title>Guardar usuario</title>
</head>
<body>
<center>
<?php if($resultado>0){ ?>
<h1>Usuario Guardado</h1>
<?php }else{?>
<h1>Error al Guardar Usuario</h1>
<?php }?>
<p></p>
<a href="nuevo_usuario.php">Regresar</a>
</center>
</body>
</html>
¿
<?php
require('conexion.php');
$usuario=$_POST['usuario'];
$password=$_POST['password'];
$email=$_POST['email'];
$img=$_POST['img'];
$img2=$_POST['img2'];
/* Esto en caso que las 2 imágenes son diferentes.
Si has de guardar la misma imagen en dos tamaños se procesa 2 veces especificando tamaño*/
$uploadDir = 'imagenes/';      //tu directorio para imagenes
$fileName = $_FILES['img']['name'];
$tmpName = $_FILES['img']['tmp_name'];
$url = $uploadDir . $fileName;
$result = move_uploaded_file($tmpName, $url);
$fileName2 = $_FILES['img2']['name'];
$tmpName2 = $_FILES['img2']['tmp_name'];
$url2 = $uploadDir . $fileName2;
$result = move_uploaded_file($tmpName2, $url2);
$query="INSERT INTO usuarios (usuario, password, email,img,img2) VALUES ('".$usuario."','".$password."','".$email."','".$img."','".$img2."')"; 
$resultado=$mysqli->query($query);
?>
<html>
<head>
<title>Guardar usuario</title>
</head>
<body>
<center>
<?php if($resultado>0){ ?>
<h1>Usuario Guardado</h1>
<?php }else{?>
<h1>Error al Guardar Usuario</h1>
<?php }?>
<p></p>
<a href="nuevo_usuario.php">Regresar</a>
</center>
</body>
</html>

Te sube la imagen en el directorio "imagenes/" ?
puedes poner un "echo" despues de cada línea para averiguar donde está el error.
por ejemplo :

$usuario=$_POST['usuario'];

echo $usuario;

Si te muestra correctamente lo que has introducido como usuario, mueves el "echo" una línea hasta ver donde falla.Te he corregido VALUES ('".$usuario."','".$password."','".$email."','".$img."','".$img2."')

Las imágenes las sube bien, los textos, usuario, password, email bien, los campos que dan error y no los sube son img y img2, ya no se que es si le pongo un ancho en img2 ma da más errores en la línea 22, en esta $tmpName2 = $_FILES['img2']['tmp_name'];saludos si me puede logra que es.

Siento el retraso.

A ver si te sube la imagen significa que el código es correcto. Si te da error en los nombres de imágenes revisa que nombre tienen las imágenes.

Este es un código más simple, si la imagen contiene espacios o puntos de dará error.

Haz una prueba con una imagen simple. Por ejemplo "árbol.jpg". En caso que los nombres de las imágenes tienen caracteres como espacio, punto, letras como "ñ" habrá que incluir más condiciones en el código.

Ya cambie nombre de imagen, como me indica y nada, la ruta no la guarda, sera que hay que especificar al sobre ruta, gracias.

Ya encontré el error, est ees el código como me quedo y ya hace todo, muchísima gracias por ayudarme.

¿

<?php
require('conexion.php');
$usuario=$_POST['usuario'];
$password=$_POST['password'];
$email=$_POST['email'];

ELIMINE DE AQUÍ LAS VARIABLLES DE LOS CAMPOS FOTO Y FOTO2

/* Esto en caso que las 2 imágenes son diferentes.
Si has de guardar la misma imagen en dos tamaños se procesa 2 veces especificando tamaño*/


$uploadDir = 'imagenes/'; //tu directorio para imagenes

$fileName = $_FILES['foto']['name'];
$tmpName = $_FILES['foto']['tmp_name'];

$url = $uploadDir . $fileName;

$result = move_uploaded_file($tmpName, $url);
$fileName2 = $_FILES['foto2']['name'];
$tmpName2 = $_FILES['foto2']['tmp_name'];

$url2 = $uploadDir . $fileName2;
$result = move_uploaded_file($tmpName2, $url2);
$query="INSERT INTO usuarios (usuario, password, email, foto, foto2) VALUES
('".$usuario."','".$password."','".$email."','".$url."','".$url2."')";

AQUI AGREGUE LAS URL

$resultado=$mysqli->query($query);
?>
<html>
<head>
<title>Guardar usuario</title>
</head>
<body>

<center>
<?php if($resultado>0){ ?>
<h1>Usuario Guardado</h1>
<?php }else{?>
<h1>Error al Guardar Usuario</h1>
<?php }?>
<p></p>
<a href="nuevo_usuario.php">Regresar</a>
</center>
</body>
</html>

Genial!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas