Problema con formulario PHP y upload de imagen

Bueno, estoy haciendo un formulario con un upload de imagen jpg. El problema es que intento hacer que ese jpg, en vez de subirse con el nombre que el usuario le ha puesto, quiero que se suba al server con el nombre de la ID de la consulta, ejemplo:
ID      Nombre      Apellido                     Imagen
1         Oscar          Jara            1_24/06/2010_11:30:05.jpg
En la DB, el nombre de la imagen esta compuesto por el ID, fecha y hora y la extension
Pero, en el server quiero que se guarde como 1.jpg ya que el ID de esa consulta fue 1. Y eso es lo que no logro hacer, acá esta parte de mi código php y espero me puedas ayudar.
<?php
if (isset($_POST['validar'])) {
$link = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('db', $link);
 $sql = "SELECT MAX(ID) FROM inscritos";
 $result = mysql_query($sql);
 $row = mysql_fetch_row($result);
 $max_id = $row[0]+1; //captura el ultimo ID y le agrega 1 para ser el ID actual
 $evento=$_POST['evento'];
 $nombres=$_POST['nombres'];
 $apellidos=$_POST['apellidos'];
 $empresa=$_POST['empresa'];
 $cargo=$_POST['cargo'];
 $direccion=$_POST['direccion'];
 $telefono=$_POST['telefono'];
 $datetime = date("d/m/Y_H:i:s");
 $upload_dir = '/home/netline/public_html/vouchers/';
 $upload_file = $upload_dir.$max_id.".jpg";
 $extension = $_FILES['voucher']['type'];
 $size = $_FILES['voucher']['size'];
 $voucher_namedb = $max_id."_".$datetime.".jpg";
 if ($evento.trim != "" &&
   $voucher.trim != "" &&
 $extension == "image/jpeg" &&
 $size < 204800 &&
 $nombres.trim != "" &&
 $apellidos.trim != "" &&
 $empresa.trim != "" &&
 $cargo.trim != "" &&
 $direccion.trim != "" &&
 $telefono.trim != "")
 {
 move_uploaded_file($_FILES['voucher']['tmp_name'], $upload_file);
     mysql_query("INSERT INTO inscritos (Evento,Voucher,Nombres,Apellidos,Empresa,Cargo,Direccion,Telefono) VALUES ('$evento','$voucher','$nombres','$apellidos','$empresa','$cargo','$direccion','$telefono')",$link);
     mysql_close($link);
El código php continua pero lo demás no tiene importancia. Por otro lado, el script ya lo he probado y funciona muy bien al usar en la variable upload file lo siguiente:
$upload_file = $upload_dir.$_FILES['voucher']['name'];
Ya que, lo que realiza es guardar el file con el nombre que el usuario le puso y a la DB como yo lo quiero, espero me puedan ayudar... Ya he intentado muchas formas y no lo logro, entre ellas use la función rename, entre otras como if_file_exists pero nada Y LO ÚNICO QUE QUIERO ES GUARDAR LA IMAGEN CON EL ID DE LA CONSULTA, SALUDOS!

1 Respuesta

Respuesta
1
Cuando haces el COPY del php, que hace la copia de la imagen en el servidor, debes indicarle el nombre que tendrá el fichero. Por defecto es el original, pero lo puedes cambiar.
Revisa el código del upload
Hola, lo que sucede es que yo no uso copy sino "move_uploaded_file" para mover el temportal a la carpeta y no estar haciendo copias, es por eso que no se como cambiarle el nombre con el ID, por otro lado, el código funciona bien cuando utilizo el nombre
Que el usuario ingresa así que no es problema del código sino de no saber como asignarle o mejor dicho, en que momento asignarle un nuevo nombre, si pudieras implementarlo a mi código te lo agradecería, saludos!
PD. el "move_uploaded_file($_FILES['voucher']['tmp_name'], $upload_file);" supuestamente cambia el nombre temporal a  "$upload_file = $upload_dir.$max_id.".jpg";" pero no lo hace sino que no procesa la informacion del form
Ejemplo:
<?php
  if(!empty($_FILES["magfile"]))
  {
    $uploaddir = $_SERVER['DOCUMENT_ROOT']."/dainsider/magazines/";
    $uploaddir.="magazine.pdf";
    //Copy the file to some permanent location
    if(move_uploaded_file($_FILES["magfile"]["tmp_name"], $uploaddir))
    {
      echo "Magazine Updated!";
    }
    else
    {
      echo "There was a problem when uploding the new file, please contact ".$admin_email." about this.";
      print_r($_FILES);
    }
  }
?>
Hola, gracias por tus aportes y ya lo logre, el problema ahora es que se me presenta un error "unexpected end of file" en la ultima linea y no se donde esté el problema.
Mira esta imagen:
http://img717.imageshack.us/img717/2692/erroryl.jpg
y este es el codigo:
<?php
if (isset($_POST['enviar']))
{
$link = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('dbname', $link);
$sql = "SELECT MAX(ID) FROM inscripciones";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$max_id = $row[0]+1;
$nombres=$_POST['nombres'];
$apellidos=$_POST['apellidos'];
$DNI_CarneExtranjeria=$_POST['DNI_CarneExtranjeria'];
$tipo_persona=$_POST['tipo_persona'];
$empresa=$_POST['empresa'];
$cargo=$_POST['cargo'];
$direccion=$_POST['direccion'];
$telefono_fijo=$_POST['telefono_fijo'];
$telefono_celular=$_POST['telefono_celular'];
$tipo_combrobante=$_POST['tipo_comprobante'];
$razon_social=$_POST['razon_social'];
$RUC=$_POST['RUC'];
$_FILES['voucher']['name'] = $max_id."_".$_FILES['voucher']['name'];
$upload_dir = '/home/netline/public_html/inscripciones/vouchers/';
$extension = $_FILES['voucher']['type'];
$size = $_FILES['voucher']['size'];
$upload_file = $upload_dir.($_FILES['voucher']['name']);
$voucher_nombre_db = $_FILES['voucher']['name'];
if($nombres.trim == '' && $apellidos.trim == '' && $DNI_CarneExtranjeria.trim == '' && ($tipo_persona == 'Dependiente' && ($empresa.trim == '' || $cargo.trim == '' || $direccion.trim == '')) &&($telefono_fijo == '' || $telefono_celular == '') && ($tipo_comprobante == 'Factura' && ($razon_social.trim == '' || $RUC.trim == '')) && $voucher_nombre_db.trim == '' && $extension != 'image/jpeg' && $size > 204801)
{
echo <<<ERROR
<html>
<head>
<title>NetLine Consulting</title>
  <META http-equiv="refresh" content="6; url=http://www.net-line-consulting.com/inscripciones/inscripcion.php">
</head>
<body>
<p>Debe completar todos los datos obligatorios y adjuntar una imagen con extensi�n .JPG y de 200KB de tamaño máximo.</p>
</body>
</html>
  ERROR;
  }
  else
  {
  move_uploaded_file($_FILES[voucher][tmp_name], "$upload_file");
  mysql_query("INSERT INTO inscripciones (Nombres,Apellidos,DNI_CarneExtranjeria,Tipo_Persona,Empresa,Cargo,Direccion,Telefono_Fijo,Telefono_Celular,Tipo_Comprobante,Razon_Social,RUC,Nombre_Voucher) VALUES ('$nombres','$apellidos','$DNI_CarneExtranjeria','$tipo_persona','$empresa','$cargo','$direccion','$telefono_fijo','$telefono_celular','$tipo_comprobante','$razon_social','$RUC','$voucher_nombre_db')",$link);
  mysql_close($link);
echo <<<EXITO
<html>
<head>
<title>NetLine Consulting</title>
<META http-equiv="refresh" content="6; url=http://www.net-line-consulting.com/inscripciones/inscripcion.php">
</head>
<body>
<p>Registro exitoso.</p>
</body>
</html>
EXITO;
  }
}
?>
</body>
</html>
EXITO;
  }
}
?>
Aquí tienes errores de sintaxis. Acuérdate de sacar fuera de <? ¿php?> Lo que sea HTML, o al menos si lo pones con echo, ponle comillas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas