Subiendo imágenes mediante php

Estudie programador php como haces para con un formulario solo ingresar datos en un tabla y a su vez subir imágenes y darle formato al nombre de la imagen por ejemplo que se llame idmaerial_fechahora.jpg otro ejemplo remeraverde_10092014.jpg y en tabla en los campos de imágenes meter el nombre generado de la imagen subida.

1 Respuesta

Respuesta
1

Aquí le pongo formulario ejemplo subiendo una foto.

<form action="artista.php" method="post">
  <table width="100%" border="1">
    <tr>
      <td width="32%"><b>Nombre:</b> </td>
      <td width="68%">
      <input name="nom" type="text" size="80" />
      </td>
    </tr>
    <tr>
      <td width="32%"><b>conocido como...:</b></td>
      <td width="68%">
      <input name="apo" type="text" size="80" />
      </td>
    </tr>
    <tr>
      <td colspan="2"><b>Biograf&iacute;a:</b></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><textarea name="bio" cols="78" rows="5"></textarea></td>
    </tr>
    <tr>
       <td>Subir Foto</td>
       <td colspan="3"><input style="background-color:#CCC" size="123" type="file" name="foto" /></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" name="env" value="INSERTAR" /></td>
    </tr>
  </table>
</form>

<?php

 if (isset ($_POST["env"]))
 {
   $com= $db->comprobar_ins ("arti", "nom", $_POST['nom']);
   if ($com===1)
    {
     echo "<div class=rotulo><br><br><br>Este nombre está ya registrado</div><br><br><br>";
    }
   else
    {
     $cadenatexto = $_POST["foto"];
     echo "Escribió en el campo de texto: " . $cadenatexto . "<br><br>";
     $path="./img/";
     //datos del arhivo
     $nombre_archivo = $_FILES['foto']['name'];
     $tipo_archivo = $_FILES['foto']['type'];
     $tamano_archivo = $_FILES['foto']['size'];
     $temp = $_FILES['foto']['tmp_name'];
     if (!(($tamano_archivo < 1500000))) {
     echo "se permiten archivos de 1'5 Mbs máximo.";
     }else{
      if (move_uploaded_file($temp, $path.$nombre_archivo)){
         echo "El archivo ha sido cargado correctamente.";   
      }
        $insert= "INSERT INTO arti (id_arti, nom, apo, bio, foto) VALUE    
        (NULL, '$_POST[nom]', '$_POST[apo]', '$_POST[bio]', '$nombre_archivo')";
       $db->consulta($insert); 
       echo "<meta http-equiv=\"refresh\" content=\"1\">";
      }
    }
 }

El directorio donde vas a subir la foto, tiene que tener permiso de escritura.

Hola gracias por tu respuesta me demore en contestar porque estuve trabajando mucho en otras cosas relacionada al proyecto en cuanto a tu respuesta la he modificado algo para que se adapte a mis conocimientos sobre como trabajar con la base de datos pero no algo escencial como para que no ande. Abajo te dejo el código de las dos paginas y te adjuhto una imagen con el error que meda. En pricipio logro ingresar algunos todos las datos a la base de datos salvo justamente lo que presiso yo que es el tema de la foto, ese dato no lo  inserta en la base de datos y mucho menos sube la foto al servidor. Por lo que veo en el codigo para subir la foto, al formulario le faltaria un atributo que es el enctype="multipart/form-data">.

Bueno aca va el codigo de la página del formulario

Archivo formulario.php

<html>

<body>

    <form action="artista.php" method="post">
        <table width="100%" border="1">
           <tr>
             <td width="32%"><b>Nombre:</b> </td>
              <td width="68%">
                    <input name="nom" type="text" size="80" />
               </td>
            </tr>
            <tr>
                 <td width="32%"><b>conocido como...:</b></td>
                 <td width="68%">
                      <input name="apo" type="text" size="80" />
                  </td>
             </tr>
             <tr>
               <td colspan="2"><b>Biograf&iacute;a:</b></td>
            </tr>
            <tr>
              <td colspan="2" align="center"><textarea name="bio" cols="78" rows="5">   </textarea>
              </td>
           </tr>
            <tr>
              <td>Subir Foto</td>
               <td colspan="3"><input style="background-color:#CCC" size="123" type="file" name="foto" />
                </td>
             </tr>
             <tr>
              <td colspan="2" align="center"><input type="submit" name="env" value="INSERTAR" /></td>
              </tr>
      </table>
</form>

</body>
</html>

Y aca esta el archivo encagado de subi9r la foto e insertar los datos en la base de datos

artista.php

<?php
// Incluye el archivo fundamental del componente ADODB
include('adodb5/adodb.inc.php');
include "inc/php/utiles.inc.php";

if (isset ($_POST["env"]))
{
$DB = NewADOConnection(DB_SERVER_TYPE); // Indica que se creara una conexion con este tipo de servidor
$DB->Connect(DB_SERVER, DB_USER , DB_PASS , DB_NAME);
$DB->debug = DB_DEBUG ;


$cadenatexto = $_POST["foto"];
echo "Escribió en el campo de texto: " . $cadenatexto . "<br><br>";
$path="/img/";
//datos del arhivo
$nombre_archivo = $_FILES['foto']['name'];
$tipo_archivo = $_FILES['foto']['type'];
$tamano_archivo = $_FILES['foto']['size'];
$temp = $_FILES['foto']['tmp_name'];
if (!(($tamano_archivo < 1500000)))
{
echo "se permiten archivos de 1'5 Mbs máximo.";
}
else
{
if (move_uploaded_file($temp, $path.$nombre_archivo))
{
echo "El archivo ha sido cargado correctamente.";
}
$insert= "INSERT INTO arti (id_arti, nom, apo, bio, foto) VALUE
(NULL, '$_POST[nom]', '$_POST[apo]', '$_POST[bio]', '$nombre_archivo')";
$rs = $DB->Execute($insert);

//$DB->consulta($insert);
echo "archivo subido";
}
}

?>

Imagen del error

Espero tus comentarios.

Atte.

Vamos ha hacer un pequeño cambio en la cabecera del formulario y dime si funciona o no porque no lo he probado.

Ahora mismo tenemos:

<form action="artista.php" method="post">

Añádele esto:

   enctype="multipart/form-data"

Por lo que se tiene quedar la cabecera así:

<form action="artista.php" method="post" enctype="multipart/form-data">

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas