Foros del Web » Programando para Internet » PHP »

duda d php

Estas en el tema de duda d php en el foro de PHP en Foros del Web. buenas, tenia una pregutna como puedo buscar el ultimo registro de una tabla, y crear el siguiente campo de esa tabla con el numero siguiente ...
  #1 (permalink)  
Antiguo 02/03/2004, 10:32
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
duda d php

buenas, tenia una pregutna como puedo buscar el ultimo registro de una tabla, y crear el siguiente campo de esa tabla con el numero siguiente del registro?? y añadirle a los demas campos un variable?

Es decir como un campo autonuemrico para buscar el ultimo registro y sumarle uno y poder escrbiir en esa linea para insertar datos, y como puedo insertar los valores?
  #2 (permalink)  
Antiguo 02/03/2004, 10:40
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 15 años, 5 meses
Puntos: 0
si tienes un campo autonumerico no es necesario que le sumes 1 y lo insertes despues...
el automaticamente se incrementa, asi que en el insert omite el ingreso del campo autonumerico...

Saludos...
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #3 (permalink)  
Antiguo 02/03/2004, 11:00
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
pero como puedo buscar el ultimo registro? para poder añadirle la informacion?
  #4 (permalink)  
Antiguo 02/03/2004, 11:02
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
es k tengo 2 tablas una seria la tabla pedidos y la otra factura en la de pedido tengo el id_pedido q por cada pedido tiene un usuario y fecha, pero en l d factura va el id_pedido y los productos q tiene ese usuario es decir, q un id_pedido de la tabla factura se puede utilizar varias veces.
  #5 (permalink)  
Antiguo 02/03/2004, 11:21
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
haber si entendi esta...
Tienes 2 tablas:
Pedidos(Id_pedido, usuario). Supongo que la clave es (Id_pedido).
Facturas(Id_factura,Id_pedido,producto).
Aki deberia ser (Id_factura,Id_pedido,producto)

de tal forma que tus datos se ordenan asi:

Pedidos
------------------
1 | User_1
2 | User_1
3 | User_2

Facturas
----------------
1 | 1 | zapallo
1 | 1 | zanahoria
1 | 1 | cebolla
1 | 2 | ciruela ----> se puede dar esta situacion???


Esto esta, a mi parecer, un poco raro, deberias examinar el modelo de tu BD antes de construir las tablas, de repente por ahi tienes algunas relaciones n:n que deberias tratar de solucionar

saludos
  #6 (permalink)  
Antiguo 02/03/2004, 11:26
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
tengo 2 tablas:

pedido (id_pedido, usuario)
factura (id_pedido,producto,cantidad)

y los datos serian:

pedido
--------
1 | antonio
2 | jose

factura
--------
1 | mesa | 2
1 | coche | 1
1 | armario | 4
1 | lapiz | 2
2 | mesa | 3
2 | lapiz | 1
2 | revista | 15
  #7 (permalink)  
Antiguo 02/03/2004, 11:50
 
Fecha de Ingreso: octubre-2003
Ubicación: Concepción
Mensajes: 84
Antigüedad: 14 años, 2 meses
Puntos: 0
Supongamos que:

pedido
--------
1 | antonio
2 | jose <---- ultimo registro


factura
--------
1 | mesa | 2
1 | coche | 1
1 | armario | 4
1 | lapiz | 2
2 | mesa | 3
2 | lapiz | 1
2 | revista | 15 <--- ultimo registro

Para empezar si en la tabla factura la clave es id_pedido estas cometiendo un error al modelar la BD porque las claves primarias NO PUEDEN REPETIRSE. Si en cambio utilizas como calve primaria la combinacion de id_pedido y cantidad caes EN EL MISMO ERROR. Y al utilizar los tres campos como clave TE PUEDE SUCEDER LO MISMO.

Revisa el modelo de tu BD y corrígelo, parece que hay algunas cosas que no están bien.

saludos
  #8 (permalink)  
Antiguo 02/03/2004, 11:58
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
si trabajas en mysql o sql pega el code de la base de datos... asi lo podremos corregir... un saludo!
__________________
3w.valenciadjs.com
3w.laislatv.com
  #9 (permalink)  
Antiguo 02/03/2004, 12:06
 
Fecha de Ingreso: diciembre-2003
Mensajes: 54
Antigüedad: 14 años
Puntos: 0
Hola, no entendi bien lo que necesitas, pero lo que me imagino es que quieres el último id_pedido de la tabla factura para sumarle 1 y con eso hacer la siguiente factura. Si es eso, estas pensando mal el algoritmo, lo que en realidad tienes que hacer es, luego de crear el pedido en la tabla pedido obtener el id que genero, eso se hace con mysql_insert_id(), y con eso en una variable puedes agregar los productos con ese id_pedido.

