Foros del Web » Programando para Internet » PHP »

Como saco el ultimo valor ingresado en la db?

Estas en el tema de Como saco el ultimo valor ingresado en la db? en el foro de PHP en Foros del Web. Explico como deberia funcionar mi album de fotos: * hay un usuario registrado en la base. El administrador tiene entrar al login para crear 1 ...
  #1 (permalink)  
Antiguo 30/01/2009, 08:42
 
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Pregunta Como saco el ultimo valor ingresado en la db?

Explico como deberia funcionar mi album de fotos:

* hay un usuario registrado en la base. El administrador tiene entrar al login para crear 1 o mas albumes...

*Cuando creo el album 1 guardo el registro del Album, el usuario y el nombre del (album que es la ruta) en la primera linea de la base de datos. Luego guardo las imagenes en la carpeta creada. El error esta en que al crear un 2º album las imagenes las sigue guardando en la carpeta del primer registro en la base y no en el segundo.

Este es el php, que debo cambiar exactamente?:

elseif ($_POST[EnviarPaso2]) {

$sql = "select max(idAlbum) from album and idUsuario = $_SESSION[usuarioRegistrado] and idAlbum = ACA DEBE TOMAR EL ULTIMO VALOR INGRESADO EN LA BASE";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);

$directorio = "./galleries/$row[ruta]";

$origen = $_FILES['imagen']['tmp_name'];
$destino = "$directorio/".$_FILES['imagen']['name'];

copy($origen, $destino);
$_GET[paso] = 2;
}



Base de Datos:


DROP TABLE IF EXISTS `album`;
CREATE TABLE `album` (
`idAlbum` int(11) NOT NULL default '0',
`idUsuario` int(11) NOT NULL default '0',
`ruta` varchar(255) default NULL,
PRIMARY KEY (`idAlbum`,`idUsuario`),
UNIQUE KEY `idAlbum` (`idAlbum`)
);



NECESITO AYUDA!! ESTOY MEDIO EN EL HORNO!! Gracias a los solidarios!
  #2 (permalink)  
Antiguo 30/01/2009, 09:36
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Esto deberia ser asi para concatenar las cadenas de texto
$directorio = "./galleries/".$row[ruta];

$sql = "select max(idAlbum) from album and idUsuario = $_SESSION[usuarioRegistrado] and idAlbum = ACA DEBE TOMAR EL ULTIMO VALOR INGRESADO EN LA BASE";

no hiria lo que hiria seria WHERE

Última edición por GatorV; 30/01/2009 a las 10:05
  #3 (permalink)  
Antiguo 30/01/2009, 09:45
 
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como saco el ultimo valor ingresado en la db?

Cita:
Iniciado por rodno Ver Mensaje
$sql = "select max(idAlbum) from album and idUsuario = $_SESSION[usuarioRegistrado] and idAlbum = ACA DEBE TOMAR EL ULTIMO VALOR INGRESADO EN LA BASE";

no hiria lo que hiria seria WHERE
No la consulta es asi: $sql = "select * from album where idUsuario = $_SESSION[usuarioRegistrado] and idAlbum = "; La que publique estaba mal...

Probe como vos decis pero nada... guarda la carpeta creada y la imagen por separado, y no dentro... que puedo hacer?
  #4 (permalink)  
Antiguo 30/01/2009, 10:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como saco el ultimo valor ingresado en la db?

Hola canalcom,

Usa mysql_insert_id() para obtener el ultimo ID autogenerado de tu fila.

Saludos
  #5 (permalink)  
Antiguo 30/01/2009, 10:16
 
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como saco el ultimo valor ingresado en la db?

Cita:
Iniciado por GatorV Ver Mensaje
Hola canalcom,

Usa mysql_insert_id() para obtener el ultimo ID autogenerado de tu fila.

Saludos


Como seria eso?
  #6 (permalink)  
Antiguo 30/01/2009, 10:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como saco el ultimo valor ingresado en la db?

Pues solo llamas a la función después de realizar tu insert:
Código php:
Ver original
  1. $query = "INSERT INTO ..";
  2. $res = mysql_query($query) or die( mysql_error() );
  3.  
  4. echo "El ultimo ID autogenerado es: $id";

Saludos
  #7 (permalink)  
Antiguo 30/01/2009, 10:34
 
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como saco el ultimo valor ingresado en la db?

Cita:
Iniciado por GatorV Ver Mensaje
Pues solo llamas a la función después de realizar tu insert:
Código php:
Ver original
  1. $query = "INSERT INTO ..";
  2. $res = mysql_query($query) or die( mysql_error() );
  3.  
  4. echo "El ultimo ID autogenerado es: $id";

Saludos
Como quedaria con la programacion que puse en el Tema? No se como armarlo
  #8 (permalink)  
Antiguo 30/01/2009, 10:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como saco el ultimo valor ingresado en la db?

Pues necesitas mandar llamar a mysql_insert_id() después de hacer la inserción de tu album, como son dos paginas diferentes, necesitas guardarlo en una variable de sesión para recuperarlo posteriormente en la otra pagina y poder subir el archivo.

Saludos
  #9 (permalink)  
Antiguo 30/01/2009, 10:52
 
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como saco el ultimo valor ingresado en la db?

Es mas facil agregarle a la consulta el ORDER by Desc 1 o la funcion max(), A esta expresion:

$sql = "select * from album where idUsuario = $_SESSION[usuarioRegistrado] and idAlbum = ACA VA LA FUNCION";

Solo le tengo que agregar la variable que llama a el ultimo ingreso o al valor maximo de la DB. Por ejemplo, si al final pongo un 2, las imagenes las carga en el 2º album... asi:

$sql = "select * from album where idUsuario = $_SESSION[usuarioRegistrado] and idAlbum = 2"; Pero necesito algo que detecte el ultimo valor ingresado automaticamente... Gracias igual por tu aporte...
  #10 (permalink)  
Antiguo 30/01/2009, 11:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como saco el ultimo valor ingresado en la db?

Por eso te comento necesitas llamar a mysql_insert_id() y guardarlo, si usas max y ORDER BY aparentemente es el mismo resultado pero si tienes 2 inserciones simultaneas tendrías un problema de concurrencia, por eso es mejor usar directamente mysql_insert_id() así garantizas que estas usando el ID que se autogenero.

Saludos.
  #11 (permalink)  
Antiguo 30/01/2009, 11:11
 
Fecha de Ingreso: enero-2009
Mensajes: 15
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Como saco el ultimo valor ingresado en la db?

Cita:
Iniciado por GatorV Ver Mensaje
Por eso te comento necesitas llamar a mysql_insert_id() y guardarlo, si usas max y ORDER BY aparentemente es el mismo resultado pero si tienes 2 inserciones simultaneas tendrías un problema de concurrencia, por eso es mejor usar directamente mysql_insert_id() así garantizas que estas usando el ID que se autogenero.

Saludos.
Ok, pero no se como construir la funcion mysql_insert_id() con la programacion que ya tengo... tenes idea de como armar el PHP? Soy nuevo en esto y todavia no me doy mucha maña... gracias!
  #12 (permalink)  
Antiguo 30/01/2009, 11:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como saco el ultimo valor ingresado en la db?

Ya te di los pasos básicos, aunque seas nuevo en PHP debes de tener una nocion general de programación.

En la pagina donde creas el Album después de llamar a mysql_query para insertar el albumn, llamas a mysql_insert_id() y obtienes el ID autogenerado, posteriormente lo guardas en una variable de sesión.

En tu segunda pagina rescatas el valor de la sesión y usas el ID para entonces mover las fotos al albumn correcto.

Saludos
  #13 (permalink)  
Antiguo 04/02/2009, 07:26
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
De acuerdo Respuesta: Como saco el ultimo valor ingresado en la db?

Otra cosa que puedes hacer es hacer la siguiente consulta

"Select id From tabla ORDER by id DESC LIMIT 1"

y despues obtienes el valor de la consulta realizada

Rodno
  #14 (permalink)  
Antiguo 04/02/2009, 09:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como saco el ultimo valor ingresado en la db?

Hola rodno,

Lamentablemente esa forma no sirve del todo ya que si otro usuario crea una galeria terminarias obteniendo el id de la nueva galeria y no de la que tu creaste.

Saludos
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 14:27.