Foros del Web » Programando para Internet » PHP »

Problema para averiguar el valor del indice autoincremental

Estas en el tema de Problema para averiguar el valor del indice autoincremental en el foro de PHP en Foros del Web. Hola, antes de nada cabe señalar que es mi primer proyecto en php y ando algo perdido. Ruego paciencia y agradezco mucho cualquier ayuda. Tengo ...
  #1 (permalink)  
Antiguo 28/02/2014, 01:39
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Problema para averiguar el valor del indice autoincremental

Hola, antes de nada cabe señalar que es mi primer proyecto en php y ando algo perdido. Ruego paciencia y agradezco mucho cualquier ayuda.

Tengo una tabla en mysql en la que el primer campo de cada registro es un id autoincremental.

Al mismo tiempo, en php, paso los datos de un formulario a una página de procesado. En este formulario no he incluido el valor del id, sólo el resto de campos.

Uno de los campos es una fotografía. Con copy la paso a una carpeta específica donde van almacenadas todas las fotografías.

El problema viene cuando quiero renombrarla. Mi idea es que tome el nombre del id, de forma que cada foto sea fácilmente relacionable con su registro.

La cuestión es que no sé cómo averiguar el id que se ha generado de forma automática para poder asignárselo al nombre de la fotografía.

Una solución sería asignar el id en la página de procesado pero me gustaría aprender a hacerlo dejando que sea mysql quien gestione el id.

Espero haberme explicado bien.

Muchas gracias.
  #2 (permalink)  
Antiguo 28/02/2014, 02:30
 
Fecha de Ingreso: octubre-2012
Mensajes: 12
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Problema para averiguar el valor del indice autoincremental

Hola
Para darte una respuesta correcta tendría que ver el código, pero por lo que entiendo cuando quieres hacer el cambio de nombre todavía no as echo un insert entonces todavía no le a asignado el id mysql.
Lo que puedes hacer es averiguar el ultimo id de la base de datos y sumarle 1, no te lo recomiendo porque haces otra consulta pero tu veras.
  #3 (permalink)  
Antiguo 28/02/2014, 02:41
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Problema para averiguar el valor del indice autoincremental

Si sumo 1 al último voy a tener problemas en cuanto surja la necesidad de borrar el último registro. El contador interno no lo tendrá en cuenta y seguirá a la suya dejando en blanco el hueco borrado, mientras que mi suma +1 se irá a ese hueco, supongo.

Adjunto el código:
Código:
<?php

// Establecer conexión
include("conexion.php");

// Recogida de datos
$n_nombre = $_POST['nombre'];
$n_descripcion = $_POST['descripcion'];
$n_precio = $_POST['precio'];
$n_imagen = $_FILES['imagen']['name']; //normal
$n_familia = $_POST['familia'];

// Copia imagen en carpeta
$ruta_origen = $_FILES['imagen']['tmp_name'];
$ruta_destino = "imagenes/".$_FILES['imagen']['name']; //normal
COPY($ruta_origen,$ruta_destino);

// Sentencia para la inserción de datos en la tabla
$ssql = "INSERT INTO articulos (nombre,descripcion,precio,imagen,familia) VALUES ('$n_nombre','$n_descripcion','$n_precio','$n_imagen','$n_familia')";

// Ejecutamos la sentencia SQL
mysql_query($ssql,$descriptor);

// Redireccionamos
HEADER("LOCATION:articulos.php");

?>
Muchas gracias por echarme una mano.
  #4 (permalink)  
Antiguo 02/03/2014, 03:03
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Problema para averiguar el valor del indice autoincremental

Sigo investigando el tema y, de momento, he conseguido esto:
Código:
<?php

// Establecer conexión
include("conexion.php");

// Recogida de datos
$n_nombre = $_POST['nombre'];
$n_descripcion = $_POST['descripcion'];
$n_precio = $_POST['precio'];
$n_familia = $_POST['familia'];

// Sentencia para la inserción de datos en la tabla
$ssql = "INSERT INTO articulos (nombre,descripcion,precio,familia) VALUES ('$n_nombre','$n_descripcion','$n_precio','$n_familia')";

// Ejecutamos la sentencia SQL
mysql_query($ssql,$descriptor);

// Obtenemos el id del último registro añadido
$ultimo_codigo = mysql_insert_id($descriptor);

// Damos nuevo nombre a la imagen añadiendo la extensión
$n_imagen = $ultimo_codigo.".jpg";

// Copiamos la imagen en la carpeta correspondiente
$ruta_origen = $_FILES['imagen']['tmp_name'];
$ruta_destino = "imagenes/".$n_imagen;
COPY($ruta_origen,$ruta_destino);

// Sentencia para la inserción de la imagen en la tabla
$ssql = "UPDATE articulos SET imagen = '$n_imagen' WHERE codigo = '$ultimo_codigo'";

// Ejecutamos la sentencia SQL
mysql_query($ssql,$descriptor);

// Redireccionamos
HEADER("LOCATION:articulos.php");

?>
EL código es operativo al 100%.

Ahora, la imagen seleccionada por el usuario, se renombra automáticamente tomando el nombre del id de registro y, además, se copia automáticamente al directorio por defecto.
De esta forma está todo mucho más ordenado y es muy fácilmente identificable a qué registro corresponde cada imagen.

La nueva pregunta que me surge es esta: En el tiempo transcurrido entre el INSERT y el UPDATE, ¿podría haber conflicto si dos -o más- usuarios ejecutan este código simultáneamente?

Me surge esta duda en función de las distintas velocidades de equipos, conexión, etc.

Creo que podría darse el caso de que dos usuarios hicieran un alta en el mismo instante y la lectura del último id pudiera cruzarse entre ellos asignándose a cada uno la imagen del otro.

Agradezco toda ayuda.

Muchas gracias!

Etiquetas: averiguar, formulario, indice, mysql, registro, tabla, valor
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 13:49.