Por las dudas, si simplemente lo que querias era el último registro puedes hacer una consulta a la bdd de esta forma:
Código PHP:
"SELECT * FROM tabla ORDER BY id_pedido DESC LIMIT 1" 
esto ordena los registros por la (supongo yo) clave primaria id_pedido de mayor a menor (el ultimo registro al principio) y devuelve el primer registro (el último).

Pero fijate, porque si lo puedes hacer con mysql_insert_id, el script va a consumir menos recursos y va a estar simplemente mejor programado.

Saludos
  #10 (permalink)  
Antiguo 02/03/2004, 14:33
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
me explique mal, estoy haciendo un carrito d la compra,lo tengo echo por sesiones y cuando compra los productos el usuario quiero q se introduzca en la base de datos priemro en la tabla d pedidos: el id_pedido, el usuario, el email la fecha y el total.
Pero claro en la tabla factura kiero q se vea lo k se ha comprado en ese pedido los productos exactos con su cantidad y el total de la compra,la tabla factura seria:id_pedido,producto,precio,cantidad y total.voy a poenr un ejemplo

Pepito compra en la misma sesion 5 lapices,3 gomas, 1 libretas y 1 mochila.Cuando pulse comprar kiero q valla a la base de datos a la tabla pedidos y buske el ultimo registro, y k me agregue en el siguiente:

Pedido
--------
7 | pepito | [email protected]| 18/18/18 | 300

seguidamente en la base de datos en al tabla factura se agregue:

factura
---------
7 | lapiz | 20 | 5 | 100
7 | goma| 50 | 3 | 150
7 | libreta | 100 | 1 | 100
7 | mochila |150 | 1 |150

espero haberme explicado ahora.
  #11 (permalink)  
Antiguo 02/03/2004, 14:35
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
perdon el total de pedido es 500

Pedido
--------
7 | pepito | [email protected]| 18/18/18 | 500

q seria la suma d todo lo comprado en ese pedido, es decir el 7
  #12 (permalink)  
Antiguo 02/03/2004, 14:42
 
Fecha de Ingreso: diciembre-2003
Mensajes: 54
Antigüedad: 14 años
Puntos: 0
Ok, entonces cuando pulsa comprar creas el pedido, no hace falta saber el cual fue el último porque el sentido de que sea autonumerico es que el contador lo lleve internamente. Simplemente haces un insert con el nombre de usuario, el email y el total.
Luego de que hiciste eso utilizas la función mysql_insert_id() y sacas cual es el id del pedido que recien insertaste y con eso completas la tabla factura, utilizando ese id y los datos de los productos.

Saludos

Última edición por Ktion; 02/03/2004 a las 14:44
  #13 (permalink)  
Antiguo 02/03/2004, 15:19
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
como se utiliza la funcion mysql_insert id() para este caso?:S
  #14 (permalink)  
Antiguo 02/03/2004, 16:45
 
Fecha de Ingreso: diciembre-2003
Mensajes: 54
Antigüedad: 14 años
Puntos: 0
Código PHP:
//Insertas el pedido
$query="INSERT INTO pedidos (usuario,email,fecha,total) VALUES($usuario,$email,$fecha,$total)";
$r_query=mysql_query($query);
// Este es el id que se usa cuando se insertan productos en la factura
$id=mysql_insert_id();

// Despues insertas cada producto con el id del pedido
// Asumo que $productos es una matrix que contiene todos los productos comprados y la cantidad de cada uno
foreach($productos as $producto)
{
// Aca me parece innesarios todos estos campos, seria suficiente con una tabla con el nombre y el precio de cada producto y pondria solo el id y la cantidad. 
//El subtotal se saca de lo anterior asi que no es necesario ponerlo en la bdd, pero lo hago como vos lo pusiste.

$query="INSERT INTO factura (id_pedido, producto,precio,cantidad, subtotal) VALUES ($id,$producto['nombre'], $producto['precio'],$producto['cantidad'],$producto['precio']*$producto['cantidad'])";

$r_query=mysql_query($query);

Bueno, obviamente no lo probe este codigo pero para que entiendas la idea creo que es suficiente

Saludos
  #15 (permalink)  
Antiguo 03/03/2004, 02:55
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
como le podria decir q cogiera el mismo valor del id_pedido d la tabla pedidos para utilizarla en la tabla factura?

query="INSERT INTO factura (id_pedido, producto,precio,cantidad, subtotal) VALUES ($id,$producto['nombre'], $producto['precio'],$producto['cantidad'],$producto['precio']*$producto['cantidad'])";
  #16 (permalink)  
Antiguo 03/03/2004, 07:49
 
Fecha de Ingreso: diciembre-2003
Mensajes: 54
Antigüedad: 14 años
Puntos: 0
Cita:
como le podria decir q cogiera el mismo valor del id_pedido d la tabla pedidos para utilizarla en la tabla factura?
Código PHP:
//Insertas el pedido
...
// Este es el id que se usa cuando se insertan productos en la factura
$id=mysql_insert_id();

// Despues insertas cada producto con el id del pedido
... 
Hay que leer

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 02:48.